路漫漫其修远兮
吾将上下而求索

samba服务配置

1、简介

        Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。

  Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面

  SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。
Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。

  组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。

  例如,某台Samba服务器的IP地址为10.0.0.163,对应的工作组名称为davidsamba,那么在Windows的IE浏览器输入下面两条指令都可以访问共享文件。其实这就是Windows下查看Linux Samba服务器共享文件的方法。
  \\10.0.0.163\共享目录名称
  \\davidsamba\共享目录名称

  Samba服务器可实现如下功能:WINS和DNS服务; 网络浏览服务; Linux和Windows域之间的认证和授权; UNICODE字符集和域名映射;满足CIFS协议的UNIX共享等。

简单的总结

        samba能够实现文件共享,可以不用下载到本地的机器就可以直接编辑共享文件,然后实时保存。比较方便,既能实现linux和linux互相访问,还能实现linux和window之间互相访问,共享数据

        smb主要是微软的在windows上面的通信协议(就是网上邻居功能),为了能让linux和windows之间共享文件,在linux上面部署一个软件samba,这个软件可以模拟smb协议,这样linux就可以模拟成为一个windows的网上邻居客户端,同时让linux也拥有一个NetBIOS名称,在windos端看来,linux就是另外一个windows客户端

        samba还有一个服务是打印机服务,这里用不到

image.png

2、环境

        系统:centos6.8

        192.168.170.10:samba服务端

        192.168.170.30:windows端客户端

3、安装包说明

yum list all | grep samba
samba-client.x86_64     //客户端软件,主要提供linux主机作为客户端时,所需要的工具指令集,可以访问windows的网上邻居
samba4-libs.x86_64
samba-common.x86_64     //主要提供samba服务器的设置文件与设置文件语法检验程序testparm
samba.x86_64            //服务器端软件,主要提供samba服务器的守护程序,共享文档,日志的轮替,开机默认选项

4、安装

[root@localhost ~]#yi samba
[root@localhost ~]#rpm -ql samba
/etc/logrotate.d/samba
/etc/openldap/schema
/etc/openldap/schema/samba.schema
/etc/pam.d/samba
/etc/rc.d/init.d/nmb
/etc/rc.d/init.d/smb
/etc/samba/smbusers
/usr/bin/eventlogadm
/usr/bin/mksmbpasswd.sh
/usr/bin/smbstatus
/usr/sbin/nmbd
/usr/sbin/smbd

Samba服务器安装完毕,会生成配置文件目录/etc/samba和其它一些samba可执行命令工具,/etc/samba/smb.conf是samba的核心配置文件,这个配置文件是common包提供的

/etc/init.d/smb:是samba的启动/关闭文件

/etc/init.d/nmb:是samba的网络名称解析服务,这两个服务是各自独立的,如果是只有linux与linux之间共享,不与windows之间共享,则nmbd就可以不启动,这个是为了在网上邻居建立一个网络名字,如果有windows主机,这两个服务都要启动

nmbd – NetBIOS name server to provide NetBIOS over IP naming services to clients

smbd – server to provide SMB/CIFS services to clients

配置文件,在这里面

[root@localhost ~]#rpm -ql samba-common
/etc/samba
/etc/samba/lmhosts
/etc/samba/smb.conf

5、启动服务

[root@localhost ~]#service nmb start
Starting NMB services:                                     [  OK  ]
[root@localhost ~]#service smb start
Starting SMB services:                                     [  OK  ]

监听的端口比较多

[root@localhost ~]#ss -tunlp | grep mbd	#监听端口好多
udp    UNCONN     0      0        192.168.175.255:137                   *:*      users:(("nmbd",4230,12))
udp    UNCONN     0      0         192.168.175.11:137                   *:*      users:(("nmbd",4230,11))
udp    UNCONN     0      0                      *:137                   *:*      users:(("nmbd",4230,9))
udp    UNCONN     0      0        192.168.175.255:138                   *:*      users:(("nmbd",4230,14))
udp    UNCONN     0      0         192.168.175.11:138                   *:*      users:(("nmbd",4230,13))
udp    UNCONN     0      0                      *:138                   *:*      users:(("nmbd",4230,10))
tcp    LISTEN     0      50                     *:445                   *:*      users:(("smbd",4248,28))
tcp    LISTEN     0      50                    :::445                  :::*      users:(("smbd",4248,26))
tcp    LISTEN     0      50                     *:139                   *:*      users:(("smbd",4248,29))
tcp    LISTEN     0      50                    :::139                  :::*      users:(("smbd",4248,27))

