文件共享③Samba实例

案例一、公司现有一个工作组workgroup,需要添加samba服务器作为文件服务器,并发布共享目录/home/share,共享名为public,此共享目录允许所有员工访问。

1、主配置文件/etc/samba/smb.conf修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#======================= Global Settings =====================================
[global]
workgroup = WORKGROUP  //定义工作组,也就是windows中的工作组概念
server string = Justin peng Samba Server Version %v  //定义Samba服务器的简要说明
netbios name = Justin_peng_Samba  //定义windows中显示出来的计算机名称
# --------------------------- Logging Options -----------------------------
log file /var/log/samba/log.%m //定义Samba用户的日志文件,%m代表客户端主机名,Samba服务器会在指定的目录中为每个登陆主机建立不同的日志文件
# ----------------------- Standalone Server Options ------------------------
security = share   //共享级别,用户不需要账号和密码即可访问
#       passdb backend = tdbsam
# ----------------------- 文末添加以下 ------------------------
[public]
comment = Public Stuff
path = /home/share
public = yes

2、建立共享目录

设置了共享目录/home/share,需要建立该目录,由于要设置匿名用户可以下载或上传共享文件,所以要给/share目录授权为nobody权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@justin bin]# mkdir /home/share
[root@justin bin]# touch /home/share/{aaa.txt,bbb.txt}
[root@justin bin]# ls /home/share
aaa.txt  bbb.txt
[root@justin bin]# chown nobody:nobody /home/share/ -R
[root@justin bin]# ll /home/share/
总用量 0
-rw-r--r-- 1 nobody nobody 0 12月 17 13:44 aaa.txt
-rw-r--r-- 1 nobody nobody 0 12月 17 13:44 bbb.txt
[root@justin bin]# /etc/init.d/smb restart
关闭 SMB 服务:                                            [确定]
启动 SMB 服务:                                            [确定]
[root@justin bin]# /etc/init.d/nmb restart
关闭 NMB 服务:                                            [确定]
启动 NMB 服务:                                            [确定]
[root@justin bin]#

3、测试samba配置文件正确性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@justin bin]# 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 "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
    netbios name = JUSTIN_PENG_SAMBA
    server string = Justin peng Samba Server Version %v
    log file /var/log/samba/log.%m
    max log size = 50
    cups options = raw
[homes]
    comment = Home Directories
    read only = No
    browseable = No
[printers]
    comment = All Printers
    path = /var/spool/samba
    printable = Yes
    browseable = No
[public]
    comment = Public Stuff
    path = /home/share
    guest ok = Yes
[root@justin bin]#

4、访问samba共享文件

Server:RHEL6.3 10.15.72.38

Client: RHEL6.3 10.15.72.83

            Windows 10.15.72.73

  • 在Linux下访问Samba服务器的共享文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[root@justin ~]# smbclient //10.15.72.38/public
-bash: smbclient: command not found
[root@justin ~]# rpm -qa|grep samba
samba-common-3.6.9-164.el6.i686
samba-winbind-3.6.9-164.el6.i686
samba-winbind-clients-3.6.9-164.el6.i686
[root@justin ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@justin ~]# find /mnt/cdrom/Packages/ -name '*samba*'
/mnt/cdrom/Packages/samba-3.5.10-125.el6.i686.rpm
/mnt/cdrom/Packages/samba-client-3.5.10-125.el6.i686.rpm
/mnt/cdrom/Packages/samba-common-3.5.10-125.el6.i686.rpm
/mnt/cdrom/Packages/samba-winbind-3.5.10-125.el6.i686.rpm
/mnt/cdrom/Packages/samba-winbind-clients-3.5.10-125.el6.i686.rpm
/mnt/cdrom/Packages/sblim-cmpi-samba-1.0-1.el6.i686.rpm
[root@justin ~]# rpm -ivh /mnt/cdrom/Packages/samba-client-3.5.10-125.el6.i686.rpm
warning: /mnt/cdrom/Packages/samba-client-3.5.10-125.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
error: Failed dependencies:
    samba-common = 0:3.5.10-125.el6 is needed by samba-client-0:3.5.10-125.el6.i686
    samba-winbind-clients = 0:3.5.10-125.el6 is needed by samba-client-0:3.5.10-125.el6.i686
