一、共享需求:

  1. 建立公共目录public,开启匿名用户访问权限,所有人均可读写(方便但不安全)
  2. 建立public文件, 只有@admin组和admin、job用户可以进行读写,其余用户均不可以访问。要求:admin用户不能删除job用户创建的文件,反之亦然。
  3. 建立hr共享文件,要求用户名和密码验证访问,只有@hr组和hr1,job的用户可以进行访问。要求:@hr组和hr1具有完全控制的权限,job用户只有读取的权限。
  4. 建立eng共享文件,除了@eng组和eng1的用户可以访问,其他人均不可以访问,也不可以修改。
  5. 建立 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

samba 能添加多个目录吗_samba 能添加多个目录吗

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查询在/目录下创建的文件夹

samba 能添加多个目录吗_配置文件_02

七、配置文件夹本地权限

7.1 ll查看文件夹的权限和所有者及附加组

说明:d表示目录,rwxrwxrwx表示所有者(u)、所属组(g)和其他用户(o),第一个root为所有者,第二个root为组,最后一个为文件目录

samba 能添加多个目录吗_windows_03

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

samba 能添加多个目录吗_运维_04

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

samba 能添加多个目录吗_配置文件_05

修改允许SELinux中对Samba服务访问

setsebool –P samba_enable_home_dirs=on 

setsebool –P samba_export_all_rw=on

samba 能添加多个目录吗_windows_06

8.4永久关闭SELINUX(可选择此项2)

vim /etc/sysconfig/selinuxSELINUX=enforcing 改为SELINUX=disabled

samba 能添加多个目录吗_windows_07

查看SELinux中的samba服务状态

getsebool –a | grep samba

samba 能添加多个目录吗_运维_08

查看Samba服务端口

执行netstat –nutlp |grep smb查看smb服务端口是否开启

samba 能添加多个目录吗_windows_09

九、修改samba配置文件

注:修改配置文件前先备份一份!

使用命令:cp smb.conf smb.conf.bak

samba 能添加多个目录吗_服务器_10

samba的配置文件保存在/etc/samba下,名称为smb.conf。使用vi /etc/samba/smb.conf或vim /etc/samba/smb.conf打开samba的配置文件。(注:vim命令需要手动安装)

vim视图:

samba 能添加多个目录吗_服务器_11

vi视图:

samba 能添加多个目录吗_配置文件_12

注:如果要允许匿名用户访问,需在global下添加一条命令,如下:

[global]
        workgroup = SAMBA
        security = user
        map to guest = bad user    #添加这一条,表示允许匿名用户访问

十、Linux客户端游客访问测试

smbclient –L //192.168.147.147/opt/public   #以匿名用户访问的方式,验证免密登陆,如显示下图表示成功。

samba 能添加多个目录吗_运维_13

smbclient –L //192.168.147.147/opt/public –U job   #以用户名和密码访问的方式,验证用户登陆,如显示下图表示成功。

samba 能添加多个目录吗_服务器_14



十一、Windows客户端的共享访问配置

案例1

建立public公共共享目录,所有人均可以访问和读写操作

1.1 配置文件:

[public]
       comment = Public Folder     #描述共享,便于管理工作
        path = /opt/public        #指定要共享目录的路径
        browseable = yes       #是否可见,yes
        writeable = yes           #是否可写,yes
        guest ok = yes           #是否开启匿名访问,yes

1.2 客户端登录访问

samba 能添加多个目录吗_windows_15

户使用免密码登录后,在public中创建的文件123,所有者和所附属组均为nobody

samba 能添加多个目录吗_windows_16

注:经测试,匿名用户可以删除其他匿名用户创建的文件,因为在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权限,是针对文件目录设置的一种特殊权限。

samba 能添加多个目录吗_运维_17

2.3、用户访问测试

打开“运行”窗口,输入\\192.168.147.147,双击打开public文件目录,提示要输入用户名和密码验证。这里输入\job(在Windows有域环境下,\表示用户名登录)和密码,点确定登录。

samba 能添加多个目录吗_服务器_18

删除admin用户创建的文件夹admin时,提示“你需要权限来执行操作”。

samba 能添加多个目录吗_服务器_19

job用户再创建一个job111文件目录,同时在目录下创建多个文本文件。

samba 能添加多个目录吗_samba 能添加多个目录吗_20

然后客户端切换admin用户登录

注:如果没有出现此对话框,请按WIN+R打开运行窗口,输入net use \\IP地址或计算机名称  /del,清除网络访问的缓存。

samba 能添加多个目录吗_服务器_21

试图删除job111文件夹,提示“需要来自LOCALHOST\job的权限才能对此文件夹进行更改”。

samba 能添加多个目录吗_windows_22

samba 能添加多个目录吗_服务器_23

案例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 由于开启了访问访问,所以隐藏的文件是看不到的,必须是完整路径进行访问 :

samba 能添加多个目录吗_运维_24

输入用户名和密码登录

samba 能添加多个目录吗_服务器_25

3.4 新建一个act文件夹

samba 能添加多个目录吗_samba 能添加多个目录吗_26

3.5 进入/opt/act目录,ll查看act1用户创建了一个文件夹act

samba 能添加多个目录吗_samba 能添加多个目录吗_27

案例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
        write list = @hr,hr1     #可以写入的用户和组(@组)
        read list = job    #只能读取的用户
        valid users = @hr,hr1,job    #有效用户,除此列表之外的用户禁止

4.2重启samba服务

samba 能添加多个目录吗_运维_28

4.3 用户hr1登录

samba 能添加多个目录吗_配置文件_29

创建二个文件夹

samba 能添加多个目录吗_运维_30

4.4用户job登录

samba 能添加多个目录吗_samba 能添加多个目录吗_31

无法新建文件,显示“您需要权限来执行此操作”

samba 能添加多个目录吗_samba 能添加多个目录吗_32

案例5

禁止局域网某个主机访问samba共享

配置文件如下:

[public]
        comment = Public Folder
        path = /opt/public
        browseable = yes
        writeable = no
        valid users = @admin,admin,job
        write list = @admin,admin,job
#禁止192.168.147.0的网段访问除了192.168.147.1主机
#禁止192.168.147.1主机访问
 #允许192.168.147.0的网段访问除了192。168.147.2主机
        ;hosts deny = 192.168.147.

#拒绝192.168.147.0的网段访问,但允许192.168.147.1主机可以访问,deny和allow同时存在时,allow优先。

samba 能添加多个目录吗_运维_33