137,138是nbd的服务类似于dns解析服务,udp报文。139,445是sbd服务,设置防火墙需要根据需求更改

================

下面是编译安装的步骤,此版本修复了远程执行漏洞

安装必要的rpm包

yi nfs4-acl-tools libacl-devel acl libacl python-devel compat-openldap apr-util-ldap openldap-devel python-ldap openldap gnutls-devel

下载安装包,安装

wget https://download.samba.org/pub/samba/stable/samba-4.6.5.tar.gz
tar xf samba-4.6.5.tar.gz
cd samba-4.6.5
./configure --prefix=/usr/local/samba
make && make install

加入动态链接

vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/samba/lib

执行下面的命令重载配置
ldconfig

复制配置文件

cp examples/smb.conf.default /usr/local/samba/etc/smb.conf

添加服务文件

服务文件.zip

添加环境变量

[root@master /usr/local/samba/bin]#cat /etc/profile.d/samba.sh
PATH=/usr/local/samba/bin:/usr/local/samba/sbin:$PATH
export PATH
[root@master /usr/local/samba/bin]#. /etc/profile.d/samba.sh

添加开机启动

chmod +x /etc/init.d/nmb 
chmod +x /etc/init.d/smb 
chkconfig --add nmb
chkconfig --add smb
chkconfig nmb on
chkconfig smb on

开放防火墙

-A INPUT -p udp --dport 137 -j ACCEPT
-A INPUT -p udp --dport 138 -j ACCEPT
-A INPUT -p tcp --dport 139 -j ACCEPT
-A INPUT -p tcp --dport 445 -j ACCEPT

6、配置文件说明,下面以编译安装的配置文件说明

这里是官方的配置参考文件,以官方为准,新版本的配置和以前版本的配置不同,需要注意:https://wiki.samba.org/index.php/User_Documentation

/usr/local/samba/etc/smb.conf

配置文件分为:

        global设置全局生效

        每共享的专用配置,[共享名] 如果专用设置和全局设置不同,专用生效

配置项等号两边可以有空格

;表示注释

全局配置 

workgroup = MYGROUP	#哪个域

server string = Samba Server Version %v	当网上邻居鼠标放到这个图标上面的时候会显示出来的主机信息,注释

netbios name = MYSERVER		#在window上看到的samba的名字,网上邻居

display charset = :当前samba服务所用的字符集

unix charset = :当前linux主机使用的字符集

dos charset = :windos端字符集,根据实际情况设置,设置每个平台的字符集,
例如如果window上使用字符集utf8,则将dos charset设置为字符集utf8,这样在windows上显示会转换为该字体,否则可能出现乱码

interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 	#监听接口

hosts allow = 127. 192.168.12. 192.168.13.	#客户端白名单,默认所有主机能访问
说明:表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny 与hosts allow 刚好相反。
例如:hosts allow=172.17.2.EXCEPT172.17.2.50
表示容许来自172.17.2.*的主机连接,但排除172.17.2.50
hosts allow=172.17.2.0/255.255.0.0
表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接
hosts allow=M1,M2
表示容许来自M1和M2两台计算机连接
hosts allow=@pega
表示容许来自pega网域的所有计算机连接

log file = /var/log/samba/log.%m	
说明:设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),
表示对每台访问Samba Server的机器都单独记录一个日志文件。如果pc1、pc2访问过Samba Server,就会在/var/log/samba目录下留下log.pc1和log.pc2两个日志文件。
可以不使用宏,将%m删除,所有的放到一个日志文件中

