一、共享需求:
- 建立公共目录public,开启匿名用户访问权限,所有人均可读写(方便但不安全)
- 建立public文件, 只有@admin组和admin、job用户可以进行读写,其余用户均不可以访问。要求:admin用户不能删除job用户创建的文件,反之亦然。
- 建立hr共享文件,要求用户名和密码验证访问,只有@hr组和hr1,job的用户可以进行访问。要求:@hr组和hr1具有完全控制的权限,job用户只有读取的权限。
- 建立eng共享文件,除了@eng组和eng1的用户可以访问,其他人均不可以访问,也不可以修改。
- 建立 act共享文件,只有@act和act1、admin可以访问和读写。要求:除了act和act组及admin外的其他都不可见。
二、添加系统本地用户
(创建不能用于系统登录的系统帐户和不带家目录的用户)
useradd –M –s /sbin/nologin admin hr1 act1 eng1
useradd job
三、为用户设置密码(均改为123456)
passwd admin
passwd hr1
passwd act1
passwd eng1
passwd job
四、创建组,并将用户加入到其中
4.1 创建组
groupadd hr
groupadd act
groupadd eng
groupadd user
4.2 将用户加入组
gpasswd –a hr1 hr
gpasswd –a act1 act
gpasswd –a eng1 eng
gpasswd –a admin eng act hr
配置如下:
[root@localhost ~]# gpasswd -a act1 act
Adding user act1 to group act
[root@localhost ~]# gpasswd -a hr1 hr
Adding user hr1 to group hr
[root@localhost ~]# gpasswd -a eng1 eng
Adding user eng1 to group eng
[root@localhost ~]# id eng1
uid=1002(eng1) gid=1002(eng1) groups=1002(eng1),1028(eng)
[root@localhost ~]# id hr1
uid=1001(hr1) gid=1001(hr1) groups=1001(hr1),1027(hr)
[root@localhost ~]# id act1
uid=1004(act1) gid=1005(act1) groups=1005(act1),1006(act)
四、添加samba用户(必须是系统本地用户)
4.1 smbpasswd(pdbedit也可以创建)
#与刚刚创建的系统用户密码不一样,此为访问samba共享服务的密码
常用参数:
smbpasswd –a 用户 #添加用户
smbpasswd –x 用户 #删除用户
smbpasswd –d 用户 #禁止用户
smbpasswd –e 用户. #启用用户
4.2 pdbedit –L #查看samba用户列表
[root@localhost ~]# pdbedit -L
admin:1000:
eng1:1002:
job:1003:
hr1:1001:
act1:1004:
五、创建共享文件夹
mkdir 文件名
mkdir –p 文件名 #批量建立多个文件夹
mkdir –p /opt/{act,eng,hr,public}
#使用命令ls查询在/目录下创建的文件夹
六、配置文件夹本地权限
6.1 ll查看文件夹的权限和所有者及附加组
说明:d表示目录,rwxrwxrwx表示所有者(u)、所属组(g)和其他用户(o),第一个root为所有者,第二个root为组,最后一个为文件目录
6.2使用chown配置文件夹所有者和附加组
[root@localhost ~]# chown eng1.eng /opt/eng
[root@localhost ~]# chown act1.act /opt/act
[root@localhost ~]# chown hr1.hr /opt/hr
6.3用chmod 配置本地文件夹权限均为777(实际中要根据实际需求进行设置)
chmod –R 777 /opt/hr
chmod –R 777 / opt/public
chmod –R 777 / opt/eng
chmod –R 777 / opt/act
6.4特殊权限 o+t(案例2中使用)
需求:为了保证个人共享文件不被其他用户删除,这里使用O+T对public权限进行限定,即每个共享用户尽管都有读写的权限,但是只能删除本身创建的文件或目录,不能删除其他户的文件,同时设置管理员admin对该共享文件夹进行删除(不受控制)
6.4.1设置Sticky位权限
[root@localhost ~]# chmod 1777 /opt/public
或
[root@localhost ~]# chmod o+t /opt/public
6.4.2为了让管理员admin对该共享文件夹有完全控制权限,将public的所有者和组设置为admin
[root@localhost ~]# chown admin.admin /opt/public
七、关闭Filewalld和SElinux
(为了测试方便进行,生产环境中应慎重操作)
7.1临时关闭firewalld
7.2在firewalld中放行samba服务(主要是放开samba所需要的端口139/445,137/138)
[root@localhost ~]# firewall-cmd --zone=public --add-port=139/tcp --permanent
success
[root@localhost ~]# firewall-cmd --zone=public --add-port=445/tcp --permanent
success
[root@localhost ~]# firewall-cmd --zone=public --add-port=137/udp --permanent
success
[root@localhost ~]# firewall-cmd --zone=public --add-port=138/udp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# systemctl restart firewalld.service
[root@localhost ~]# systemctl is-active firewalld.service
active
7.3 SELinux安全策略中允许对samba访问
查询SELinux中的配置
修改允许SELinux中对Samba服务访问
setsebool –P samba_enable_home_dirs=on
setsebool –P samba_export_all_rw=on
7.4永久关闭SELINUX
vim /etc/sysconfig/selinuxSELINUX=enforcing 改为SELINUX=disabled
查看SELinux中的samba服务状态
getsebool –a | grep samba
八、查看Samba服务端口
netstat –nutlp |grep smb
九、修改samba配置文件
注:修改配置文件前先备份一份!
使用命令:cp smb.conf smb.conf.bak
samba的配置文件保存在/etc/samba下,名称为smb.conf
使用vi或vim /etc/samba/smb.conf打开samba的配置文件。
vim视图:
vi视图:
注:如果要允许匿名用户访问,需在global下添加一条命令,如下:
[global]
workgroup = SAMBA
security = user
map to guest = bad user #添加这一条,表示允许匿名用户访问
十、Linux客户端游客访问测试
smbclient –L //192.168.147.147/opt/public #以匿名用户访问的方式,验证免密登陆
smbclient –L //192.168.147.147/opt/public –U job #以用户名和密码访问的方式,验证用户登陆
十一、Windows客户端的共享配置
案例1
建立public公共共享目录,所有人均可以访问和读写操作
1.1 配置文件:
[public]
comment = Public Folder
path = /opt/public
browseable = yes
writeable = yes
guest ok = yes
1.2 客户端登录访问
户使用免密码登录后,在public中创建的文件123,所有者和所附属组均为nobody
注:经测试,匿名用户可以删除其他匿名用户创建的文件,因为在samba中匿名用户默认是nobdy,初始组也是nobody。但是不能删除其他非nobody用户创建的文件,如上图的1,2和3文件夹。
案例2:
public共享目录之前是允许所有人访问,并且每个人都可以修改。从信息安全的角度来说这是不合理的。现在将public的免密访问改为用户名和密码验证使用,只允许@admin,admin和job用户可以进行读写操作,其他人没有访问权限。同时用户admin和job创建的文件夹及文件,只有所有者才能删除,其他用户均不可删除,尽管都有修改的权限。
2.1、配置文件如下:
[public]
comment = Public Folder
path = /opt/public
browseable = yes
writeable = no
valid users = @admin,admin,job
write list = @admin,admin,job
;guest ok = yes
2.2、修改public权限为1777,添加stick位权限
[root@localhost ~]# chmod -R 1777 /opt/public
进入/opt目录,ll查看,本地文件的权限变成了drwxrwxrwt,这个t(小写t生效)表示就是sticks权限,是针对文件目录设置的一种特殊权限。
2.3、用户访问测试
打开“运行”窗口,输入\192.168.147.147,双击打开public文件目录,提示要输入用户名和密码验证。这里输入job(在Windows有域环境下,表示用户名登录)和密码,点确定登录。
删除admin用户创建的文件夹admin时,提示“你需要权限来执行操作”。
job用户再创建一个job111文件目录,同时在目录下创建多个文本文件。
然后客户端切换admin用户登录
试图删除job111文件夹,提示“需要来自LOCALHOSTjob的权限才能对此文件夹进行更改”。
案例3
为了安全起见,需要将财务部门的共享进行隐藏,所有访问均不可见。只有@act和act1用户可以访问和修改。
3.1 编辑配置文件,添加下面:
[act]
comment = Act Files
path = /opt/act
browseable = no
;guest ok = yes
writeable = yes
valid users = @act,act1
write list = @act,act1
3.2重启samba服务
[root@localhost~]#systemctl restart smb
3.3 由于开启了访问访问,所以隐藏的文件是看不到的,必须是完整路径进行访问 :
3.4 新建一个act文件夹
3.5 进入/opt/act目录,ll查看act1用户创建了一个文件夹act
案例4
建立hr共享文件,要求用户名和密码验证访问,只有@hr组和hr1,job的用户可以进行访问。其中@hr组和hr1具有完全控制的权限,job用户只有读取的权限。
4.1 编辑配置文件,添加下面:
[hr]
comment = HR Share
path = /opt/hr
browseable = yes
;guest ok = yes
writeable = no
write list = @hr,hr1
read list = job
valid users = @hr,hr1,job
4.2重启samba服务
4.3 用户hr1登录
创建二个文件夹
4.4用户job登录
无法新建文件,显示“您需要权限来执行此操作”
案例5
禁止局域网某个主机访问samba共享
配置文件如下:
[public]
comment = Public Folder
path = /opt/public
browseable = yes
writeable = no
valid users = @admin,admin,job
write list = @admin,admin,job
;hosts deny = 192.168.147. except 192.168.147.1 #禁止192.168.147.0的网段访问除了192.168.147.1主机
hosts deny = 192.168.147.1 #禁止192.168.147.1主机访问
;hosts allow = 192.168.147. except 192.168.147.2 #允许192.168.147.0的网段访问除了192。168.147.2主机
;hosts deny = 192.168.147.
;hosts allow = 192.168.147.1 #拒绝192.168.147.0的网段访问,但允许192.168.147.1主机可以访问,deny和allow同时存在时,allow优先。



