Samba文件服务器共享配置
一、共享需求:
- 建立公共目录public,开启匿名用户访问权限,所有人均可读写(方便但不安全)
- 建立public文件, 只有@admin组和admin、job用户可以进行读写,其余用户均不可以访问。要求:admin用户不能删除job用户创建的文件,反之亦然。
- 建立hr共享文件,要求用户名和密码验证访问,只有@hr组和hr1,job的用户可以进行访问。要求:@hr组和hr1具有完全控制的权限,job用户只有读取的权限。
- 建立eng共享文件,除了@eng组和eng1的用户可以访问,其他人均不可以访问,也不可以修改。
- 建立 act共享文件,只有@act和act1、admin可以访问和读写。要求:除了act1和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 将用户加入组
[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
4.3 查看用户uid、组id和从属组id
[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用户(必须是系统本地用户)
5.1 smbpasswd(pdbedit也可以创建)
#与刚刚创建的系统用户密码不一样,此处的用户密码为访问samba共享服务的密码
smbpasswd常用参数:
smbpasswd –a 用户 #添加用户
smbpasswd –x 用户 #删除用户
smbpasswd –d 用户 #禁止用户
smbpasswd –e 用户. #启用用户
5.2 pdbedit –L #查看samba用户列表
[root@localhost ~]# pdbedit -L
admin:1000:
eng1:1002:
job:1003:
hr1:1001:
act1:1004:
六、创建共享文件夹
mkdir 文件名
mkdir –p 文件名 #-p表示批量建立多个文件夹
mkdir –p /opt/{act,eng,hr,public}
#使用命令ls查询在/目录下创建的文件夹
七、配置文件夹本地权限
7.1 ll查看文件夹的权限和所有者及附加组
说明:d表示目录,rwxrwxrwx表示所有者(u)、所属组(g)和其他用户(o),第一个root为所有者,第二个root为组,最后一个为文件目录
7.2使用chown配置文件夹所有者和附加组
[root@localhost ~]# chown eng1.eng /opt/eng
[root@localhost ~]# chown act1.act /opt/act
[root@localhost ~]# chown hr1.hr /opt/hr
7.3用chmod 配置本地文件夹权限均为777(实际中要根据实际需求进行设置)
chmod –R 777 /opt/hr
chmod –R 777 / opt/public
chmod –R 777 / opt/eng
chmod –R 777 / opt/act
7.4特殊权限 o+t(案例2中使用)
需求:为了保证个人共享文件不被其他用户删除,这里使用O+T对public权限进行限定,即每个共享用户尽管都有读写的权限,但是只能删除本身创建的文件或目录,不能删除其他户的文件,同时设置管理员admin对该共享文件夹进行删除(不受控制)
7.4.1设置Sticky位权限
[root@localhost ~]# chmod 1777 /opt/public
或
[root@localhost ~]# chmod o+t /opt/public
7.4.2为了让管理员admin对该共享文件夹有完全控制权限,将public的所有者和组设置为admin
[root@localhost ~]# chown admin.admin /opt/public
八、关闭Filewalld和SElinux
(为了测试方便进行,生产环境中应根据实情况操作)
8.1临时关闭firewalld
8.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
8.3 SELinux安全策略中允许对samba访问(可选择此项1)
使用getsebool命令查询SELinux中的配置,如getsebool -a | grep samba
修改允许SELinux中对Samba服务访问
setsebool –P samba_enable_home_dirs=on
setsebool –P samba_export_all_rw=on
8.4永久关闭SELINUX(可选择此项2)
vim /etc/sysconfig/selinuxSELINUX=enforcing 改为SELINUX=disabled
查看SELinux中的samba服务状态
getsebool –a | grep samba
查看Samba服务端口
执行netstat –nutlp |grep smb查看smb服务端口是否开启
九、修改samba配置文件
注:修改配置文件前先备份一份!
使用命令:cp smb.conf smb.conf.bak
samba的配置文件保存在/etc/samba下,名称为smb.conf。使用vi /etc/samba/smb.conf或vim /etc/samba/smb.conf打开samba的配置文件。(注:vim命令需要手动安装)
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 #是否可见,yes
writeable = yes #是否可写,yes
guest ok = yes #是否开启匿名访问,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 #是否可见,yes
writeable = no #是否可写,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用户登录
注:如果没有出现此对话框,请按WIN+R打开运行窗口,输入net use \\IP地址或计算机名称 /del,清除网络访问的缓存。
试图删除job111文件夹,提示“需要来自LOCALHOST\job的权限才能对此文件夹进行更改”。
案例3
为了安全起见,需要将财务部门的共享进行隐藏,所有访问均不可见。只有@act和act1用户可以访问和修改。
3.1 编辑配置文件,添加下面:
[act]
comment = Act Files #描述共享,便于管理工作
path = /opt/act #指定要共享目录的路径
browseable = no #是否可见,no
;guest ok = yes #注释掉匿名访问
writeable = yes #是否可写,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 #是否可见,yes
;guest ok = yes
writeable = no #是否可写,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优先。
更多推荐
所有评论(0)