max log size = 50	#日志文件滚动上限,超过滚动,单位(KB),0表示不限制

security = user	#取值:share:匿名共享,没有安全性;user:使用samba自己管理的账号和密码进行用户认证,
用户必须是操作系统用户,但是密码非为os用户的密码,而是访问samba服务的专用密码,domain:使用ds进行用户认证;默认设置就可以

passdb backend = tdbsam	#密码文件的格式
tdbsam: 该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。
passdb.tdb用户数据库 可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。

我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的 参数很多,我们列出几个主要的。
  pdbedit –a username:新建Samba账户。
  pdbedit –x username:删除Samba账户。
  pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
  pdbedit –Lv:列出Samba用户列表的详细信息。
  pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
  pdbedit –c “[]” –u username:恢复该Samba用户的账号。

下面这个参数非常重要,具体可以看参考文档,新版本新增的,如果不加这个,则无法共享公开文件
map to guest = Bad User

#如果目录有软链要访问,使用下面的
follow symlinks = yes
wide links = yes
unix extensions = no

共享配置

[共享名] 可以跟目录名不同,是网上邻居上面看到的名字

comment 说明:comment是对该共享的描述,可以是任意字符串。windows上面鼠标放上去可以显示的信息

path = 共享目录路径
说 明:path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes] 共享域。
例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,
这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,
否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用 户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机
器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以 这样写:path = /home/share/%m 。

browseable = yes/no    说明:browseable用来指定该共享是否可以被所有用户看到。browseable = no 只要不是属主,就不将目录里面的文件列出来

writable = yes/no    说明:writable用来指定该共享路径是否可写。是否可写,共享权限,不是文件系统权限

admin users = 该共享的管理者    说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。
在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。
例如:admin users =david,sandy(多个用户中间用逗号隔开)。

valid users = 允许访问该共享的用户
说明:valid users用来指定允许访问该共享资源的用户。
例如:valid users = david,@dave,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@组名”表示。)

invalid users = 禁止访问该共享的用户
说明:invalid users用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)

write list = 允许写入该共享的用户
说明:write list用来指定可以在该共享下写入文件的用户。
例如:write list = david,@dave

public = yes/no
说明:public用来指定该共享是否允许guest账户访问。

guest ok = yes/no
说明:意义同“public”,设置那个都可以

可用的宏列表

%m:客户端主机的NetBIOS用户名
%M:客户端的internet主机名,即hostname
%H:当前用户的家目录
%U:当前用户的用户名
%g:当前用户所属的组名
%h:当前samba主机的hostname
%I:客户端主机的ip
%T:当前日期时间

Samba安装好后,使用testparm命令可以测试smb.conf配置是否正确。使用testparm –v命令可以详细的列出smb.conf支持的配置参数。

访问samba共享

linux:smbclient:交互式命令客户端
	mount -t cifs:挂载文件系统,这个文件系统为微软的cifs类型的,指定
windows
	\\host or ip\path

添加一个系统用户到samba上面可以访问samba服务,就像http的密码设置一样

smbpasswd [option] passwd
	-a:添加用户
	-x:删除
	-d:禁用
	-e:启用

7、案例一

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

[root@master /usr/local/samba/etc]#cat smb.conf

[global]
   workgroup = MYGROUP
   server string = Samba Server
   map to guest = Bad User
[public]
   comment = Public Stuff
   path = /share
   public = yes
   writable = no

   
   

[root@localhost /]#mkdir /share
[root@localhost /share]#cp /etc/fstab .
[root@localhost /share]#ll
total 4
-rw-r--r-- 1 root root 899 Apr 29 01:30 fstab

[root@localhost /share]#testparm    #测试配置是否正确
	
[root@localhost /etc/samba]#service smb reload
Reloading smb.conf file:                                   [  OK  ]

在window上资源管理器输入:\\192.168.170.10\public    访问正常,但是只能查看,不能新建文件

在192.168.170.12客户端访问,正常

