SAMBA 生产环境应用实例

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

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

1

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


#======================= 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权限。


[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配置文件正确性


[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 ServerVersion %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服务器的共享文件


[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 V3RSA/SHA256 Signature, key ID fd431d51: NOKEY

error: Failed dependencies:

    samba-common = 0:3.5.10-125.el6 isneeded 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.38\public145915755.png

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

1

、创建组和用户

[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账户中 

[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

、创建共享封建

[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


    #======================= GlobalSettings =====================================

    [global]

    workgroup = WORKGROUP  //

定义工作组,也就是windows中的工作组概念

    server string = Justin peng SambaServer Version %v  //

定义Samba服务器的简要说明

    netbios name = Justin_peng_Samba  //

定义windows中显示出来的计算机名称

    # --------------------------- LoggingOptions -----------------------------

    log file = /var/log/samba/log.%m //

定义Samba用户的日志文件,%m代表客户端主机名,Samba服务器会在指定的目录中为每个登陆主机建立不同的日志文件

    # ----------------------- StandaloneServer Options ------------------------

    security = user   //

用户级别,由提供服务的Samba服务器负责检查账户和密码

           passdb backend = tdbsam

    [homes]    //

设置用户宿主目录

            comment = HomeDirectories

            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/smbreload


重新载入 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 yourservice definitions

    [global]

        netbios name =JUSTIN_PENG_SAMBA

        server string = Justin peng SambaServer 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.38\it /del


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


[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 blocksavailable

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账户中:


[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 ~]#

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


[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:fmadminFM && 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:fmadminFM && 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:21CS

drwxr-xr-x 2 fmadmin  fmadmin  4096 12

月17 17:21FM

drwxr-xr-x 2 hradmin  hradmin  4096 12

月17 17:21HR

drwxr-xr-x 2 proadmin proadmin 4096 12

月17 17:21PRO

drwxr-xr-x 2 admin    admin    4096 12

月17 17:21Tools

drwxr-xr-x 2 tsadmin  tsadmin  4096 12

月17 17:21TS

[root@justin Share]# chmod 1775 CS FM HR PRO TS

[root@justin Share]# ll

总用量24

drwxrwxr-t 2 csadmin  csadmin  4096 12

月17 17:21CS

drwxrwxr-t 2 fmadmin  fmadmin  4096 12

月17 17:21FM

drwxrwxr-t 2 hradmin  hradmin  4096 12

月18 10:02HR

drwxrwxr-t 2 proadmin proadmin 4096 12

月17 17:21PRO

drwxr-xr-x 2 admin    admin    4096 12

月17 17:21Tools

drwxrwxr-t 2 tsadmin  tsadmin  4096 12

月17 17:21TS

[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:51CS

drwxrwx--T 2 fmadmin  fmadmin  4096 12

月17 17:19FM

drwxrwx--T 2 hradmin  hradmin  4096 12

月18 13:47HR

drwxrwx--T 2 proadmin proadmin 4096 12

月17 17:19PRO

drwxrwx--T 2 tsadmin  tsadmin  4096 12

月17 17:19TS

[root@justin home]# ll Share/

总用量24

drwxrwxr-x 2 csadmin  csadmin  4096 12

月17 17:21CS

drwxrwxr-x 2 fmadmin  fmadmin  4096 12

月17 17:21FM

drwxrwxr-x 2 hradmin  hradmin  4096 12

月18 10:02HR

drwxrwxr-x 2 proadmin proadmin 4096 12

月17 17:21PRO

drwxrwxr-x 2 admin    admin    4096 12

月17 17:21Tools

drwxrwxr-x 2 tsadmin  tsadmin  4096 12

月17 17:21TS

[root@justin home]#

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


#======================= 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 SambaServer 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 ofHR.

     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 ofFM.

     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 ofTS.

     path = /home/TS/

     public = no

     admin users = tsadmin

     valid users = @tsadmin

     writable = yes

     create mask = 0750

     directory mask = 0750

[PRO]

     comment = This is a PROdirectory.

     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 ofCS.

     path = /home/CS/

     public = no

     admin users = csadmin

     valid users = @csadmin

     writable = yes

     create mask = 0750

     directory mask = 0750

[Share]

     comment = This is a sharedirectory.

     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


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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
6月前
|
运维 Kubernetes 网络安全
Ansible自动化运维工具之主机管理与自定义配置文件(2)
Ansible自动化运维工具之主机管理与自定义配置文件(2)
|
4月前
|
Ubuntu 测试技术 Linux
|
4月前
|
监控 前端开发 应用服务中间件
Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
413 0
|
8月前
|
运维 监控
【运维知识进阶篇】Zabbix5.0稳定版详解10(Zabbix自动注册+Ansible自动部署,实现一条命令监控任意主机)
【运维知识进阶篇】Zabbix5.0稳定版详解10(Zabbix自动注册+Ansible自动部署,实现一条命令监控任意主机)
112 0
|
11月前
|
存储 运维 安全
Jenkins系统+独立部署系统
Jenkins系统+独立部署系统
104 0