一、Samba概述
Samba:桑巴舞,在这里指 Linux 系统中的一种文件共享程序
在 Windows 网络环境中,主机之间进行文件和打印机共享是通过微软公司自己的 SMB/CIFS 网络协议实现的。SMB(Server Message Block,服务消息快)和 CIFS(Common Internet File System,通用互联网文件系统)协议是微软的私有协议,在 Samba 项目出现之前,并不能直接与 Linux/UNIX 系统进行通信。
Samba 是主名的开源软件项目之一,他在 Linux/UNIX 系统中实现了微软的 SMB/CIFS 网络协议,从而使得跨平台的文件共享变得更加容易。在部署 Windows、Linux/UNIX 混合平台的企业环境时,选用 Samba 可以很好的解决不同系统之间的文件互访问题。
二、安装 Samba 服务软件
[root@huyouba1 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@huyouba1 ~]# yum -y install samba
三、Samba 服务的程序组件
1.smbd
(1)作用:
负责为客户机提供服务器中共享资源(目录和文件等)的访问
(2)端口:
TCP 协议的 139 端口(SMB协议)、445 端口(CIFS协议)
2.nmbd
(1)作用:
负责提供基于 NetBIOS 协议的主机名称解析,以便为 Windows 网络中的主机进行查询服务。
(2)端口:UDP 协议的 137-138 端口(NetBIOS 协议)
[root@huyouba1 ~]# systemctl start nmb.service
[root@huyouba1 ~]# systemctl start smb.service
[root@huyouba1 ~]# netstat -utpln |grep mbd
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 9069/smbd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 9069/smbd
tcp6 0 0 :::139 :::* LISTEN 9069/smbd
tcp6 0 0 :::445 :::* LISTEN 9069/smbd
udp 0 0 192.168.100.255:137 0.0.0.0:* 9045/nmbd
udp 0 0 192.168.100.113:137 0.0.0.0:* 9045/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 9045/nmbd
udp 0 0 192.168.100.255:138 0.0.0.0:* 9045/nmbd
udp 0 0 192.168.100.113:138 0.0.0.0:* 9045/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 9045/nmbd
四、主配置文件 /etc/samba/smb.conf
1./etc/samba/smb.conf 文件概述
[global] 全局配置:对整个 Samba 服务器都有效
[homes] 宿主目录共享设置:设置 Linux 用户的默认共享,对应用户的宿主目录
[printers] 打印机共享设置
在 /etc/samba/smb.conf 配置文件中,以 “;” 号开头的行表示配置样例。
[root@huyouba1 ~]# egrep -v "^#|^;|^$" /etc/samba/smb.conf
[global]
workgroup = SAMBA //所在工作组
security = user //安全级别,share、user、server、domain
# share 来访主机无需验证口令;比较方便,但安全性很差
# user 需验证来访主机提供的口令后才可以访问;提升了安全性
# server 使用独立的远程主机验证来访主机提供的口令(集中管理账户)
# domain 使用域控制器进行身份验证
passdb backend = tdbsam //共享账户文件的类型,smbpasswd、tdbsam、ldapsam
# smbpasswd 使用smbpasswd 命令为系统用户设置samba服务程序的密码
# tdbsam 创建数据库文件并使用pdbedit命令建立samba服务程序的用户
# ldapsam 基于ldap服务进行账户验证
printing = cups
printcap name = cups
load printers = yes //设置在samba服务启动时是否共享打印机
cups options = raw //打印机选项
[homes] //共享选项
comment = Home Directories //描述信息
valid users = %S, %D%w%S //允许访问的用户
browseable = No //指定共享信息是否在“网上邻居”中可见
read only = No //是否为只读
inherit acls = Yes //是否继承acl权限
[printers] //打印机选项
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
2.主配置文件语法检查 testparm 命令
在修改 /etc/samba/smb.conf 文件后,可以通过 testparm 命令检测是否有语法错误,但需要注意的是,此命令仅可以检查语法上的错误,逻辑错误无法排查。
[root@huyouba1 ~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
printcap name = cups
security = USER
workgroup = SAMBA
idmap config * : backend = tdb
cups options = raw
[homes]
browseable = No
comment = Home Directories
inherit acls = Yes
read only = No
valid users = %S %D%w%S
[printers]
browseable = No
comment = All Printers
create mask = 0600
path = /var/tmp
printable = Yes
[print$]
comment = Printer Drivers
create mask = 0664
directory mask = 0775
force group = @printadmin
path = /var/lib/samba/drivers
write list = @printadmin root
五、设置共享目录
1.可匿名访问的共享
示例:将光盘挂载到 /media/cdrom,将此目录设为可匿名共享
(1)创建目录,挂载光盘。
[root@huyouba1 ~]# mkdir /media/cdrom
[root@huyouba1 ~]# mount /dev/cdrom /media/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载
(2)修改配置文件
1> 先备份,后修改
[root@huyouba1 ~]# cd /etc/samba/
[root@huyouba1 samba]# ls
lmhosts smb.conf smb.conf.example
[root@huyouba1 samba]# mv smb.conf smb.conf.bak
[root@huyouba1 samba]# cat smb.conf.bak |egrep -v "^#|^;|^$" >smb.conf
[root@huyouba1 samba]# vim smb.conf
# 更改安全级别为share
3 security = user
4 map to guest = Bad User //samba4较之前的SAMBA3有一个重大的变化是:security不再支持share,参数需要做调整
#原来:
#security=share
#现在:
#security=user
#map to guest =Bad User
# 修改配置,添加共享目录
28 [centos7]
29 comment = media-centos7
30 path = /media/cdrom
31 public = yes
32 writable = no
# 其他部分的配置可以删除
(3)验证语法
[root@huyouba1 ~]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[centos7]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
map to guest = Bad User
printcap name = cups
security = USER
workgroup = SAMBA
idmap config * : backend = tdb
cups options = raw
[centos7]
comment = media-centos7
guest ok = Yes
path = /media/cdrom
注意:验证语法时,出现以下错误解决方法
[root@huyouba1 samba]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
需修改 /etc/security/limits.conf
[root@huyouba1 ~]# vim /etc/security/limits.conf
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
* - nofile 16384 ## 添加这行
(4)重启服务
[root@huyouba1 ~]# systemctl restart smb.service
2.需要用户验证的共享
示例:创建共享目录 /share/,用户只有 test1、test2 可以访问,且 test1 用户对 /share 目录只读,test2 用户对该目录具有写入权限。
(1)创建 /share 目录,添加 Samba 服务用户
[root@huyouba1 ~]# mkdir /share
[root@huyouba1 ~]# useradd test1
[root@huyouba1 ~]# pdbedit -a -u test1
new password:123123
retype new password:123123
Unix username: test1
NT username:
Account Flags: [U ]
User SID: S-1-5-21-3856952156-621695587-2473584034-1000
Primary Group SID: S-1-5-21-3856952156-621695587-2473584034-513
Full Name:
Home Directory: \\huyouba1\test1
HomeDir Drive:
Logon Script:
Profile Path: \\huyouba1\test1\profile
Domain: HUYOUBA1
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 三, 06 2月 2036 23:06:39 CST
Kickoff time: 三, 06 2月 2036 23:06:39 CST
Password last set: 三, 12 2月 2020 22:23:01 CST
Password can change: 三, 12 2月 2020 22:23:01 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@huyouba1 ~]# useradd test2
[root@huyouba1 ~]# pdbedit -a -u test2
new password:
retype new password:
Unix username: test2
NT username:
Account Flags: [U ]
User SID: S-1-5-21-3856952156-621695587-2473584034-1001
Primary Group SID: S-1-5-21-3856952156-621695587-2473584034-513
Full Name:
Home Directory: \\huyouba1\test2
HomeDir Drive:
Logon Script:
Profile Path: \\huyouba1\test2\profile
Domain: HUYOUBA1
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 三, 06 2月 2036 23:06:39 CST
Kickoff time: 三, 06 2月 2036 23:06:39 CST
Password last set: 三, 12 2月 2020 22:24:45 CST
Password can change: 三, 12 2月 2020 22:24:45 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
注:
pdbedit -a -u 添加一个 Samba 用户
pdbedit -x -u 删除一个 Samba 用户
pdbedit -L 列表查看 Samba 用户
pdbedit -Lv 详细查看 Samba 用户
(2)修改配置文件
[global]
workgroup = SAMBA
security = user
map to guest = Bad User
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[centos7]
comment = media-centos7
path = /media/cdrom
public = yes
writable = no
[share]
comment = share
path = /share
public = no
read only = yes
valid users = test1 test2 //有效用户
write list = test2 //可写用户
directory mask = 0755 //创建新共享目录的默认权限
create mask = 0644 //创建新共享文件的默认权限
(3)验证语法
[root@huyouba1 ~]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[centos7]"
Processing section "[share]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
map to guest = Bad User
printcap name = cups
security = USER
workgroup = SAMBA
idmap config * : backend = tdb
cups options = raw
[centos7]
comment = media-centos7
guest ok = Yes
path = /media/cdrom
[share]
comment = share
create mask = 0644
path = /share
valid users = test1 test2
write list = test2
(3)给 Samba 服务器中的 /share 目录添加写权限
可以通过ACL功能给test2一个用户添加写权限,在实际生产中这种方法比较安全。在实验环境中,也可以直接添加其他人的写权限。
1>通过ACL功能给test2用户添加对/共目录的写权限
[root@huyouba1 ~]# setfacl -m u:test2:rwx /share
[root@huyouba1 ~]# getfacl /share/
getfacl: Removing leading '/' from absolute path names
# file: share/
# owner: root
# group: root
user::rwx
user:test2:rwx
group::r-x
mask::rwx
other::r-x
2> 直接给其他人增加写权限
[root@huyouba1 ~]# chmod o+w /share/
[root@huyouba1 ~]# ll -d /share/
drwxrwxrwx+ 2 root root 6 2月 12 22:22 /share/
(4)重启服务
[root@huyouba1 ~]# systemctl restart smb.service
需要注意的是,在/etc/samba/smb.conf文件对权限的设置,优先级低于Linux系统中的文件系统权限,也就是说,想要实现共享目录或者文件具有某种权限,首先必须保证该目录或者文件在文件系统中具有该权限
六、安全共享措施
访问地址限制
(1)访问地址限制概述
针对访问 Samba 服务器的客户机,可以通过 “hosts allow”,“hosts deny” 配置项进行访问限制,前者用于指定仅允许访问共享的客户机地址,后者用于指定仅拒绝访问共享的客户机地址,两种方法任选其一即可。
访问地址限制一般用于 [global] 全局配置部分,也可以应用于某个具体的共享配置网段部分。限制的对象可以是主机名、IP地址或者网段地址(省去主机部分),多个地址之间以逗号或者空格进行分割。
(2)示例:
1> 仅允许 192.168.1.0/24,172.16.0.0/16,10.0.0.0/8 网段的客户机访问
[root@huyouba1 ~]# vim /etc/samba/smb.conf
10 hosts allow = 192.168.100 172.16. 10.
2> 不允许 IP 地址为 192.168.100.111 的主机访问
[root@huyouba1 ~]# vim /etc/samba/smb.conf
11 hosts deny = 192.168.100.111
3> 重启服务生效
[root@huyouba1 ~]# systemctl reload smb.service
七、访问共享主机文件
1. Windows 系统的访问
示例:Windows 10 系统访问 IP 地址为 192.168.100.113/24 的 Samba 服务器
用 test2 的别名登录,密码为 test2 的密码
新建文件 test.txt,并随意输入内容
2.Linux 系统的访问
(1)方法一:smbclient,需要安装 Samba 客户端
1> smbclient 命令
smbclient -L 192.168.100.113
smbclient -U test1 //192.168.100.113/share
smbclient //192.168.100.113/public -N 【匿名访问】
2> 开启一台 Centos 7.6 的虚拟机作为客户机,保证可以与 Samba 服务器 ping 通
[root@client ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:04:d0:ae brd ff:ff:ff:ff:ff:ff
inet 192.168.100.102/24 brd 192.168.100.255 scope global noprefixroute dynamic ens33
valid_lft 496sec preferred_lft 496sec
inet6 fe80::20c:29ff:fe04:d0ae/64 scope link
valid_lft forever preferred_lft forever
[root@client ~]# ping -c 2 -i 0.1 192.168.100.113
PING 192.168.100.113 (192.168.100.113) 56(84) bytes of data.
64 bytes from 192.168.100.113: icmp_seq=1 ttl=64 time=0.806 ms
64 bytes from 192.168.100.113: icmp_seq=2 ttl=64 time=0.506 ms
--- 192.168.100.113 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 100ms
rtt min/avg/max/mdev = 0.506/0.656/0.806/0.150 ms
2> 以用户 test1,列表查看共享文件共享
[root@client ~]# yum -y install samba-client
[root@client ~]# smbclient -L //192.168.100.113/share -U test1
Enter SAMBA\test1's password:
Sharename Type Comment
--------- ---- -------
centos7 Disk media-centos7
share Disk share
IPC$ IPC IPC Service (Samba 4.8.3)
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
SAMBA HUYOUBA1
3> 建立测试文件 abc.txt,以 test1 登录 Samba 服务器,尝试下载与上传
[root@client ~]# echo ceshiwenjian >abc.txt
[root@client ~]# smbclient -U test1 //192.168.100.113/share
Enter SAMBA\test1's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Feb 13 17:43:35 2020
.. DR 0 Wed Feb 12 22:22:45 2020
123.txt N 4 Thu Feb 13 17:43:39 2020
17811456 blocks of size 1024. 16114056 blocks available
smb: \> get 123.txt \\下载 123.txt文件
getting file \123.txt of size 4 as 123.txt (1.3 KiloBytes/sec) (average 1.3 KiloBytes/sec)
smb: \> put abc.txt \\上传 abc.txt文件
NT_STATUS_ACCESS_DENIED opening remote file \abc.txt
smb: \> exit
[root@client ~]# ls
123.txt abc.txt anaconda-ks.cfg
发现 test1 用户可以下载共享的 test.txt 文件,但是无法上传 abc.txt。以此验证之前在配置文件中设置的 test1 用户的只读权限 4> 以 test2 登录 Samba 服务器,尝试上传 /abc.txt
[root@client ~]# mv abc.txt /
[root@client ~]# smbclient -U test2 //192.168.100.113/share
Enter SAMBA\test2's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Feb 13 17:43:35 2020
.. DR 0 Wed Feb 12 22:22:45 2020
123.txt N 4 Thu Feb 13 17:43:39 2020
17811456 blocks of size 1024. 16114056 blocks available
smb: \> lcd /
smb: \> put abc.txt
putting file abc.txt as \abc.txt (4.2 kb/s) (average 4.2 kb/s)
smb: \> ls
. D 0 Tue Feb 18 17:36:00 2020
.. DR 0 Wed Feb 12 22:22:45 2020
123.txt N 4 Thu Feb 13 17:43:39 2020
abc.txt N 13 Tue Feb 18 17:36:00 2020
17811456 blocks of size 1024. 16114032 blocks available
smb: \> exit
发现 test2 用户可以上传文件以此验证配置文件中对 test2 用户设置的写权限
5>修改客户机 IP 地址为 192.168.100.111/24,测试是否可以访问
[root@client ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:04:d0:ae brd ff:ff:ff:ff:ff:ff
inet 192.168.100.111/24 brd 192.168.100.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe04:d0ae/64 scope link
valid_lft forever preferred_lft forever
[root@client ~]# smbclient -U test2 //192.168.100.113/share
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE
发现客户机地址为:192.168.100.111/24时,无法访问,以此验证配置文件中对该地址主机的禁止访问设置生效。 切记:smb.conf 文件中 “hosts allow” 和 “hosts deny” 只需要配置一项即可
(2)方法二:mount 挂载
1> 以 test1 身份挂载,尝试读取,新建,删除文件
[root@client ~]# mkdir /smbshare
[root@client ~]# yum -y install cifs-utils &>/dev/null
[root@client ~]# mount -o username=test1 //192.168.100.113/share /smbshare/
Password for test1@//192.168.100.113/share: ******
[root@client ~]# mount |tail -1
//192.168.100.113/share on /smbshare type cifs (rw,relatime,vers=default,cache=strict,username=test1,domain=,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.100.113,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)
[root@client ~]# cd /smbshare/
[root@client smbshare]# ls
123.txt abc.txt
[root@client smbshare]# cat abc.txt
ceshiwenjian
[root@client smbshare]# touch test.txt
touch: 无法创建"test.txt": 权限不够
[root@client smbshare]# rm -rf 123.txt
rm: 无法删除"123.txt": 权限不够
发现 test1 用户刻度但是不可写,不可删除文件,从此验证了配置文件中对 test1 的权限设置生效。
2> 以用户 test2 身份挂载,尝试删除,新建,观察默认权限
[root@client ~]# mount -o username=test2 //192.168.100.113/share /smbshare/
Password for test2@//192.168.100.113/share: ******
[root@client ~]# cd /smbshare/
[root@client smbshare]# ll
总用量 2048
-rwxr-xr-x 1 root root 4 2月 13 17:43 123.txt
-rwxr-xr-x 1 root root 13 2月 18 17:36 abc.txt
[root@client smbshare]# mkdir 321
[root@client smbshare]# ll
总用量 2048
-rwxr-xr-x 1 root root 4 2月 13 17:43 123.txt
drwxr-xr-x 2 root root 0 2月 18 19:35 321
-rwxr-xr-x 1 root root 13 2月 18 17:36 abc.txt
发现 test2 可读可写,新建文件默认权限为 644,新建目录默认权限为 755,一以此验证了配置文件中对新建目录及文件的默认权限设置生效。
(3)看日志文件变化
[root@huyouba1 ~]# ls /var/log/samba/
cores log.nmbd log.smbd old
mount //192.168.100.113/centos7 /share/ 【挂载匿名访问目录】
【知识补充】Windows 中登录过共享服务器输入的用户名和密码会有记录,实验时可以在 dos 界面输入如下命令以清除记录
- 【实验中可能遇到的错误】 1,若窗口客户机正常访问,但是 Linux 客户机访问不了 samba 服务器时,查看客户机是否安装 samba4-libs 包
2,若 Linux 客户机出现: mount:block device //192.168.100.113/share is write-protected,mounting read-only mount:cannot mount block device //192.168.100.113/share read-only 的报错信息,则要安装 cifs-utils 包
综合案例,实现不同的用户访问同一个共享目录具有不同的权限
需求:
1.公司有5个部门,分别为:人事行政部(HR & Admin Dept)、财务部(Financial Management Dept)、技术支持部(Technical Support Dept)、项目部(Project Dept)、客服部(Customer Service Dept)。
2.各部门的文件夹只允许本部门员工有权访问;各部门之间交流性质的文件放到公用文件夹中。
3.每个部门都有一个管理本部门文件夹的管理员账号和一个只能新建和查看文件的普通用户权限的账号。
4.公用文件夹分为存放工具的文件夹和存放各部门共享文件的文件夹。
5.对于各部门自己的文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下新建文件及文件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访问,不能更改和删除。不是本部门用户不能访问本部门文件夹。
6.对于公用文件夹中的各部门文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下新建文件及文件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访问,不能更改和删除。本部门用户(包括管理员和普通用户)在访问其他部门共享文件夹时,只能查看不能修改删除新建。对于存放工具的文件夹,只有管理员有权限,其他用户只能访问。
规划:
1.在 /home 下传火箭以下几个文件夹:HR,FM,TS,PRO,CS 和 Share。在 Share 下又有以下几个文件夹:HR,FM,TS,PRO,CS 和 tools。
2.各部门对应的文件夹由各部门自己管理,Tools文件夹由管理员维护。
3.HR管理员账号:hradmin;普通用户账号:hruser。
FM管理员账号:fmadmin;普通用户账号:fmuser。
TS管理员账号:tsadmin;普通用户账号:tsuser。
PRO管理员账号:proadmin;普通用户账号:prouser。
CS管理员账号:csadmin;普通用户账号:csuser。
创建用户并加入到 samba 的账户中:
[root@huyouba1 ~]# useradd -s /sbin/nologin hradmin
[root@huyouba1 ~]# useradd -g hradmin -s /sbin/nologin hruser
[root@huyouba1 ~]# useradd -s /sbin/nologin fmadmin
[root@huyouba1 ~]# useradd -g fmadmin -s /sbin/nologin fmuser
[root@huyouba1 ~]# useradd -s /sbin/nologin tsadmin
[root@huyouba1 ~]# useradd -g tsadmin -s /sbin/nologin tsuser
[root@huyouba1 ~]# useradd -s /sbin/nologin proadmin
[root@huyouba1 ~]# useradd -g proadmin -s /sbin/nologin prouser
[root@huyouba1 ~]# useradd -s /sbin/nologin csadmin
[root@huyouba1 ~]# useradd -g csadmin -s /sbin/nologin csuser
[root@huyouba1 ~]# useradd -s /sbin/nologin admin
[root@huyouba1 ~]# pdbedit -a -u hradmin
new password:
retype new password:
[root@huyouba1 ~]# pdbedit -a -u hruser
[root@huyouba1 ~]# pdbedit -a -u fmadmin
[root@huyouba1 ~]# pdbedit -a -u fmuser
[root@huyouba1 ~]# pdbedit -a -u tsadmin
[root@huyouba1 ~]# pdbedit -a -u tsuser
[root@huyouba1 ~]# pdbedit -a -u proadmin
[root@huyouba1 ~]# pdbedit -a -u prouser
[root@huyouba1 ~]# pdbedit -a -u csadmin
[root@huyouba1 ~]# pdbedit -a -u csuser
[root@huyouba1 ~]# pdbedit -a -u admin
创建目录并修改目录归属:
[root@huyouba1 ~]# mkdir /home/{HR,FM,TS,PRO,CS,Share/{HR,FM,TS,PRO,CS,Tools}} -p
[root@huyouba1 ~]# cd /home/
[root@huyouba1 home]# chown hradmin:hradmin HR && chown fmadmin:fmadmin FM && chown tsadmin:tsadmin TS && chown proadmin:proadmin PRO && chown csadmin:csadmin CS && chown admin:admin Share
[root@huyouba1 home]# ll -d /home/{HR,FM,TS,PRO,CS,Share}
drwxr-xr-x 2 csadmin csadmin 6 2月 18 20:15 /home/CS
drwxr-xr-x 2 fmadmin fmadmin 6 2月 18 20:15 /home/FM
drwxr-xr-x 2 hradmin hradmin 6 2月 18 20:15 /home/HR
drwxr-xr-x 2 proadmin proadmin 6 2月 18 20:15 /home/PRO
drwxr-xr-x 8 admin admin 70 2月 18 20:15 /home/Share
drwxr-xr-x 2 tsadmin tsadmin 6 2月 18 20:15 /home/TS
[root@huyouba1 home]# cd Share/
[root@huyouba1 Share]# chown hradmin:hradmin HR && chown fmadmin:fmadmin FM && chown tsadmin:tsadmin TS && chown proadmin:proadmin PRO && chown csadmin:csadmin CS && chown admin:admin Tools
[root@huyouba1 Share]# ll -d {HR,FM,TS,PRO,CS,Tools}
drwxr-xr-x 2 csadmin csadmin 6 2月 18 20:15 CS
drwxr-xr-x 2 fmadmin fmadmin 6 2月 18 20:15 FM
drwxr-xr-x 2 hradmin hradmin 6 2月 18 20:15 HR
drwxr-xr-x 2 proadmin proadmin 6 2月 18 20:15 PRO
drwxr-xr-x 2 admin admin 6 2月 18 20:15 Tools
drwxr-xr-x 2 tsadmin tsadmin 6 2月 18 20:15 TS
[root@huyouba1 Share]# chmod 1775 CS FM HR PRO TS
[root@huyouba1 Share]# ll
总用量 0
drwxrwxr-t 2 csadmin csadmin 6 2月 18 20:15 CS
drwxrwxr-t 2 fmadmin fmadmin 6 2月 18 20:15 FM
drwxrwxr-t 2 hradmin hradmin 6 2月 18 20:15 HR
drwxrwxr-t 2 proadmin proadmin 6 2月 18 20:15 PRO
drwxr-xr-x 2 admin admin 6 2月 18 20:15 Tools
drwxrwxr-t 2 tsadmin tsadmin 6 2月 18 20:15 TS
[root@huyouba1 Share]# cd ..
[root@huyouba1 home]# chmod 1770 HR FM TS PRO CS
[root@huyouba1 home]# ll -d FM HR TS PRO CS
drwxrwx--T 2 csadmin csadmin 6 2月 18 20:15 CS
drwxrwx--T 2 fmadmin fmadmin 6 2月 18 20:15 FM
drwxrwx--T 2 hradmin hradmin 6 2月 18 20:15 HR
drwxrwx--T 2 proadmin proadmin 6 2月 18 20:15 PRO
drwxrwx--T 2 tsadmin tsadmin 6 2月 18 20:15 TS
修改 Samba 的主配置文件 /etc/samba/smb.conf 中
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA
security = user
map to guest = Bad User
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[HR]
comment = This is a directory of HR.
path = /home/HR/
public = no
admin users = hradmin
valid users = @hradmin
writable = yes
create mask = 0750
directory mask = 0750
[FM]
comment = This is a directory of FM.
path = /home/FM/
public = no
admin users = fmadmin
valid users = @fmadmin
writable = yes
create mask = 0750
directory mask = 0750
[TS]
comment = This is a directory of TS.
path = /home/TS/
public = no
admin users = tsadmin
valid users = @tsadmin
writable = yes
create mask = 0750
directory mask = 0750
[PRO]
comment = This is a directory of PRO.
path = /home/PRO/
public = no
admin users = proadmin
valid users = @proadmin
writable = yes
create mask = 0750
directory mask = 0750
[CS]
comment = This is a directory of CS.
path = /home/CS/
public = no
admin users = csadmin
valid users = @csadmin
writable = yes
create mask = 0750
directory mask = 0750
[Share]
comment = This is a share directory.
path = /home/Share/
public = no
valid users = admin,@hradmin,@fmadmin,@tsadmin,@proadmin,@csadmin
writable = yes
create mask = 0755
directory mask = 0755
[root@huyouba1 ~]# systemctl restart smb.service
[root@huyouba1 ~]# systemctl restart nmb.service
验证:
以用户 hradmin 登录
进入hr,/Share/hr目录后可以进行添加,删除,修改操作,进入非小时目录回弹出登陆筐,只有输入对应账户才可以进入,可以进入共享下所有目录,但是除了小时目录外均无法创建新文件,提示无权限, 其他用户登陆经验证与要求一致