[root@localhost ~]#smbclient //192.168.170.10/public
Enter root's password: 
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-33.el6]
smb: \> ls
  .                                   D        0  Sat Apr 29 01:30:16 2017
  ..                                 DR        0  Sat Apr 29 01:26:21 2017
  fstab                                      899  Sat Apr 29 01:30:16 2017

		49086 blocks of size 1048576. 41679 blocks available

8、案例二

        公司现有多个部门,因工作需要,将operation部的资料存放在samba服务器的/ops 目录中集中管理,以便operation人员浏览,并且该目录只允许operation部员工访问和修改

操作过程:先在linux上添加一个ops组,然后andy和bob都属于这个组内的成员,为了测试再添加一个用户tom作权限对比测试,添加完成后都要在linux上设置用户的密码,不然登录不上samba,

[root@localhost ~]#groupadd ops    
[root@localhost ~]#useradd -G ops -s /sbin/nologin andy
[root@localhost ~]#useradd -G ops -s /sbin/nologin bob    #附加组为ops
[root@localhost ~]#useradd -s /sbin/nologin tom

[root@localhost ~]#passwd andy
Changing password for user andy.
New password: 2345
[root@localhost ~]#passwd bob
Changing password for user bob.
New password: 2345
[root@localhost ~]#passwd tom
Changing password for user tom.
New password: 2345

[root@localhost ~]#id andy
uid=501(andy) gid=502(andy) groups=502(andy),501(ops)

[root@localhost ~]#groupmems -g ops -l    #查看添加成功
andy  bob

在samba上将这三个用户添加上,这里的密码是在windows上面输入的密码

[root@localhost ~]#pdbedit -a andy
New SMB password:3456
Retype new SMB password:
Added user andy.
[root@localhost ~]#pdbedit -a bob
New SMB password:3456
Retype new SMB password:
Added user bob.
[root@localhost ~]#pdbedit -a tom
New SMB password:3456
Retype new SMB password:
Added user tom.

创建需要的目录,权限先不设置,默认root

[root@localhost ~]#mkdir /ops
[root@localhost ~]#echo hello > /ops/a

设置samba的配置文件,安全设置为user,意思是所有用户都要登录才能访问

[root@master /usr/local/samba/etc]#cat smb.conf

[global]
    workgroup = MYGROUP
    server string = Samba Server
    map to guest = Bad User

[homes]
    comment = Home Directories
    browseable = no
    writable = yes
;    valid users = %S
;    valid users = MYDOMAIN\%S
	
[public]
    comment = Public Stuff
    path = /share
    public = yes
    writable = no

[operation]
    comment = operation file
    path = /ops
    valid users = andy,@ops
    writable = yes

重载服务

[root@localhost /etc/samba]#service smb reload
Reloading smb.conf file:                                   [  OK  ]

在windows输入:\\192.168.170.10  ,可以看到两个目录,因为andy的家目录被隐藏了,只有登录才可以看到

进入operation目录需要密码才能访问,登录andy用户

目录里面有三个文件夹,

        第一个文件夹是andy用户的家目录,上面的配置设置的是可写,并且/home/andy目录的属主和属组都是andy,所以andy用户可以对这个文件夹进行读写操作。browseable = no,只有每个用户登录上后才可以看到自己的家目录,别人看不到

        第二个文件夹是operation文件夹,因为andy用户属于ops组,上面的配置设置的是ops组用户成员都可以访问,所以可以看到operation文件夹里面的内容,但是不能对其进行写操作,虽然上面的配置文件写的是可写,但是在linux系统中,andy用户对/opt目录是只读权限,必须samba的配置文件和linux系统权限都符合条件,才可以对其进行写操作

        第三个文件夹是public目录,上面的配置文设置的是公共目录public=yes,也就是说对每个登录的用户来说,都可以看到这个目录,但是也不可写,因为系统的该目录的属主是root

Image 002.jpg

登录tom用户,

        看到是是tom的家目录,operation目录和public目录。

        tom家目录和public目录可以访问,

        但是operation目录访问的时候需要密码,无法访问,可以将operation目录设置为browseable = no,这样不是ops组的成员就看不到这个目录,这样比较好

