CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。
安装部署
yum install samba-common samba samba-client -y
安装软件
systemctl start smb
打开软件
systemctl stop firewalld
关闭火墙
setsebool -P samba_enable_home_dirs on
如果开启的selinux还要对其属性进行修改。
smbpasswd -a student
添加用户student,这里添加的用户必须是本机有的用户。
pdbedit -L
查看用户列表
smbclient -L //172.25.254.231 -U student
查看共享目录列表
pdbedit -x student
如果要删除用户则输入这条命令。
设置共享目录
mkdir /westos ##新建目录
vim /etc/samba/smb.conf
第一行表示共享名称,第二行表示共享说明,第三行是共享路径
如果打开了selinux还要修改其属性
semanage fcontext -a -t samba_share_t '/westos(/.*)?'
restorecon -RvvF /westos/
测试
smbclient //172.25.254.231/westos -U student
如果是系统建立的目录也一样需要需要修改selinux属性,一旦修改,selinux不保护目录访问
vim /etc/samba/smb.conf
getsebool -a | grep samba ##查看列表
setsebool -P samba_export_all_ro on ##设置只读
setsebool -P samba_export_all_rw on ##设置可以读写
smbclient //172.25.254.231/mnt -U student ##访问这个目录
这样就可以正常访问了。
限制挂载共享目录
默认是可以直接挂载的
mount //172.25.254.231/westos /mnt/ -o username=student,password=westos
成功挂载。
vim /etc/samba/smb.conf
设置白名单,172.25.254.231这台主机可以挂载,其他主机不行
挂载成功。
设置黑名单,172.25.254.231这台主机不可以挂载,其他主机可以。
挂载失败了。
用其他主机挂载成功了。
如果要设置多个黑白名单,则在后面用空格隔开就好了,如:
hosts deny = 172.25.254.231 172.25.254.131
设置这两台主机为黑名单,不能直接挂载,白名单也是一样的。
设置共享目录的自动挂载
vim /etc/fstab
写入这个文件后,每次开机都会自动挂载这个共享目录。
设置匿名用户访问
vim /etc/samba/smb.conf
systemctl restart smb
重启服务
mount //172.25.254.231/mnt /guazai/ -o username=guest
之后就可以使用匿名用户挂载共享目录了
samba共享目录的管理参数
1.writeable
vim /etc/samba/smb.conf
打开共享目录的写权限,当smb用户挂载使用这个目录时对这个目录拥有写权限,开启这个权限时,要注意是否受系统目录本身权限或者selinux的影响,如果有影响则需要排除。
chmod 777 /westos ##修改目录本身权限
getsebool -P samba-export_all_rw on ##修改selinux属性
mount //172.25.254.231/westos /mnt/ -o username=redhat,password=westos
使用smb用户挂载后,对目录可写,需要注意的是,.writeable=yes时,所有用户对目录都可写。
2.write list
设置对共享目录的可写名单,如上,student用户使用这个共享目录时可写,如果其他人挂载这个目录,那么是不可写的,使用这个参数时要把前面的writeable参数屏蔽掉。
以redhat用户身份挂载,不可写。
以student用户登陆,可写。
这个表示对于在student组的用户可写,使用+号也是一样的效果
前面我们看到,redhat用户对目录是不可写的,现在我们给redhat用户添加附加组student。
此时因为redhat在student内,所以可写。
3.valid users
这个参数表示可以挂载使用共享目录的名单。
可以看到,使用redhat用户挂载失败了。
使用student用户挂载成功。
同样,在前面加@或+号表示student组成员可以挂载使用共享目录。
前面我们为redhat添加了student为附加组,所以挂载成功了。
4.browseable
使用这个参数可以隐藏共享目录。
查看列表时,可以看到共享目录westos。
在设置westos目录时browseable=no。
重启服务后再查看
westos共享目录被隐藏了。
5.admin users
admin users= student
使samba用户student获得root用户身份
挂载共享目录
可以看到student用户创建文件时是以root用户的身份建立的。
多用户挂载
在客户端:
yum install cifs-utils -y
安装软件
使用超级用户的身份
vim /root/smbpass
设置认证信息,内容是smb用户的用户名和密码
chmod 600 /root/smbpass ##设置权限
设置权限,使其他用户没有权限。
mount -o credentials=/root/smbpass,multiuser,sec=ntlmssp //172.25.254.231/westos /mnt/
挂载共享目录
su - harry
切换到普通用户
可以看到,普通用户不能查看到挂载的共享目录。
cifscreds add -u student 172.25.254.231
进行认证后就可以查看了。
touch file1
-rw-r--r-- 1 student student 0 Feb 22 14:28 file1
创建一个新文件,可以看到这个文件是属于属于smb用户的student用户的,而不是这个登录的普通用户,因为我们是用smb用户的student用户做的认证,所以新建的文件是属于他的。