[root@justin ~]# yum install -y samba-client
Complete!
[root@justin ~]# rpm -qa|grep samba
samba-winbind-3.6.9-167.el6_5.i686
samba-winbind-clients-3.6.9-167.el6_5.i686
samba-client-3.6.9-167.el6_5.i686
samba-common-3.6.9-167.el6_5.i686
[root@justin ~]# smbclient //10.15.72.38/public
Enter root's password:
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6]
smb: > ls
  .                                   D        0  Tue Dec 17 13:44:53 2013
  ..                                  D        0  Tue Dec 17 13:43:40 2013
  aaa.txt                                      0  Tue Dec 17 13:44:53 2013
  bbb.txt                                      0  Tue Dec 17 13:44:53 2013
        62915 blocks of size 131072. 58554 blocks available
smb: > q
[root@justin ~]#

客户端需要安装好samba-client,上面直接挂载用安装盘里软件包安装失败是依赖关系失败,系统安装的依赖包版本高于软件包里的samba-client版本,最后通过yum安装

  • 在windows下访问Samba服务器的共享文件

直接在运行里输入:\10.15.72.38public145915755.png

案例二、公司现有多个部门,因工作需要,将IT部的资料存放在samba服务器的/home/it 目录中集中管理,以便IT人员浏览,并且该目录只允许IT部员工访问

1、创建组和用户

1
2
3
4
5
6
7
8
9
10
11
12
[root@justin bin]# groupadd IT
[root@justin bin]# useradd -g IT -s /sbin/nologin justin1
[root@justin bin]# useradd -g IT -s /sbin/nologin justin2
[root@justin bin]# passwd justin1
更改用户 justin1 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@justin bin]# echo "justin123"|passwd --stdin justin2
更改用户 justin2 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@justin bin]#

由于设置了用户的shell为nologin,即使设置了密码也是无法登陆系统

2、将justin1、justin2假如samba账户中

1
2
3
4
5
6
7
8
9
[root@justin ~]# smbpasswd -a justin1
New SMB password:
Retype new SMB password:
Added user justin1.
[root@justin ~]# smbpasswd -a justin2
New SMB password:
Retype new SMB password:
Added user justin2.
[root@justin ~]#

smbpasswd命令的主要选项:

  -h:显示smbpasswd命令的帮助信息
-a:添加指定的Samba用户帐号
-d:禁用指定的用户帐号
-e:启用指定的用户帐号
-x:删除指定的用户帐号
不使用任何命令选项时可以用于修改Samba用户的密码

3、创建共享封建

1
2
3
4
5
[root@justin bin]# mkdir /home/IT
[root@justin bin]# touch /home/IT/{ccc.txt,ddd.txt}
[root@justin bin]# echo "Samba test file1" > /home/IT/ccc.txt
[root@justin bin]# echo "Samba test file2" > /home/IT/ddd.txt
[root@justin bin]#

4、修改主配置文件/etc/samba/smb.conf

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    #======================= Global Settings =====================================
    [global]
    workgroup = WORKGROUP  //定义工作组,也就是windows中的工作组概念
    server string = Justin peng Samba Server Version %v  //定义Samba服务器的简要说明
    netbios name = Justin_peng_Samba  //定义windows中显示出来的计算机名称
    # --------------------------- Logging Options -----------------------------
    log file /var/log/samba/log.%m //定义Samba用户的日志文件,%m代表客户端主机名,Samba服务器会在指定的目录中为每个登陆主机建立不同的日志文件
    # ----------------------- Standalone Server Options ------------------------
    security = user   //用户级别,由提供服务的Samba服务器负责检查账户和密码
           passdb backend = tdbsam
    [homes]    //设置用户宿主目录
            comment = Home Directories
            browseable = no
            writable = yes
    ;       valid users = %S
    ;       valid users = MYDOMAIN\%S
    # ----------------------- 文末添加以下 ------------------------
    [public]
    comment = Public Stuff
    path = /home/share
    public = yes
    [IT]   //IT 组目录,只允许ts组成员访问
    comment = IT
    path = /home/it
    valid users = @IT
    [root@justin bin]# /etc/init.d/smb reload
    重新载入 smb.conf 文件:                                   [确定]
    [root@justin bin]# 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 "[public]"
    Processing section "[IT]"
    Loaded services file OK.
    Server role: ROLE_STANDALONE
    Press enter to see a dump of your service definitions
    [global]
        netbios name = JUSTIN_PENG_SAMBA
        server string = Justin peng Samba Server Version %v
        log file /var/log/samba/log.%m
        max log size = 50
        cups options = raw
    [homes]
        comment = Home Directories
        read only = No
        browseable = No
    [printers]
        comment = All Printers
        path = /var/spool/samba
        printable = Yes
        browseable = No
    [public]
        comment = Public Stuff
        path = /home/share
        guest ok = Yes
    [IT]
        comment = IT
        path = /home/IT
        valid users = @IT
    [root@justin bin]#

    在windows下访问Samba服务器的共享文件