image.png

为了让andy用户和bob用户对operation目录有写权限

[root@master /]#chown root.ops ops
[root@master /]#chmod 770 ops

然后bob用户在operation目录里面创建目录,可以创建

[root@master /ops]#ll
total 8
-rw-r--r-- 1 root root    6 Sep 11 13:55 a
drwxr-xr-x 2 bob  bob  4096 Sep 11 14:17 bob
[root@master /ops]#cd bob/
[root@master /ops/bob]#ll
total 0
-rwxr--r-- 1 bob bob 0 Sep 11 14:17 bob.txt

清除windows记住的密码

我们在使用windows访问局域网共享目录时,系统都会自己记住输入的访问密码,在注销或重启系统前可以很方便地再次访问该共享目录的内容而不需要重新输入密码。

这项功能本来很人性化,但对于我们系统管理员,经常要用不同的权限帐户来访问同一个目录,这样就会产生很多不便。

开始-运行-cmd,输入"net use * /delete"列出系统所保存的网络密码,按提示输入"y",

即可清空当前用户记住的所有网络密码,而且这个操作是无需注销系统的,

有问题不行,可以重启下服务,或者将用户删除,重新注册

9、案例3

实现不同的用户访问同一个共享目录具有不同的权限,便于管理和维护。基本上能满足一些企业用户的需求

a. 需求

1. 某公司有2部门,分别为:人事行政部(hr)、研发部(dev)

2. 各部门的文件夹只允许本部门员工有权访问;各部门之间交流性质的文件放到公用文件夹中。

3. 每个部门都有一个管理本部门文件夹的管理员账号和一个只能新建和查看文件的普通用户权限的账号。

4. 公用文件夹中分为存放工具的文件夹和存放各部门共享文件的文件夹。

5. 对于各部门自己的文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下新建文件及文件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访问,不能更改和删除。不是本部门用户不能访问本部门文件夹。

6. 对于公用文件夹中的各部门共享文件夹,各部门管理员具有完全控制权限,而各部门普通用户可以在该部门文件夹下新建文件及文件夹,并且对于自己新建的文件及文件夹有完全控制权限,对于管理员新建及上传的文件和文件夹只能访问,不能更改和删除。本部门用户(包括管理员和普通用户)在访问其他部门共享文件夹时,只能查看不能修改删除新建。对于存放工具的文件夹,只有管理员有权限,其他用户只能访问。

b. 规划

根据公司需求情况,现做出如下规划:

1. 在系统分区时单独分一个Company目录,在该区下有以下几个文件夹:hr、 dev和share。在share下又有以下几个文件夹:hr、dev和tools

2. 各部门对应的文件夹由各部门自己管理,tools文件夹由管理员维护

3. hr管理员账号:hradmin;普通用户账号:hruser1,hruser2

   dev管理员账号:devadmin;普通用户账号:devuser1,devuser2

   share管理员账号:shareadmin

[root@localhost ~]#useradd -s /sbin/nologin hradmin
[root@localhost ~]#useradd -s /sbin/nologin devadmin
[root@localhost ~]#useradd -s /sbin/nologin shareadmin
[root@localhost ~]#useradd -s /sbin/nologin -G hradmin hruser1
[root@localhost ~]#useradd -s /sbin/nologin -G hradmin hruser2
[root@localhost ~]#useradd -s /sbin/nologin -G devadmin devuser1
[root@localhost ~]#useradd -s /sbin/nologin -G devadmin devuser2

[root@localhost ~]#smbpasswd -a hradmin
New SMB password:
Retype new SMB password:
Added user hradmin.
[root@localhost ~]#smbpasswd -a hruser1
New SMB password:
Retype new SMB password:
Added user hruser1.
[root@localhost ~]#smbpasswd -a hruser2
New SMB password:
Retype new SMB password:
Added user hruser2.
[root@localhost ~]#smbpasswd -a devadmin
New SMB password:
Retype new SMB password:
Added user devadmin.
[root@localhost ~]#smbpasswd -a devuser1
New SMB password:
Retype new SMB password:
Added user devuser1.
[root@localhost ~]#smbpasswd -a devuser2
New SMB password:
Retype new SMB password:
Added user devuser2.
[root@localhost ~]#smbpasswd -a shareadmin
New SMB password:
Retype new SMB password:
Added user shareadmin.

