Please enable Javascript to view the contents

Linux 文件共享服务 Samba 入门使用案列

 ·  🕒 2 分钟  ·  ✍️ 加文 · 👀... 阅读

Samba 用于搭建文件服务器实现文件的上传、下载、资源共享, 共享目录多用户访问权限设置; 工作端口 139/TCP、445/TCP

环境介绍

samba-4.10.4
centos7 min x64

服务端

# 安装并启动
yum -y install samba
systemctl start smb

# 禁用 selinux
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config

# 关闭防火墙
firewall-cmd --add-service samba --permanent
firewall-cmd --reload

# 创建共享目录、添加用户组、用户 public
groupadd samba && useradd -g samba -d /home/public -s /sbin/nologin public

# 设置用户 public 对应的 smb 密码 123
pdbedit -a -u public

# 添加公共共享模块
[public]
    comment = Public Directories
    valid users = @samba
    read only = Yes
    path = /home/public
    hosts allow = 192.168.

添加个人用户目录

useradd -d /home/kevin -s /sbin/nologin kevin # 添加系统用户
pdbedit -a -u kevin # 将系统用户 kevin 添加至 samba 账号信息库, 并设置密码

cat /etc/samba/smb.conf

[kevin]                                          
    comment = please do not modify it all will   
    path= /home/kevin                            
    writable = yes                               
    public = no

配置参数

[kevin]                     # 共享文件夹标识
    comment = this a desc   # 对该共享的描述
    path = /home/kevin      # 共享的路径
    writable = yes          # 该共享目录是否可写
    write list = gavin      # 该共享目录可写用户列表
    
    public = no             # 是否公开
    browseable = no         # 共享文件夹是否可浏览
    valid users = @samba     # 允许访问的用户组
    hosts allow = 192.168.         # 指定允许访问的客户端 IP 地址
    valid users = gavin,@samba,colin  # 运行访问该共享的用户或组
    invalid users = chris             # 禁止访问该共享的用户或组
    admin users = kevin, colin        # 该共享的管理者,具有完全访问权限

samba 账号管理命令 pdbedit

pdbedit -x -u kevin        # 删除
pdbedit -L          # 查看samba 账号列表

客户端

Linux 端


# 创建挂载点 并挂载
mkdir /data/{gavin,kevin}
mount -t cifs //192.168.31.33/kevin /data/kevin -o "username=kevin,password=123"

# 查看挂载情况
df -h

# 永久挂载
vim /etc/fstab
//192.168.31.33/gavin /data/gavin  cifs rw username=gavin,password=123    0       0

# 卸载挂载点
umount /data/gavin 

Win7 端

# 访问共享目录
\\192.168.31.33
\\192.168.31.33\gavin

# 共享目录 映射网络驱动器
右键共享目录 --> 映射网络驱动器 --> 完成,这样就将 samba 共享目录通过网络驱动器的方式保存到本地了

# 调试
net use           # 查看网络链接
net user * /del   # 清除所有网络链接

多用户权限控制

通过设置多个用户的家目录为共享目录 /data/samba, 针对每个用户在该共享目录下设置同名目录并授权、可实现各用户目录的访问控制

  1. 添加用户 samba
    useradd -s /sbin/nologin samba -g samba
    mkdir /data/samba -p && chown samba.samba -R /data/samba/

  2. 添加用户 user1 user2 user3
    useradd -d /data/samba -s /sbin/nologin user1
    useradd -d /data/samba -s /sbin/nologin user2
    useradd -d /data/samba -s /sbin/nologin user3

  3. 设置 samba 用户密码
    pdbedit -a -u user1
    pdbedit -a -u user2
    pdbedit -a -u user3

  4. 不同用户创建对应子目录及设置权限
    mkdir /data/samba/user1 && chown user1.user1 -R /data/samba/user1 && chmod -R 700 /data/samba/user1
    mkdir /data/samba/user2 && chown user2.user2 -R /data/samba/user2 && chmod -R 700 /data/samba/user2
    mkdir /data/samba/user3 && chown user3.user3 -R /data/samba/user3 && chmod -R 700 /data/samba/user3

  5. 授权user1 可读 /data/samba/user3, user2 可读写 /data/samba/user3
    setfacl -R -m u:user1:rx /data/samba/user3
    setfacl -R -m u:user2:rwx /data/samba/user3

  6. Samba 共享配置

[公司共享目录]
    comment = "公司共享目录下的账号权限"
    path= /data/samba
    public = no
    printable = no
    browseable = no
    valid users = user1,user2,user3,@samba
    write list = user1,user2,user3 

效果: 不同用户可读写跟自己同名的目录外, user1 可读目录 user3, user2 可读写目录 user3
browseable = no 该共享目录不可见, 但以 user1 或 user2 或 user3 登录后可见同名的共享目录(包含公司共享目录下的所有子目录)

补充
文件访问权限控制
setfacl -R -m u:user1:rx /data/samba/user3
setfacl -R -m u:user2:rwx /data/samba/user3
getfacl /data/samba/user3

参考

共享目录的多用户权限设置案列
https://www.cnblogs.com/kevingrace/p/5569993.html


加文
作者: 加文
运维工程师
版权声明:自由转载-非商用-非衍生-转载请注明出处!


目录