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挂载

../../../_images/linuxsamba-windows-access01.png

在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 这个命令指定的用户,和当前登陆用户无关