创建目录

[root@localhost ~]#cd /
[root@localhost /]#mkdir company
[root@localhost /]#cd company/
[root@localhost /company]#ls
[root@localhost /company]#mkdir hr dev share
[root@localhost /company]#chown hradmin.hradmin hr
[root@localhost /company]#chown devadmin.devadmin dev
[root@localhost /company]#chown shareadmin.shareadmin share
[root@localhost /company]#ll
total 12
drwxr-xr-x 2 devadmin   devadmin   4096 Apr 29 22:15 dev
drwxr-xr-x 2 hradmin    hradmin    4096 Apr 29 22:15 hr
drwxr-xr-x 2 shareadmin shareadmin 4096 Apr 29 22:15 share

[root@localhost /company]#chmod -R 770 hr dev 
[root@localhost /company]#chmod -R 755 share
[root@localhost /company]#ll
total 12
drwxrwx--- 2 devadmin   devadmin   4096 Apr 29 22:15 dev
drwxrwx--- 2 hradmin    hradmin    4096 Apr 29 22:15 hr
drwxr-xr-x 5 shareadmin shareadmin 4096 Apr 29 22:19 share

[root@localhost /company]#cd share/
[root@localhost /company/share]#mkdir hr dev tools
[root@localhost /company/share]#chown hradmin.hradmin hr
[root@localhost /company/share]#chown devadmin.devadmin dev
[root@localhost /company/share]#chown shareadmin.shareadmin tools
[root@localhost /company/share]#ll
total 12
drwxr-xr-x 2 devadmin   devadmin   4096 Apr 29 22:19 dev
drwxr-xr-x 2 hradmin    hradmin    4096 Apr 29 22:19 hr
drwxr-xr-x 2 shareadmin shareadmin 4096 Apr 29 22:19 tools

[root@localhost /company/share]#chmod 775 dev hr
[root@localhost /company/share]#chmod g+s  dev hr
[root@localhost /company/share]#ll
total 12
drwxrwsr-x 2 devadmin   devadmin   4096 Apr 29 22:19 dev
drwxrwsr-x 2 hradmin    hradmin    4096 Apr 29 23:55 hr
drwxr-xr-x 2 shareadmin shareadmin 4096 Apr 29 22:19 tools

修改配置文件

[homes]
	comment = Home Directories
	browseable = no
	writable = yes
;	valid users = %S
;	valid users = MYDOMAIN\%S
	
[hr]
	comment = hr file
	path = /company/hr
	browseable = no
	admin users = hradmin
	valid users = @hradmin
	writable =yes
	create mask = 750
	directory mask = 750

[dev]
	comment = dev file
	path = /company/dev
	browseable = no
	admin users = devadmin
	valid users = @devadmin
	writable =yes
	create mask = 750
	directory mask = 750

[share]
	comment = share file
	path = /company/share
	browseable = no
	admin users = shareadmin
	valid users = @shareadmin
	writable =yes
	create mask = 755
	directory mask = 755

启动服务

[root@localhost /etc/samba]#service smb start
Starting SMB services:                                     [  OK  ]
[root@localhost /etc/samba]#service nmb start
Starting NMB services:                                     [  OK  ]

说明:

        从linux系统来说,对于/company/hr目录来说,其他的用户是无法访问这个目录的,只有hradmin用户和这个组里面的成员才可以访问和修改里面的文件

        从samba配置文件来说,hradmin用户是这个目录的管理员,对这个目录有完全控制权,它在这个目录里面创建的目录和文件的属主为root,属组为hradmin

当设置[hr]里面 browseable = no  则:\\192.168.175.11里面显示的没有hr文件夹,只有在框里输入:\\192.168.175.11\hr 才能进入hr文件夹,默认不显示,即使对hradmin也不显示。当设置为yes的时候,不管哪个用户登录都会显示这个文件夹。不管显示不显示,其他组里面的要想访问这个目录都要输入用户名和密码

