samba 提供samba服务的主命令;samba-common 提供管理命令;samba-client 提供测试服务
1.SMB文件共享在服务端:
<1>yum install samba samba-client samba-common -y
<2>systemctl start smb
<3>systemctl enable smb
<4>systemctl stop firewalld
<5> netstat -antlupe | grep smb #查看samba的端口
<6> id student #id看到的用户才可以在samba中建立
<7>useradd westos #添加westos用户
<8> id westos #查看添加成功
uid=1001(westos) gid=1001(westos) groups=1001(westos)
<9>smbpasswd -a student #在samba中建立student用户
<10>smbpasswd -a westos
New SMB password:
Retype new SMB password:
Added user westos.
<11> pdbedit -L #查看samba的用户
student:1000:Student User
westos:1001:
<12> pdbedit -x westos #删除samba中的westos用户
<13>pdbedit -L #查看成功删除
<14> smbpasswd -a westos
<15> getsebool -a | grep samba #slinux中没有开启samba服务,因此在客户端查看时被拒绝
<16>setsebool -P samba_enable_home_dirs on #开启服务
<17>getsebool -a | grep samba
在客户端:
<1>yum install samba-client.x86_64 -y
<2>smbclient -L //172.25.254.238 #匿名登陆服务端,并查看信息
<3> smbclient -L //172.25.254.238 -U student #用建立的用户查看信息
<4> smbclient //172.25.254.238/student -U student #用建立的用户登陆,但查看不到信息
<6>smb: \> ls #在服务端开启后,就可以查看服务端的东西了
2.上传文件
在客户端:
前提: smbclient //172.25.254.238/student -U student
<1>smb: \> put /etc/passwd #上传失败,因为没有切换到被上传文件中
<2>smb: \> quit
<3>cd /etc
<4>smbclient //172.25.254.238/student -U student #可以上传
在服务端查看:
上述方法上传文件比较麻烦,下面用挂载的方法,会方便很多,直接在被挂载的目录上操作,客户端就会有效果
在客户端:
<1>mount //172.25.254.238/student /mnt/ -o username=student,password=123 #临时挂载
<2>cd /mnt
<3>touch file{1..3} #成功建立文件
<4>rm -fr file* #成功删除文件
<5>cd
<6>umount /mnt
<7>vim /etc/fatab #但此种方法不好,如果服务端未开启的话,客户端就会起不来
写入:
//172.25.254.238/student /mnt cifs defaults,username=student,password=123 0 0
<8>mount -a
<9>df
<10>cd
<11>umount /mnt
看完效果后记得把添加的内容删掉,不然开机会有影响
<12>vim /etc/rc.d/rc.local #用这种方法比较方便,服务端不影响客户端
写入:
<13> chmod +x /etc/rc.d/rc.local
<14>reboot
<15>df #查看成功挂载
在服务端查看效果:
3.配置文件的修改
在服务端
<1>rpm -qc samba-common #查看smd的配置文件
/etc/logrotate.d/samba
/etc/samba/lmhosts
/etc/samba/smb.conf
/etc/sysconfig/samba
<2> vim /etc/samba/smb.conf #改完之后在客户端登录查看
<4>systemctl restart smb
测试:
在138这台主机上
在其他主机上:
<5>vim /etc/samba/smb.conf #设置访问黑名单,138这台主机不可以查看,其他主机可以查看
<6>systemctl restart smb
测试:
在138这台主机上
在其他主机上
做完实验后,记得把文件里的内容改回来
4.共享文件
1 共享自己建立的文件,
在服务端:
<1>mkdir /westos
<2>semanage fcontext -a -t samba_share_t '/westos(/.*)?'#修改建立文件的安全上下文类型为samba_share_t,时使之可以共享
<3>semanage fcontext -l | grep /westos #查看/westos的安全上下文类型
<4>restorecon -RvvF /westos #刷新/westos目录安全上下文的列表
<5>vim /etc/samba/smb.conf
[DIR] #可以看到的共享目录的名称
comment= westos dir #说明
<6>systemctl restart smb.service
<7>touch /westos/file{1..3}
在客户端:
2 共享系统的文件(不能修改安全上下文,/mnt还要被其他程序查看,如果改的话,就只能被samba一个查看了)
<1>vim /etc/samba/smb.conf
<2>systemctl restart smb.service
<3> touch /mnt/linux{1..3}
<5> setenforce 0
设置成警告模式之后可以看到,但不安全:
<6>setenforce 1 #改成强制模式
<7>setsebool -P samba_export_all_ro on #打开只读访问权限该权限比修改文件安全上下文权力大,但是不够安全
setsebool -P samba_export_all_rw on #打开文件访问读写权限
在客户端查看
5. smb权限管理
1 隐藏共享文件
在服务端:
<1>vim /etc/samba/smb.conf
320 [DIR]
321 comment= westos dir
322 path = /westos
323 browseable = no #隐藏共享文件
在客户端测试(查看不到DIR文件):
2 所有用户可写
在服务端修改配置文件:
<1>vim /etc/samba/smb.conf
320 [DIR]
321 comment= westos dir
322 path = /westos
323 browseable = no
<2>systemctl restart smb
在客户端测试:
<1> mount //172.25.254.238/DIR /mnt -o username=student,password=123
<2>cd /mnt
<3>touch file #此时建立不成功,因为没有可写权限
touch: cannot touch ‘file’: Permission denied
在服务端:
<1>chmod 777 /westos/ #这种方法不安全,可以用特殊权限来修改
在客户端:
<1> touch file
<2>cd
<3>umount /mnt
3 student组的用户可写
在服务端:
<1>vim /etc/samba/smb.conf
320 [DIR]
321 comment= westos dir
322 path = /westos
323 browseable = no
324 #writable = yes
<2>systemctl restart smb
<3>id westos
uid=1001(westos) gid=1001(westos) groups=1001(westos) #westos属于westos组,不属于student组
在客户端测试:
<1>mount //172.25.254.238/DIR /mnt -o username=westos,password=234
在服务端
<2>usermod -G student westos #把student添加到westos组中
<3>id westos
<4>再次在客户端测试:touch file1
4 设置westos为root用户(必须是可写开启)
在服务端
<1>vim /etc/samba/smb.conf
[DIR]
comment= westos dir
path = /westos
browseable = no
writable = yes
#write list=@student
admin users = westos #指定该共享的管理员,即westos用户身份共享时,是以超级用户身份共享的,此功能与writable=yes并存,当可写权力被关闭时,该功能无效
<2>systemctl restart smb
<3>chmod 755 /westos/
在客户端测试:
<1>touch /mnt/file2 #westos在没有可写权限的情况下可写
<2>ls /mnt #成功建立
<3>#student不是root用户,在不可写的条件下就不能建立
6.smb多用户挂载,认证设置(在客户端)
所有的用户都可以看到之前在root用户下建立的文件,,这样不安全
<1>useradd test
<2>su - test
<3>ls /mnt
认证设置,使得查看时认证一下,提高安全性
<4>yum install cifs-utils -y
<5>vim /root/smbpass #根据挂载规则编写认证文件
<6>mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.238/DIR /mnt
#credentials查看时登陆的服务端smb用户,sec=ntlmssp登陆时密码的方式,multiuser多用户登陆
<7>cd /mnt
<8>ls
<9>su - test
<10>cd /mnt
<12>cifscreds add -u westos 172.25.254.238 #客户端普通用户test通过smb的westos用户登陆,认证
<13>touch file3
<14>ls -l /mnt
<15>ls
7.匿名用户的访问
在客户端:
<1> smbclient //172.25.254.238/DIR #匿名用户不能登陆
在服务端:
<1>vim /etc/samba/smb.conf
124 map to guest = bad user
327 guest ok = yes
<2>systemctl restart smb
在客户端测试
systemctl stop firewalld #关闭服务端和客户端的火墙
<3> vim /etc/exports
exporting *:/mnt
在客户端测试:
<1>umount /mnt
<2>mount 172.25.254.238:/mnt/ /mnt/
<3>cd /mnt
<4>ls
linux1 linux2 linux3
<5>touch file #建立不了,因为是只读
在服务端:
<1>vim /etc/exports
/mnt *(sync,rw) #读写共享
<2>exportfs -rv #刷新共享列表
<3>在客户端还是不能建立,因为没有权限
<4>chmod 777 /mnt/ #给共享目录权限
在客户端测试:
在服务端:
<5> vim /etc/exports
/mnt *(sync,rw,no_root_squash) #客户端用root访问该共享文件时,不映射root用户,即建立的文件还是root建立
<6>exportfs -rv
exporting *:/mnt
在客户端测试:
<7>vim /etc/exports
/mnt *(sync,rw,anonuid=1000,anongid=1000)#将客户端的用户映射到指定的本地用户id将客户端的用户映射到指定的本地组id
在客户端:
<8>vim /etc/exports
/mnt *(sync,rw,anonuid=1000,anongid=1000)
<10>exportfs -rv
在客户端测试(78):
2.自动挂载和卸载(使用时自动挂载,不使用时自动卸载,节省空间)
前提:在服务端和客户端打开nfs服务,关闭火墙
先在服务端查看共享文件:
<1>showmount -e 172.25.254.238 #如果没有,就先共享
Export list for 172.25.254.238:
/mnt *
/westos 172.25.254.0/24
<2>vim /etc/exports #共享
/mnt *(sync,rw,anonuid=1000,anongid=1000)
/wstos 172.25.254.0/24(sync) 172.25.254.138(sync,rw)
<3>exportfs -rv #共享成功
exporting 172.25.254.138:/westos
exporting 172.25.254.0/24:/westos
在客户端:
<1>yum install autofs -y
<2>systemctl start autofs
<3>cd /net
<4>cd 172.25.254.238
<5>ls #查看共享文件
mnt westos
<6>cd westos/
<7> ls
file2 file3
<8>df #因为在使用westos,所以会自动挂载
<8>vim /etc/sysconfig/autofs #修改自动卸载时间
13 TIMEOUT=5
<9>systemctl restart autofs.service
<10>cd #退出共享文件,即停止使用
<11>df #5秒之后在查看,已经自动卸载
3.设定自动挂载点的位置(客户端)
<1>cd
<2>vim /etc/auto.master #主配置文件
第8行 /nfs /etc/auto.westos #设定最终挂载点的上层目录/nfs
<3> vim /etc/auto.westos #子策略文件,此目录之前不存在
westos -ro 172.25.254.238:/westos #设定挂载点名称,挂载参数以及挂载设备
<4>systemctl restart autofs.service
<5>cd /nfs
<6> cd westos
<7>df
<8> mount #可以查看挂载参数