直接在运行里输入:\10.15.72.38输入登陆信息

153017298.png

进入后有三个目录,public之前共享的目录,it本实例的共享,justin1登陆用户的主目录,这是主配置文件中[home]选项定

Tips:windows下查看和清除访问共享信息:

net use

net use \10.15.72.38it /del

  • 在Linux下访问Samba服务器的共享文件

1
2
3
4
5
6
7
8
9
10
[root@justin ~]# smbclient //10.15.72.38/IT -U justin1%justin
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.10-125.el6]
smb: > ls
  .                                   D        0  Tue Dec 17 16:31:08 2013
  ..                                  D        0  Tue Dec 17 16:30:47 2013
  aaa.txt                                     16  Tue Dec 17 16:31:26 2013
  bbb.txt                                     16  Tue Dec 17 16:31:30 2013
        62915 blocks of size 131072. 58553 blocks available
smb: > q
[root@justin ~]#

案例三、实现不同的用户访问同一个共享目录具有不同的权限

需求:

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。
  Tools管理员账号:admin。091850710.png

创建用户并加入到samba账户中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@justin ~]# useradd -s /sbin/nologin hradmin
[root@justin ~]# useradd -g hradmin -s /sbin/nologin hruser
[root@justin ~]# useradd -s /sbin/nologin fmadmin
[root@justin ~]# useradd -g fmadmin -s /sbin/nologin fmuser
[root@justin ~]# useradd -s /sbin/nologin tsadmin
[root@justin ~]# useradd -g tsadmin -s /sbin/nologin tsuser
[root@justin ~]# useradd -s /sbin/nologin proadmin
[root@justin ~]# useradd -g proadmin -s /sbin/nologin prouser
[root@justin ~]# useradd -s /sbin/nologin csadmin
[root@justin ~]# useradd -g csadmin -s /sbin/nologin csuser
[root@justin ~]# useradd -s /sbin/nologin admin
[root@justin ~]# smbpasswd -a hradmin
New SMB password:
Retype new SMB password:
Added user hradmin.
[root@justin ~]# smbpasswd -a hruser
[root@justin ~]# smbpasswd -a fmadmin
[root@justin ~]# smbpasswd -a fmuser
[root@justin ~]# smbpasswd -a tsadmin
[root@justin ~]# smbpasswd -a tsuser
[root@justin ~]# smbpasswd -a proadmin
[root@justin ~]# smbpasswd -a prouser
[root@justin ~]# smbpasswd -a csadmin
[root@justin ~]# smbpasswd -a csuser
[root@justin ~]# smbpasswd -a admin
[root@justin ~]#

创建目录并修改目录归属:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[root@justin ~]# mkdir /home/{HR,FM,TS,PRO,CS,Share/{HR,FM,TS,PRO,CS,Tools}} -p
[root@justin 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@justin home]# ll -d /home/{HR,FM,TS,PRO,CS,Share}
drwxr-xr-x 2 csadmin  csadmin  4096 12月 17 17:19 /home/CS
drwxr-xr-x 2 fmadmin  fmadmin  4096 12月 17 17:19 /home/FM
drwxr-xr-x 2 hradmin  hradmin  4096 12月 17 17:19 /home/HR
drwxr-xr-x 2 proadmin proadmin 4096 12月 17 17:19 /home/PRO
drwxr-xr-x 8 admin    admin    4096 12月 17 17:21 /home/Share
drwxr-xr-x 2 tsadmin  tsadmin  4096 12月 17 17:19 /home/TS
[root@justin home]# cd Share/
[root@justin 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@justin Share]# ll -d {HR,FM,TS,PRO,CS,Tools}
drwxr-xr-x 2 csadmin  csadmin  4096 12月 17 17:21 CS
drwxr-xr-x 2 fmadmin  fmadmin  4096 12月 17 17:21 FM
drwxr-xr-x 2 hradmin  hradmin  4096 12月 17 17:21 HR
drwxr-xr-x 2 proadmin proadmin 4096 12月 17 17:21 PRO
drwxr-xr-x 2 admin    admin    4096 12月 17 17:21 Tools
drwxr-xr-x 2 tsadmin  tsadmin  4096 12月 17 17:21 TS
[root@justin Share]# chmod 1775 CS FM HR PRO TS
[root@justin Share]# ll
总用量 24
drwxrwxr-t 2 csadmin  csadmin  4096 12月 17 17:21 CS
drwxrwxr-t 2 fmadmin  fmadmin  4096 12月 17 17:21 FM
drwxrwxr-t 2 hradmin  hradmin  4096 12月 18 10:02 HR
drwxrwxr-t 2 proadmin proadmin 4096 12月 17 17:21 PRO
drwxr-xr-x 2 admin    admin    4096 12月 17 17:21 Tools
drwxrwxr-t 2 tsadmin  tsadmin  4096 12月 17 17:21 TS
[root@justin Share]# cd ..
[root@justin home]# chmod 1770 HR FM TS PRO CS
[root@justin home]# chmod -R 0775 Share/
[root@justin home]# ll -d FM HR TS PRO CS
drwxrwx--T 2 csadmin  csadmin  4096 12月 18 13:51 CS
drwxrwx--T 2 fmadmin  fmadmin  4096 12月 17 17:19 FM
drwxrwx--T 2 hradmin  hradmin  4096 12月 18 13:47 HR
drwxrwx--T 2 proadmin proadmin 4096 12月 17 17:19 PRO
drwxrwx--T 2 tsadmin  tsadmin  4096 12月 17 17:19 TS
[root@justin home]# ll Share/
总用量 24
drwxrwxr-x 2 csadmin  csadmin  4096 12月 17 17:21 CS
drwxrwxr-x 2 fmadmin  fmadmin  4096 12月 17 17:21 FM
drwxrwxr-x 2 hradmin  hradmin  4096 12月 18 10:02 HR
drwxrwxr-x 2 proadmin proadmin 4096 12月 17 17:21 PRO
drwxrwxr-x 2 admin    admin    4096 12月 17 17:21 Tools
drwxrwxr-x 2 tsadmin  tsadmin  4096 12月 17 17:21 TS
[root@justin home]#