当设置为public的时候就不要设置valid user,这两个冲突,public意思是公共的,只要用户登录就可以看到,而valid user是只允许这里定义的用户才能访问

每个用户登录都会看到自己的家目录,可以在自己的家目录里面存放自己的文件,家目录只对用户自己可见

以下在windows上操作,在linux上查看

使用hradmin用户登录

在hr目录里面创建文件,属主是root,属组为hradmin

[root@localhost /company/hr]#ll
total 0
-rwxr----- 1 root hradmin 0 Apr 29 23:35 hradmin1.txt
-rwxr----- 1 root hradmin 0 Apr 29 23:36 hradmin2.txt
-rwxr----- 1 root hradmin 0 Apr 29 23:36 hradmin3.txt

hradmin用户在:\\192.168.175.11目录下面不能创建文件

hradmin用户在:\\192.168.175.11\share目录下面不能创建文件

hradmin用户在:\\192.168.175.11\share\dev目录下面不能创建文件

hradmin用户在:\\192.168.175.11\share\hr目录下面能创建文件

[root@localhost /company/share/hr]#ll
total 0
-rwxr--r-- 1 hradmin hradmin 0 Apr 29 23:40 hradmin1.txt
-rwxr--r-- 1 hradmin hradmin 0 Apr 29 23:40 hradmin2.txt
-rwxr--r-- 1 hradmin hradmin 0 Apr 29 23:40 hradmin3.txt

使用hruser1用户登录

在hr目录里面创建文件,属主和属组都是hruser1,可以对hradmin的文件进行删除,但是不能修改

[root@localhost /company/hr]#ll
total 0
-rwxr----- 1 root    hradmin 0 Apr 29 23:35 hradmin1.txt
-rwxr----- 1 root    hradmin 0 Apr 29 23:36 hradmin2.txt
-rwxr----- 1 root    hradmin 0 Apr 29 23:36 hradmin3.txt
-rwxr----- 1 hruser1 hruser1 0 Apr 29 23:44 hruser11.txt
-rwxr----- 1 hruser1 hruser1 0 Apr 29 23:44 hruser12.txt
-rwxr----- 1 hruser1 hruser1 0 Apr 29 23:44 hruser13.txt

hruser1用户在:\\192.168.175.11目录下面不能创建文件

hruser1用户在:\\192.168.175.11\share目录下面不能创建文件

hruser1用户在:\\192.168.175.11\share\dev目录下面不能创建文件

hruser1用户在:\\192.168.175.11\share\hr目录下面能创建文件

因为share/hr目录设置了sgid权限,这个组里面的成员在这里面建立的文件的属组都是hradmin,但是不能对hradmin用户创建的文件修改

[root@localhost /company/share/hr]#ll
total 0
-rwxr--r-- 1 hradmin hradmin 0 Apr 29 23:40 hradmin1.txt
-rwxr--r-- 1 hradmin hradmin 0 Apr 29 23:40 hradmin2.txt
-rwxr--r-- 1 hradmin hradmin 0 Apr 29 23:40 hradmin3.txt
-rwxr--r-- 1 hruser1 hradmin 0 Apr 30 00:48 hruser11.txt
-rwxr--r-- 1 hruser1 hradmin 0 Apr 30 00:48 hruser12.txt
-rwxr--r-- 1 hruser1 hradmin 0 Apr 30 00:48 hruser13.txt

公司samba服务说明

ops组 :andy

密码:chinatt10043

samba的配置文件

[homes]
   comment = Home Directories
   browseable = no
   writable = yes
   
   
[public]
    comment = public file
    browseable = yes
    writable = no
    public = yes
    path = /data/samba/public
    guest ok = yes


[operations]
    comment = ops file
    browseable = yes
    valid users = andy,@ops
    admin users = andy
    writable = yes
    path = /data/samba/

两个目录,一个是可以通过http服务和samba服务公共访问到的,一个是只有samba服务通过用户密码访问到的目录

