5.3. linux samba配置共享
5.3.1. linux samba安装配置
5.3.1.1. 安装samba客户端
- 需要安装的软件包:
samba
samba-client
cifs-utils
samba-common-tools
安装过程:
1[root@centos-155 ~]# yum install samba samba-client cifs-utils samba-common-tools -y
2[root@centos-155 ~]# rpm -ql samba
3[root@centos-155 ~]# rpm -ql samba-client
4[root@centos-155 ~]# rpm -ql cifs-utils
5.3.1.2. linux配置
添加用户
1[root@centos-155 mnt]# useradd user1
2[root@centos-155 mnt]# useradd user2
3[root@centos-155 mnt]# useradd user3
4[root@centos-155 mnt]# smbpasswd -a user1
5[root@centos-155 mnt]# smbpasswd -a user2
6[root@centos-155 mnt]# smbpasswd -a user3
7[root@centos-155 /]# groupadd user
8[root@centos-155 /]# usermod -aG user user1
9[root@centos-155 /]# usermod -aG user user2
10[root@centos-155 /]# usermod -aG user user3
配置文件编辑
1[root@centos-155 mnt]# vim /etc/samba/smb.conf
2[root@centos-155 mnt]# tail -n 6 /etc/samba/smb.conf
3[pub]
4 comment= this is samba pub for windows
5 path = /data/samba
6 write list = user1 ,user2
7 valid users= +user
启动服务并查看状态
1[root@centos-155 mnt]# systemctl restart smb
2[root@centos-155 mnt]# systemctl restart nmb
3[root@centos-155 mnt]# netstat -tunlp |grep mb
4tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 4584/smbd
5tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 4584/smbd
6tcp6 0 0 :::139 :::* LISTEN 4584/smbd
7tcp6 0 0 :::445 :::* LISTEN 4584/smbd
8udp 0 0 192.168.46.255:137 0.0.0.0:* 4596/nmbd
9udp 0 0 192.168.1.12555:137 0.0.0.0:* 4596/nmbd
10udp 0 0 0.0.0.0:137 0.0.0.0:* 4596/nmbd
11udp 0 0 192.168.46.255:138 0.0.0.0:* 4596/nmbd
12udp 0 0 192.168.1.12555:138 0.0.0.0:* 4596/nmbd
13udp 0 0 0.0.0.0:138 0.0.0.0:* 4596/nmbd
创建目录并授权
1[root@centos-155 mnt]# mkdir /data/samba -pv
2[root@centos-155 /]# chown root.user /data/samba/ -R
3[root@centos-155 /]# chmod 2775 /data/samba/ -R
4[root@centos-155 /]# echo "this is test" >> /data/samba/test.txt
5
6[root@centos-155 /]# systemctl restart smb
7[root@centos-155 /]# systemctl restart nmb
注意
chmod 2775 /data/samba/ -R 设置了setgid,设置了这个参数后,此目录有写权限的用户在此目录创建的文件所属的组为此目录的属组。
备注
linux需要关闭selinux,设置 /etc/selinux/config 中对应的配置修改为 SELINUX=disable ,并设置 setenforce 0,否则会使得不能正常访问。
5.3.1.3. samba主要配置项
1workgroup 工作组
2server string 服务器字符串,支持宏定义
3netbios name netbios名字和主机名无关
4interface 监听的接口
5host allow 允许的主机,支持多种格式
6log file 日志文件,支持宏定义
7max log size 最大日志文件, 超过这个数值就日志滚动日志
8load printers 加载打印机
9cups options 通用unix打印机选项
10path 指定共享路径
11Comment 共享描述
12public 是否guest访问的共享,就是匿名可以访问
13browsable 是否可以被浏览
14writable 是否可写
15readonly 是否只读和public只需要配置一个
16write list 可写列表,支持用户和组,多个使用逗号分割。样例user1,@group2,+group3
17valid users 特定用户才能访问
5.3.1.4. windows挂载
在window环境中,右键新建txt创建一个文件
- windows清除登陆记录的命令:
net use * /delete
在linux环境中,检查权限是否符合期望
1[root@centos-155 /]# ll /data/samba
2total 4
3-rw-r--r-- 1 root user 13 Feb 6 13:54 test.txt
4-rwxr--r-- 1 user2 user 0 Feb 6 13:57 新建文本文档.txt
5.3.2. samba多用户挂载
默认samba是单用户挂载的。centos7中可以启用多用户挂载功能,在客户端登陆的不同用户访问 同一个samba的挂载点,获取不同的权限。
5.3.2.1. 服务端配置
1[root@centos-155 /]# yum install samba
2[root@centos-155 /]# mkdir /multiuser
3[root@centos-155 /]# vim /etc/samba/smb.conf
4# 添加下面几行
5[smbshare]
6 path=/multiuser
7 writeable =no
8 write list= @admins
9
10# 创建用户
11[root@centos-155 /]# groupadd admins
12[root@centos-155 /]# useradd -s /sbin/nologin smbuser1
13[root@centos-155 /]# useradd -s /sbin/nologin smbuser2 -G admins
14[root@centos-155 /]# useradd -s /sbin/nolgoin smbuser3 -G admins
15
16[root@centos-155 /]# smbpasswd -a smbuser1
17[root@centos-155 /]# smbpasswd -a smbuser2
18[root@centos-155 /]# smbpasswd -a smbuser3
19
20# 修改权限
21[root@centos-155 /]# setfacl -m "u:smbuser1:rwx" /multiuser/
22[root@centos-155 /]# setfacl -m "u:smbuser2:rwx" /multiuser/
23[root@centos-155 /]# setfacl -m "u:smbuser3:rwx" /multiuser/
5.3.2.2. 客户端配置
1[root@centos-152 ~]# yum install cifs-utils^C
2[root@centos-152 ~]# mkdir /mnt/smb
3[root@centos-152 ~]# echo "username=smbuser2" > /etc/multiuser
4[root@centos-152 ~]# echo "password=panda" >> /etc/multiuser
5[root@centos-152 ~]# cat /etc/multiuser
6username=smbuser2
7password=panda
8[root@centos-152 ~]# chmod 600 /etc/multiuser
9[root@centos-152 ~]# mount -o credentials=/etc/multiuser,multiuser //192.168.161.132/smbshare /mnt/smb
10[root@centos-152 ~]# tail -n 1 /etc/mtab
11//192.168.161.132/smbshare /mnt/smb cifs rw,relatime,vers=1.0,multiuser,cache=strict,username=smbuser2,domain=CENTOS-155,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.161.132,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,echo_interval=60,actimeo=1 0 0
12[root@centos-152 ~]# tail -n 1 /etc/mtab >> /etc/fstab
13[root@centos-152 ~]# vim /etc/fstab
14[root@centos-152 ~]# umount /mnt/smb
15[root@centos-152 ~]# mount -a
16[root@centos-152 ~]# mount |grep smb
17//192.168.161.132/smbshare on /mnt/smb type cifs (rw,relatime,vers=1.0,cache=strict,username=smbuser2,domain=CENTOS-155,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.161.132,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,echo_interval=60,actimeo=1)
5.3.2.3. 客户端测试
1[root@centos-152 ~]# su - panda2
2Last login: Tue Feb 6 15:06:44 CST 2018 on pts/0
3[panda2@centos-152 ~]$ touch /mnt/smb/a.txt
4touch: cannot touch ‘/mnt/smb/a.txt’: Permission denied
5[panda2@centos-152 ~]$ cifs
6cifscreds cifs.idmap cifs.upcall
7[panda2@centos-152 ~]$ cifs
8cifscreds cifs.idmap cifs.upcall
9[panda2@centos-152 ~]$ cifscreds add -u smbuser2 192.168.161.132
10Password:
11[panda2@centos-152 ~]$ touch /mnt/smb/a.txt
12[panda2@centos-152 ~]$ ll
13total 0
14[panda2@centos-152 ~]$ ll /mnt/smb
15total 0
16-rw-r--r-- 1 smbuser2 1014 0 Feb 6 15:07 a.txt
备注
上面的实验,能不能访问到samba的关键在于 cifscreds add -u smbuser2 192.168.161.132 这个命令指定的用户,和当前登陆用户无关