修改Samba主配置文件/etc/samba/smb.conf:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#======================= Global Settings =====================================
[global]
workgroup = WORKGROUP  //定义工作组,也就是windows中的工作组概念
server string = Justin peng Samba Server Version %v  //定义Samba服务器的简要说明
netbios name = Justin_peng_Samba  //定义windows中显示出来的计算机名称
# --------------------------- Logging Options -----------------------------
log file /var/log/samba/log.%m //定义Samba用户的日志文件,%m代表客户端主机名,Samba服务器会在指定的目录中为每个登陆主机建立不同的日志文件
# ----------------------- Standalone Server Options ------------------------
security = user   //用户级别,由提供服务的Samba服务器负责检查账户和密码
       passdb backend = tdbsam
[homes]    //设置用户宿主目录
        comment = Home Directories
        browseable = no
        writable = yes
;       valid users = %S
;       valid users = MYDOMAIN\%S
# ----------------------- 文末添加以下 ------------------------
[public]
comment = Public Stuff
path = /home/share
public = yes
[IT]   //IT 组目录,只允许ts组成员访问
comment = IT
path = /home/it
valid users = @IT
[root@justin bin]# /etc/init.d/smb reload
重新载入 smb.conf 文件:                                   [确定]
[root@justin bin]# 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 "[public]"
Processing section "[IT]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
    netbios name = JUSTIN_PENG_SAMBA
    server string = Justin peng Samba Server Version %v
    log file /var/log/samba/log.%m
    max log size = 50
    cups options = raw
[homes]
    comment = Home Directories
    read only = No
    browseable = No
[printers]
    comment = All Printers
    path = /var/spool/samba
    printable = Yes
    browseable = No
[public]
    comment = Public Stuff
    path = /home/share
    guest ok = Yes
[IT]
    comment = IT
    path = /home/IT
    valid users = @IT
[HR]
     comment = This is a directory of HR.
     path = /home/HR/
     public = no
     admin users = hradmin
     valid users = @hradmin
     writable = yes     ;是允许这个目录可写,是mask首要条件。
     create mask = 0750   ;表示新建文件的权限,最前面的0是:sticky、suid 和 sgid 位.
     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 PRO directory.
     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@justin Share]# /etc/init.d/smb restart
关闭 SMB 服务:                                            [确定]
启动 SMB 服务:                                            [确定]
[root@justin Share]# /etc/init.d/nmb restart
关闭 NMB 服务:                                            [确定]
启动 NMB 服务:                                            [确定]
[root@justin Share]#

验证:

以用户hradmin登陆

095941881.png

进入hr、/share/hr目录后可以进行添加、删除、修改操作,进入非hr目录回弹出登陆筐,只有输入对应账户才可以进入,可以进入share下所有目录,但是除了hr目录外均无法创建新文件,提示无权限,

100606950.png

其他用户登陆经验证与要求一致

原文地址:https://www.cnblogs.com/studio313/p/6291868.html