权限

[root@master /data]#chown -R andy.ops samba/

[root@master /data/samba]#ls
operations  public

[root@master /data/samba/public]#tree -L 3 .
.
├── centos
│   ├── 6
│   │   ├── extras
│   │   ├── os
│   │   └── updates
│   ├── 7
│   │   ├── extras
│   │   ├── os
│   │   └── updates
│   ├── RPM-GPG-KEY-CentOS-6
│   └── RPM-GPG-KEY-CentOS-7
├── CentOS-6-192.168.111.33.repo
├── CentOS-7-192.168.111.33.repo
├── docker-ce
│   └── linux
│       └── centos
├── docker-ce-192.168.111.33.repo
├── epel
│   ├── 6
│   │   └── x86_64
│   ├── 7
│   │   └── x86_64
│   ├── RPM-GPG-KEY-EPEL-6
│   └── RPM-GPG-KEY-EPEL-7
├── isos
│   ├── centos 6.7
│   │   ├── CentOS-6.7-x86_64-bin-DVD1to2
│   │   ├── CentOS-6.7-x86_64-bin-DVD1to2.torrent
│   │   ├── CentOS-6.7-x86_64-minimal
│   │   └── CentOS-6.7-x86_64-minimal.torrent
│   ├── centos 6.8
│   │   ├── CentOS-6.8-x86_64-bin-DVD1to2
│   │   ├── CentOS-6.8-x86_64-bin-DVD1to2.torrent
│   │   ├── CentOS-6.8-x86_64-minimal
│   │   └── CentOS-6.8-x86_64-minimal.torrent
│   ├── centos 6.9
│   │   ├── CentOS-6.9-x86_64-bin-DVD1to2
│   │   ├── CentOS-6.9-x86_64-bin-DVD1to2.torrent
│   │   ├── CentOS-6.9-x86_64-minimal
│   │   └── CentOS-6.9-x86_64-minimal.torrent
│   ├── centos 7.0
│   │   ├── CentOS-7.0-1406-x86_64-DVD
│   │   ├── CentOS-7.0-1406-x86_64-DVD.torrent
│   │   └── CentOS-7.0-1406-x86_64-Minimal.iso
│   ├── centos 7.2
│   │   ├── CentOS-7-x86_64-DVD-1511
│   │   ├── CentOS-7-x86_64-DVD-1511.torrent
│   │   ├── CentOS-7-x86_64-Minimal-1511
│   │   └── CentOS-7-x86_64-Minimal-1511.torrent
│   ├── centos 7.3
│   │   ├── CentOS-7-x86_64-DVD-1611
│   │   ├── CentOS-7-x86_64-DVD-1611.torrent
│   │   ├── CentOS-7-x86_64-Minimal-1611
│   │   └── CentOS-7-x86_64-Minimal-1611.torrent
│   ├── ubuntu
│   │   ├── ubuntu-14.04.4-server-amd64.iso
│   │   ├── ubuntu-15.10-server-amd64.iso
│   │   └── ubuntu-16.04.1-desktop-amd64.iso
│   └── windows
│       ├── cn_windows_10_enterprise_x64_dvd_6846957.iso
│       └── cn_windows_server_2012_x64_dvd_915588.iso
└── software
    ├── SecureCRT_and_SecureFX_v8.0.1_build_1082.zip
    └── Xmanager_Enterprise_5_Build_1236_and_keygen.zip

38 directories, 26 files

当samba服务在windows上面打开word文档的时候出现错误,需要设置word的安全策略

文件安全性问题,可以打开Word 2013或Excel 2013,依次点击“文件→选项→信任中心→信任中心设置→受保护的视图”,取消受保护的视图标签下的三个复选框的勾选,或者通过简单的操作解除某个文件的锁定。右键点击您的Word文档并点击属性,在文件的属性窗口中,点击“解除锁定。

参考文档1

未经允许不得转载:江哥架构师笔记 » samba服务配置

分享到:更多 ()

评论 抢沙发

评论前必须登录!