samba文件共享以及用法(访问控制) | 您所在的位置:网站首页 › 电脑开启smb共享怎么关闭 › samba文件共享以及用法(访问控制) |
转载于: https://blog.csdn.net/weixin_43275140/article/details/84577175 SambaSamba是在Linux和UNIX系统上实现SMB协议的一个免费软件,有服务端和客户端程序构成。随着Linux的普及,如何共享Linux下的文件成为用户关心的问题。其实,几乎所有的Linux发行套件都提供了一个很好的工具Samba——通过它可以轻松实现文件共享。 一、SMB文件共享通用lnternet文件系统(CIFS)也称为服务器信息块(SMB),是适用于MicrosoftWindows服务器和客户端的标准文件和打印机共享系统。 Samba服务可用于将Linux文件系统作为CIFS/SMB网络文件共享进行共享,并将Linux打印机作为CIFS/SMB打印机共享进行共享。 [root@shareserver ~]# ———————服务端 ip:172.25.254.227 [root@client ~]# ——————客户端 ip:172.25.254.127 1、安装以及启动服务在服务端: [root@shareserver ~]# yum install samba samba-client samba-common -y #samba —— 提供samba服务的主命令; #samba-client —— 提供测试服务 #samba-common —— 提供管理命令; [root@shareserver ~]# systemctl start smb #启动smb服务 [root@shareserver ~]# systemctl enable smb.service #开机启动smb服务 [root@shareserver ~]# systemctl stop firewalld #关闭火墙 [root@shareserver ~]# systemctl disable firewalld #关闭火墙并且开机不启动 [root@shareserver ~]# netstat -antlp | grep smb # 查看samba的端口匿名登陆 因为在服务端未设置,所以不用输入密码,直接回车,登陆成功 [root@client ~]# smbclient -L //172.25.254.227 #匿名登陆服务端,并查看信息,-L表示查看共享列表smb用户必须是本地用户!!! 添加用户student、tom [root@shareserver ~]# smbpasswd -a student # 把本机用户student添加到sam服务器上 New SMB password: # 设置samba用户的密码,此密码与本机用户的密码无关 Retype new SMB password: # 确认samba用户的密码 Added user student. # 成功 [root@shareserver ~]# smbpasswd -a tom New SMB password: Retype new SMB password: Added user tom. [root@shareserver ~]# pdbedit -L # 查看smb中的所有用户 student:1000:Student User tom:1001: smbpasswd 常用参数: -a student: 添加用户student为samba用户 -d student:禁用samba用户student -e student: 启用samba用户student -x student: 删除samba用户student 可以用 smbpasswd 添加 smb 用户 还可以用 pdbedit 添加 smb 用户 pdbedit 常用参数 –a student:新建Samba用户。 –x student:删除Samba用户。 –L:列出Samba用户列表,读取passdb.tdb数据库文件。 –Lv:列出Samba用户列表的详细信息。 –c “[D]” –u student:暂停该Samba用户的账号。 –c “[]” –u student:恢复该Samba用户的账号。 1 2 3 4 5 6 7 客户端测试: [root@client ~]# smbclient -L //172.25.254.227 -U tom # 指定tom用户登陆,-U表示指定用户 可能出现的错误: 输入密码导致的错误: [root@client ~]# smbclient //172.25.254.227/tom -U tom # 登陆共享服务端,查看共享用户的家目录信息时发现被拒绝 1 服务端samba_enable_home_dirs布尔值的影响: 在服务端排错: [root@shareserver ~]# getenforce Enforcing # selinux与samba服务冲突 [root@shareserver ~]# getsebool -a | grep samba [root@shareserver ~]# setsebool -P samba_enable_home_dirs on # 分享home目录即可。 在客户端测试: 成功: [root@client ~]# mount -o username=tom,password=123 //172.25.254.227/tom /mnt # 把用户挂载到/mnt下,方便对共享用户进行管理 [root@client ~]# df [root@client ~]# cd /mnt [root@client mnt]# touch file{1…5} 在服务端tom用户家目录查看: 二、samba的访问控制 1、域名的修改 客户端: [root@client mnt]# smbclient -L //172.25.254.227/tom -U tom # 查看到域名为MYGROUP 服务端: [root@shareserver ~]# vim /etc/samba/smb.conf # 打开 89 workgroup = TOM #更改 [root@shareserver ~]# systemctl restart smb.service #重启smb服务 客户端: [root@client mnt]# smbclient -L //172.25.254.227/tom -U tom # 再次查看,域名修改成功 2、黑白名单(Samba服务器默认对所有用户开放权限) 白名单: [root@shareserver ~]# vim /etc/samba/smb.conf # 设定白名单,即改即生效 95 hosts allow = 172.25.254.227 # ip为172.25.254.227白名单 1 2 在主机client(IP=172.25.254.127)为上测试: 失败 在主机shareserver(IP=172.25.254.227)上访问: 成功 黑名单: 服务端: [root@shareserver ~]# vim /etc/samba/smb.conf # 设定黑名单,即改即生效 96 hosts deny = 172.25.254.227 # ip为172.25.254.227黑名单 (如果黑白名单同时存在该ip,则该ip为白名单里) 在主机client(IP=172.25.254.127)为上测试: 成功 在主机shareserver(IP=172.25.254.227)上访问: 失败 恢复环境 [root@shareserver ~]# vim /etc/samba/smb.conf 删除或者注释的黑白名单 1 2 3、共享目录 (1)共享自己建立的目录 服务端: [root@shareserver ~]# mkdir /smbfile [root@shareserver ~]# touch /smbfile/hello{1…3} [root@shareserver ~]# vim /etc/samba/smb.conf # 共享自己建立的目录 321 [smb] # 这是共享名,可以自己起名字 322 comment = hello # 共享文件的说明,这个也是自己自定义的 323 path = /smbfile # 共享文件的绝对路径 [root@shareserver ~]# systemctl restart smb.service #重启smb服务 1 客户端测试: 端测试 [root@client mnt]# smbclient -L //172.25.254.227/smb -U tom # 在共享信息里查看到共享目录,smb是自己设定的共享目录名称 [root@client mnt]# smbclient //172.25.254.227/file -U tom # 在客户端登录查看文件内容时被禁止 在服务端排查原因 [root@shareserver ~]# ls -Zd /smbfile/ # 发现共享目录的安全上下文不是samba共享 drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /linuxfile/ [root@shareserver ~]# semanage fcontext -a -t samba_share_t ‘/smbfile(/.*)?’ # 修改共享目录的安全上下文 [root@shareserver ~]# restorecon -RvvF /smbfile/ # 刷新 [root@shareserver ~]# ls -Zd /smbfile/ # 查看修改成功 drwxr-xr-x. root root system_u:object_r:samba_share_t:s0 /smbfile/ 再次在客户端查看: [root@client mnt]# smbclient //172.25.254.227/smb -U tom # 可以查看 (2)共享系统目录 服务端: [root@shareserver ~]# vim /etc/samba/smb.conf 323 [mnt] # 共享系统目录的名称,这个名称也是任意的 324 comment = shiyan smb 325 path = /mnt # 共享系统目录的绝对路径 [root@shareserver ~]# systemctl restart smb.service #重启服务 客户端: [root@client mnt]# smbclient -L //172.25.254.227/mnt -U tom [root@client mnt]# smbclient //172.25.254.227/mnt -U tom # 但是登录上之后,也不能查看内容,这是因为安全上下文不一致 在服务端: 由于这是系统文件,如果更改安全上下文,会影响其他用户的访问,所以我们让samba服务对读写功能权限不做限制 [root@shareserver ~]# getsebool -a | grep samba [root@shareserver ~]# setsebool -P samba_export_all_ro on # 打开只读访问权限 [root@shareserver ~]# setsebool -P samba_export_all_rw on # 打开读写访问权限 [root@shareserver ~]# getsebool -a | grep samba 查看权限并给该目录加r(是否可以查看目录中有什么子文件或者子目录)权限 chmod +r /mnt ##给mnt添加r权限 1 在客户端: [root@client ~]# smbclient //172.25.254.227/mnt -U tom 4、samba服务的权限管理 (1)所有用户都可写 服务端: [root@shareserver ~]# vim /etc/samba/smb.conf 324 writable = yes # 所有用户都可写 [root@shareserver ~]# systemctl restart smb #重启服务 1 给共享目录加可写权限 [root@shareserver ~]# chmod o+w /smbfile/ # 修改权限 客户端: [root@client ~]# smbclient //172.25.254.227/smb -U tom (2)指定用户可写 服务端: [root@shareserver ~]# pdbedit -L # 查看samba服务上的用户 student:1000:Student User tom:1001: [root@shareserver ~]# vim /etc/samba/smb.conf 325 write list = tom # 限定只有tom用户可以写 [root@shareserver ~]# systemctl restart smb #重启服务 1 客户端: [root@client ~]# smbclient //172.25.254.227/file -U linux # 用linux用户登录,可以删除 [root@client ~]# smbclient //172.25.254.227/file -U student # 用其他用户登录不能删除 (3)指定用户组可写 服务端: [root@shareserver ~]# vim /etc/samba/smb.conf 325 write list = @tom [root@shareserver ~]# systemctl restart smb.service [root@shareserver ~]# id student uid=1000(student) gid=1000(student) groups=1000(student),10(wheel) [root@shareserver ~]# usermod -G tom student # 把student用户添加到tom组中 [root@shareserver ~]# id student uid=1000(student) gid=1000(student) groups=1000(student),1001(tom) 客户端测试: [root@client ~]# smbclient //172.25.254.227/smb -U student (4)指定用户登录 [root@shareserver ~]# vim /etc/samba/smb.conf 326 valid users = tom # 指定只有tom用户可以登陆 [root@shareserver ~]# systemctl restart smb.service 1 客户端测试: [root@client mnt]# smbclient //172.25.254.227/smb -U student # 用student用户登录 [root@client mnt]# smbclient //172.25.254.227/smb -U tom # 用其他用户登录 (5)指定用户组登录 服务端: [root@shareserver ~]# vim /etc/samba/smb.conf 325 valid users = +student [root@shareserver ~]# systemctl restart smb #重启 [root@shareserver ~]# id tom uid=1001(tom) gid=1001(tom) groups=1001(tom) [root@shareserver ~]# usermod -G student tom # 把tom用户加入到student组中 [root@shareserver ~]# id tom uid=1001(tom) gid=1001(tom) groups=1001(tom),1000(student) 客户端测试: [root@client ~]# smbclient //172.25.254.227/smb -U tom (6)隐藏共享目录 在客户端查看共享目录: [root@client ~]# smbclient -L //172.25.254./smb -U tom # 默认共享目录时可以看见的 在服务端: [root@shareserver ~]# vim /etc/samba/smb.conf 327 browseable = no [root@shareserver ~]# systemctl restart smb.service 1 在客户端查看共享目录: [root@client ~]# smbclient -L //172.25.254.227/smb -U tom 1 与前面在客户端查看共享目录,该目录已被隐藏 (7)匿名用户登录 客户端: [root@client ~]# smbclient //172.25.254.227/smb # 在客户端查看,匿名用户默认不能登录 服务端: [root@shareserver ~]# vim /etc/samba/smb.conf 176 map to guest = bad user # 其他用户(也就是匿名用户)映射到guest 328 guest ok = yes # 允许其他用户(也就是匿名用户)登陆 [root@shareserver ~]# systemctl restart smb.service 1 客户端测试: [root@client ~]# smbclient //172.25.254.227/sam # 匿名用户成功登录 Enter root’s password: # 匿名用户没有密码,直接按回车即可 在服务端查看: [root@shareserver ~]# ll /smbfile/ # 查看到匿名用户上传的文件 (8)指定root用户 服务端: [root@shareserver ~]# vim /etc/samba/smb.conf 330 admin users = tom # 指定tom用户为超级用户 [root@shareserver ~]# systemctl restart smb.service 1 客户端测试: [root@client ~]# smbclient //172.25.254.227/smb -U tom 在服务端查看: [root@shareserver ~]# ll /smbfile/ 在服务端还原环境: [root@shareserver ~]# vim /etc/samba/smb.conf [root@shareserver ~]# systemctl restart smb.service writable=no/yes //所有用户对目录是否可写 write list = @tom 或者 +tom //对指定用户组tom可写 write list = tom //对tom用户可写 valid users = student //指定用户登陆 valid users = +student //指定用户组登陆 browseable=no/yes //隐藏目录是否共享 guest ok = yes //允许其他用户(也就是匿名用户)登陆 admin users =tom //指定tom用户超级用户 |
CopyRight 2018-2019 实验室设备网 版权所有 |