一、samba的安装及samba用户的创建:
1.samba实验环境的搭建:
在ip地址为:172.25.254.213 的这台主机搭建samba服务器。
[root@localhost 245room]# yum install samba samba-client samba-common -y
[root@localhost 245room]# systemctl start smb
[root@localhost 245room]# systemctl enable smb
[root@localhost /]# firewall-cmd --add-service=samba --permanent
success
[root@localhost /]# firewall-cmd --add-service=samba-client --permanent
success
[root@localhost /]# firewall-cmd --reload
2.用户登陆:
1)匿名用户登陆:
[root@localhost /]# smbclient -L //172.25.254.213
Enter root's password: #### 匿名用户不需要密码,直接回车即可
上图表示匿名用户能够登陆samab的共享文件系统。
2) samba用户的添加
注意要添加的samba用户必须是本地存在的用户所以我们先建立本地用户。
[root@localhost /]# useradd aporai
[root@localhost /]# useradd terry
添加samab用户
[root@localhost /]# smbpasswd -a aporai
New SMB password:123
Retype new SMB password:123
Added user aporai.
[root@localhost /]# smbpasswd -a terry
New SMB password:456
Retype new SMB password:456
Added user terry.
查看是否添加成功:
删除samba用户:
[root@localhost /]# pdbedit -x terry
3)samab用户的登陆:
[root@localhost /]# smbclient -L //172.25.254.213 -U aporai
Enter aporai's password:123
上图表示aporai用户可以登陆samba的 共享文件。
接着我们登陆到samba用户aporai自己的共享目录中(对samba用户来说,自己的家目录就是共享目录):
在aporai的家目录建立一个标记文件:
首先开启sabmba服务的sebool值中,能够查看家目录的程序的开关:
[root@localhost /]# setsebool -P samba_enable_home_dirs on
[root@localhost /]# smbclient //172.25.254.213/aporai -U aporai
Enter aporai's password:123
如上图,成功登陆进入共享目录 。
二、samba服务的配置
1.域名的更改:
[root@localhost samba]# vim /etc/samba/smb.conf
[root@localhost samba]# systemctl restart smb
测试:
2.访问控制(可访问就可挂载):
1)允许访问:
配置主文件:
上图表示允许172.25.254.2这台主机访问登陆samba的共享域。
[root@localhost samba]# systemctl restart smb
测试:
如下图该主机可以登陆:
换台主机尝试:
如下图登陆失败,显示无效的网络响应:
2) 拒绝访问:
主配置文件添加如下配置:
[root@localhost samba]# systemctl restart smb
用172.25.254.2这台主机测试:
登陆失败。
注释掉以上的配置开始下面的实验。
3.添加共享目录:
首先配置主配置文件:
上图第一行表示samba服务的共享目录的名称; 第二行是对该共享目录的说明; 第三行是真正存放共享目录数据的目录,第一行的就相当于该目录的别名。
然后建立真实存放共享数据的目录,并修改其安全上下文:
[root@localhost /]# mkdir /245room
[root@localhost /]# semanage fcontext -a -t samba_share_t '/245room(/.*)?'
[root@localhost /]# restorecon -RvvF /245room/
restorecon reset /245room context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
[root@localhost /]# ls -Zd /245room/ ##### 查看修改的结果
drwxr-xr-x. root root system_u:object_r:samba_share_t:s0 /245room/
测试共享目录是否建立成功:
测试:在该目录中建立标记文件,然后用samba用户登陆到该共享目录中
[root@localhost /]# touch 245room/hope1
[root@localhost /]# smbclient //172.25.254.213/suzhao -U aporai
由以上结果证明该共享目录建立成功。
4.将系统的目录添加为共享目录:
这里将 /mnt目录配置成共享目录,先配置主配置文件如下:
由于系统的目录不能更改安全上下文,所以只能让selinux开启对mnt目录的可读可写权,故做如下操作:
[root@localhost /]# setsebool -P samba_export_all_ro 1
[root@localhost /]# setsebool -P samba_export_all_rw on
测试:
[root@localhost mnt]# touch insist1
[root@localhost /]# smbclient //172.25.254.213/school -U aporai
5.读写控制:
1) 所有人可写(包括匿名用户):
没配置文件之前:
[root@localhost /]# mount //172.25.254.213/suzhao /mnt -o username=aporai,password=123
[root@localhost /]# cd /mnt
[root@localhost mnt]# touch hope2
touch: cannot touch ‘hope2’: Permission denied
配置文件:
还要对真实存放数据的共享目录给予满权限:
[root@localhost mnt]# chmod 777 /245room/
现在测试是否能写:
root@localhost mnt]# touch hope2
[root@localhost mnt]# cd /
[root@localhost /]# umount /mnt
2) 指定的用户可写:
配置文件:
[root@localhost /]# mount //172.25.254.213/suzhao /mnt -o username=terry,password=456
[root@localhost /]# cd /mnt
[root@localhost mnt]# touch hope4
touch: cannot touch ‘hope4’: Permission denied
现在用配置文件里面指定的用户porai测试:
[root@localhost /]# umount /mnt
[root@localhost /]# mount //172.25.254.213/suzhao /mnt -o username=aporai,password=123
[root@localhost /]# umount /mnt
[root@localhost /]# mount //172.25.254.213/suzhao /mnt -o username=aporai,password=123
[root@localhost /]# umount /mnt
3)同一个组中的用户能够写:
接着上一个实验,将terry加入aporai的所属组:
[root@localhost /]# id aporai
uid=1001(aporai) gid=1001(aporai) groups=1001(aporai)
[root@localhost /]# usermod -G 1001 terry
[root@localhost /]# id terry
uid=1002(terry) gid=1002(terry) groups=1002(terry),1001(aporai)
修改配置文件:
测试:
[root@localhost /]# mount //172.25.254.213/suzhao /mnt -o username=terry,password=456
[root@localhost /]# cd /mnt
[root@localhost mnt]# touch hope5
[root@localhost /]# umount /mnt
6.是否可浏览共享目录(只是隐藏了,实际可用)
修改配置之前:
配置文件:
重启服务后测试,发现共享目录suzhao已经隐藏了:
但却是可挂载的:
[root@localhost /]# mount //172.25.254.213/suzhao /mnt -o username=aporai,password=123
那当然也是能登陆的:
7.配置有效用户:
1)单用户
配置主文件之前,terry用户可登陆共享目录:
配置主配置文件,使aporai用户为有效用户:
测试: 如下图,terry用户不能挂载共享目录了,当然也就不能登陆共享目录了:
2)同一个组内用户有效:
配置主文件影响:
测试,如下图,因为terry和aporai在同一个用户组,所以terry也是有效用户:
8.将samba用户的身份映射为超级用户:
配置文件:下图的配置表示将aporai用户映射为root用户:
测试:
[root@localhost /]# mount //172.25.254.213/suzhao /mnt -o username=aporai,password=123
[root@localhost /]# cd /mnt
[root@localhost mnt]# touch hope7
9.匿名用户可登陆:
在配置主文件之前测试如下:
配置主文件,如下图:
[root@localhost samba]# systemctl restart smb
测试:
[root@localhost ~]# smbclient //172.25.254.213/suzhao
三.samba的多用户挂载模式:
多用户挂载即:在同一个主机上的多个用户身份可同时用任意用户身份(指samba用户或者samba匿名用户)去挂载已经被挂载的共享目录,然后对该共享目录进行操作,这使得该共享目录的利用率提升。
在实验之前先来看看能不能多用户挂载:
首先root用户是可以挂载共享目录的:
但是,该主机中的除root用户之外的其他用户不能进行挂载:
下面我们来实现多用户挂载。
## 1)在客户端下载多用samba户挂载的插件:
[root@foundation62 ~]# yum install cifs-utils.x86_64 -y
查看是否下载成功,如下图:
## 2)第一次挂载时的做法:
假设使用aporai这个smb用户挂载:
[root@foundation62 ~]# vim /root/smbpasswd
[root@foundation62 ~]# mount -o credentials=/root/smbpasswd,sec=ntlmssp,multiuser //172.25.254.213/suzhao /mnt
## 3) 用该主机的其它用户身份来进行挂载已经挂载的共享目录:
在该主机上除了root用户,还有另外三个用户:
先用普通用户alice挂载之前,是不能浏览该目录内的信息的:
现在进行挂载:
[alice@foundation62 mnt]$ cifscreds add -u terry 172.25.254.213 ### 用terry这个smaba用户的身份挂载suzhao这个共享目录
Password:456
现在就能对/mnt进行操作:
主配置文件开启写功能:
在alice的环境下新建文件
在samba主机上看建立该文件的用户身份,如下图可知alice这个用户使用samba用户terry的身份挂载了suzhao这个共享目录:
4)用kiost用户挂载共享目录:
挂载前:
挂载共享目录:
[kiosk@foundation62 mnt]$ cifscreds add -u aporai 172.25.254.213 ### 用kiost用户以samba用户aporai的身份挂载共享目录。
Password:123
新建文件:
在samba服务器上查看建立的文件的属性,发现该文件的用户身份是apoorai:
前面我们已经在root用户的环境下使用smaba用户apporai挂载了suzhao这个共享目录,这证明一个samba用户可被多个客户用户同时挂载。
5) 用kury客户用户使用匿名身份进行挂载:
[kury@foundation62 mnt]$ cifscreds add -u anywho 172.25.254.213
Password: ### 匿名用户无密码,直接回车
在kury用户下在挂载的目录中建立文件:
在服务器端查看该文件属性,发现hope14的用户身份是nobady,这表示匿名用户身份: