一、 服务端配置
1 在服务端安装samba软件包
[root@Server ~]# yum -y install samba
已加载插件:langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You bscription-manager to register.
正在解决依赖关系
–> 正在检查事务
—> 软件包 samba.x86_64.0.4.6.2-8.el7 将被 安装
…
已安装:
samba.x86_64 0:4.6.2-8.el7
作为依赖被安装:
samba-client-libs.x86_64 0:4.6.2-8.el7
samba-common-libs.x86_64 0:4.6.2-8.el7
samba-common-tools.x86_64 0:4.6.2-8.el7
作为依赖被升级:
krb5-libs.x86_64 0:1.15.1-8.el7 libldb.x86_64 0:1.1.29-1.el7
libsmbclient.x86_64 0:4.6.2-8.el7 libtalloc.x86_64 0:2.1.9-1.e
libtdb.x86_64 0:1.3.12-2.el7 libtevent.x86_64 0:0.9.31-1.
libwbclient.x86_64 0:4.6.2-8.el7 pytalloc.x86_64 0:2.1.9-1.el
samba-common.noarch 0:4.6.2-8.el7 samba-libs.x86_64 0:4.6.2-8.
完毕!
1.2 关闭SELinux
[root@Server ~]# vim /etc/selinux/config
[root@Server ~]# cat /etc/selinux/config | grep -v "#" | grep -v "^$"
SELINUX=disabled
SELINUXTYPE=targeted
[root@Server ~]# getenforce
Disabled
[root@Server ~]#
修改配置文件关闭SELinux是永久关闭,也可以使用以下命令进行关闭
setenforce0:临时生效,下次重启后,会重新打开SELinux
getenforce:查看SELinux的状态
1.3 防火墙放行Samba服务
[root@Server ~]# firewall-cmd --permanent --add-service="samba"
success
[root@Server ~]# firewall-cmd --reload
success
[root@Server ~]# firewall-cmd --list-all
public (default, active)
interfaces: eno16777736
sources:
services: dhcp dhcpv6-client samba ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
[root@Server ~]#
1.4 配置开机自启动Samba服务
[root@Server ~]# systemctl enable smb nmb
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'
ln -s '/usr/lib/systemd/system/nmb.service' '/etc/systemd/system/multi-user.target.wants/nmb.service'
[root@Server ~]# systemctl restart smb nmb
Samba的服务名是依赖于smb和nmb的,所以在启动时,需要启动这两项服务
1.5 修改Samba配置文件
创建相关的文件夹,并创建用户和组
[root@Server ~]# mkdir /Public
[root@Server ~]# mkdir /Sale
[root@Server ~]# mkdir /Technology
[root@Server ~]# groupadd Sale
[root@Server ~]# groupadd Technology
[root@Server ~]# useradd -g Sale Sale1
[root@Server ~]# useradd -g Technology Technology1
[root@Server ~]# useradd Boss
修改Samba的配置文件
[root@Server ~]# vim /etc/samba/smb.conf
[root@Server ~]# cat !$ | grep -v "#" | grep -v "^$"
cat /etc/samba/smb.conf | grep -v "#" | grep -v "^$"
[global]
workgroup = SAMBA
security = user //登录的安全模式,user表示需要输入用户名和密码
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[Public]
path = /Public //共享文件夹的目录
writable = yes //是否可写
write list = Boss,Sale1,Technology1 //可写用户列表,如果是用户组,前面需要有"+"
create mask = 0664 //创建文件的默认权限
directory mask = 0775
[Sale]
path = /Sale
writable = yes
write list = Sale1,Boss
create mask = 0664
directory mask = 0775
[Technology]
path = /Technology
write list = Boss,Technology1
create mask = 0664
directory mask = 0775
[root@Server ~]#
向Samba服务中添加用户,并重新启动Samba服务
[root@Server ~]# pdbedit -au Boss //在Samba服务中添加用户Boss
new password:123 //为用户设置密码,不显示
retype new password:123 //再次输入密码,不显示
Unix username: Boss
NT username:
Account Flags: [U ]
User SID: S-1-5-21-252106335-936056488-221418339-1000
Primary Group SID: S-1-5-21-252106335-936056488-221418339-513
Full Name:
Home Directory: \\server\boss
HomeDir Drive:
Logon Script:
Profile Path: \\server\boss\profile
Domain: SERVER
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: 五, 10 12月 2021 17:02:47 CST
Password can change: 五, 10 12月 2021 17:02:47 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@Server ~]# pdbedit -au Sale1 //同样的将另外两个用户加入到Samba用户列表中
[root@Server ~]# pdbedit -au Technology1
[root@Server ~]# pdbedit -L //列出Samba服务的用户列表
Boss:1003:
Technology1:1002:
Sale1:1001:
[root@Server ~]# systemctl restart smb nmb //重新启动Samba服务
[root@Server ~]#
为不同的文件夹设置特殊权限
[root@Server ~]# chmod o+x /Public/ //修改共享文件夹的权限
[root@Server ~]# chmod o+x /Sale/
[root@Server ~]# chmod o+x /Technology/
[root@Server ~]# setfacl -m u:Sale1:rwx /Public/ //设置特殊权限,使Sale1可以对共享文件夹进行读写操作
[root@Server ~]# setfacl -m u:Technology1:rwx /Public/
[root@Server ~]# setfacl -m u:Boss:rwx /Public/
[root@Server ~]# setfacl -m u:Boss:rwx /Sale/
[root@Server ~]# setfacl -m u:Boss:rwx /Technology/
[root@Server ~]# setfacl -m g:Sale:rwx /Sale/ //使Sale用户组的用户都可以对Sale文件夹进行读写操作
[root@Server ~]# setfacl -m g:Technology:rwx /Technology/
二、客户端配置
2.1 Linux客户端安装Samba客户端
[root@Client ~]# yum -y install samba-client
已加载插件:langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 samba-client.x86_64.0.4.6.2-8.el7 将被 安装
...
已安装:
samba-client.x86_64 0:4.6.2-8.el7
作为依赖被安装:
samba-common-libs.x86_64 0:4.6.2-8.el7
完毕!
[root@Client ~]#
2.2 Linux客户端进行测试
[root@Client ~]# smbclient -L //192.168.43.128 -U Boss
Enter SAMBA\Boss's password:
Domain=[SERVER] OS=[Windows 6.1] Server=[Samba 4.6.2]
Sharename Type Comment
--------- ---- -------
Public Disk
Sale Disk
Technology Disk
IPC$ IPC IPC Service (Samba 4.6.2)
Domain=[SERVER] OS=[Windows 6.1] Server=[Samba 4.6.2]
Server Comment
--------- -------
Workgroup Master
--------- -------
SAMBA SERVER
WORKGROUP HASEE-BAD
[root@Client ~]#
以上可以看到可以正常访问Samba服务器
2.3 Linux客户端将Samba服务器的共享目录进行本地挂载
将Samba服务器的共享目录进行本地多用户挂载
将Public目录以Boss身份登入,挂载到/Samba/Public目录下
将Sale目录以Sale1身份登入,挂载到/Samba/Sale_Sale1目录下
将Sale目录以Technology1身份登入,挂载到/Samba/Sale_Technology1目录下
将Technology目录以Technology1身份登入,挂载到/Samba/Technology目录下
[root@Client ~]# vim /etc/fstab
[root@Client ~]# cat /etc/fstab | grep -v "#" | grep -v "^$"
/dev/mapper/rhel-root / xfs defaults 0 0
UUID=303f3e9b-272c-45d4-b73d-54daff254def /boot xfs defaults 0 0
/dev/mapper/rhel-swap swap swap defaults 0 0
/dev/cdrom /mnt iso9660 defaults 0 0
# 共享目录 挂载点 username表示以哪个用户进行登录挂载
//192.168.43.128/Public /Samba/Public cifs multiuser,username=Boss,password=123,sec=ntlmssp 0 0
//192.168.43.128/Sale /Samba/Sale_Sale1 cifs multiuser,username=Sale1,password=123,sec=ntlmssp 0 0
//192.168.43.128/Sale /Samba/Sale_Technology1 cifs multiuser,username=Technology1,password=123,sec=ntlmssp 0 0
//192.168.43.128/Technology /Samba/Technology cifs multiuser,username=Technology1,password=123,sec=ntlmssp 0 0
[root@Client ~]# mkdir -p /Samba/Public
[root@Client ~]# mkdir /Samba/Sale_Sale1
[root@Client ~]# mkdir /Samba/Sale_Technology1
[root@Client ~]# mkdir /Samba/Technology
[root@Client ~]# mount -a
[root@Client ~]#
进行权限测试
[root@Client ~]# cd /Samba/
[root@Client Samba]# ls
Public Sale_Sale1 Sale_Technology1 Technology
[root@Client Samba]# cd Public/
[root@Client Public]# touch file1
[root@Client Public]# ll
总用量 0
-rw-r--r-- 1 1003 1003 0 12月 11 04:55 file1
[root@Client Public]# cd ..
[root@Client Samba]# cd Sale_Sale1/
[root@Client Sale_Sale1]# touch file1
[root@Client Sale_Sale1]# ll
总用量 0
-rw-r--r-- 1 1001 1001 0 12月 11 04:56 file1
[root@Client Sale_Sale1]# cd ..
[root@Client Samba]# cd Sale_Technology1/
[root@Client Sale_Technology1]# touch file1
touch: 无法创建"file1": 权限不够
[root@Client Sale_Technology1]# cd ..
[root@Client Samba]# cd Technology/
[root@Client Technology]# touch file1
[root@Client Technology]# ll
总用量 0
-rw-r--r-- 1 1002 1002 0 12月 11 04:58 file1
[root@Client Technology]#
如上,在不同的目录中进行了文件权限测试
Public目录中,是以Boss身份登入挂载的,所以可以进行读写操作,创建文件的用户UID为1003,可以在服务端看到即为Boss账户的UID
Sale_Sale1目录中,是将Sale共享目录以Sale1身份登入挂载的,所以可以进行读写操作,文件的所有者UID为1001,即为Sale1账户的UID
Sale_Technology1目录中,是将Sale共享目录以Technology1身份登入挂载的,所以没有权限进行读写操作
Technology目录中,是将Technology共享目录以Technology1身份登入挂载的,所以可以进行读写操作,文件的所有者UID为1002,即为Technology1账户的UID
服务器端检查是否创建相应文件以及文件所有者信息
root@Server ~]# cd /Sale/
[root@Server Sale]# ll
总用量 0
-rw-r--r-- 1 Sale1 Sale 0 12月 11 2021 file1
[root@Server Sale]# cd /Technology/
[root@Server Technology]# ll
总用量 0
-rw-r--r-- 1 Technology1 Technology 0 12月 11 2021 file1
[root@Server Technology]# cd /Public/
[root@Server Public]# ll
总用量 0
-rw-r--r-- 1 Boss Boss 0 12月 11 2021 file1
[root@Server Public]#
三、Windows客户端进行测试
在Windows客户端进行访问测试 在此电脑中输入\192.168.43.128,进行访问测试 或Win +
R输入\192.168.43.128,进行访问测试 以不同的身份登入到Samba服务器,分别在不同的文件夹中创建文件,查看是否具有权限
创建完成后,可以在服务端,查看相应的目录下是否存在该文件,以及该文件的所有者信息
在Windows客户端访问后,需要切换账户登录,则需要退出登录 在CMD中执行net use * /del /y命令,以清除所有远程