Linux—— SAMBA

1. 起源

对于windows的网上邻居来讲,共享文件的方式用的是SMB和CIFS协议以及NETBIOS协议Linux/Unix之间用的是NFS协议。​但是Linux和Windows之间是不能共享的,澳大利亚国立大学的Andrew Tridgell开发SMB,但SMB这个名字不能被注册成商标,因为已有SMB协议了,于是作者给名字上加了两个A,SAMBA。
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之间的数据共享上面。

2. 工作原理

SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。
事实上, 就像 NFS 是架构在 RPC Server 上面一样, SAMBA 这个文件系统是架构在 NetBIOS (Network Basic Input/Output System, NetBIOS) 这个通讯协议上面所开发出来的。
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端口。

3.Samba使用的 damons

NetBIOS 机器间的沟通,取得对方主机的NetBIOS name 定位该主机所在,利用对方给予权限存取可用资源。

SAMBA 使用下面两个服务来控制上面两步骤
nmbd
这个daemon是用来管理工作组,NetBIOS name等等的解析。主要利用 UDP 协议开启 port 137 138 来负责名称解析的任务。
smbd
这个daemon主要用来管理SAMBA主机分享的目录,档案与打印机等等。主要利用可靠的TCP协议来传输数据,开放端口为139。所以SAMBA每次启动至少都需要有这个daemon,而当我启动了SAMBA之后,主机系统就会启动137,138 这两个UDP 及139这个TCP端口。

4.Samba联机模式介绍

两种最常见的局域网的联机模式peer/peer(对等模式)和domain model(主控模式)

4.1 peer/peer (workgroup model,对等模式)

使用 peer/peer 的架构的好处是每部计算机均可以独立运作,而不受他人的影响!不过, 缺点就是当整个网域内的所有人员都要进行数据分享时,光是知道所有计算机里面的账号与密码,就会很伤脑筋了! 所以, Peer/Peer 的架构是比较适合 :小型的网域,没有需要常常进行档案数据分享的网络环境,每个使用者都独自拥有该计算机的拥有权

4.2 domain model(主控模式)

将所有的账号与密码都放置在一部主控计算机 (Primary Domain Controller, PDC) 上面,在我的网域里面,任何人想要使用任何计算机时,都需要在屏幕前方输入账号与密码,然后通通藉由 PDC 服务器的辨识后,才给予适当的权限。也就是说,不同的身份还具有不一样的计算机资源权限。

5.安装
yum -y install samba samba-common samba-client  
6.主要文件

samba的主配置文件
/etc/samba/smb.conf   
samba的用户别名,比如可以将root用别名administrator、admin代替等(作用:可以只告知samba用户该别名,这样可以保护真实的samba服务器/etc/passwd的用户不泄漏)
/etc/samba/smbusers    
samba的IP和域名对应,类似/etc/hosts文件功能
/etc/samba/lmhosts     
存放samba用户及密码
/etc/samba/smbpasswd

samba服务需要4个软件包

[root@localhost Server]# rpm -qa |grep samba
samba-common-3.0.28-0.el5.8
samba-client-3.0.28-0.el5.8
samba-3.0.28-0.el5.8
system-config-samba-1.2.39-1.el5.noarch
samba-swat-3.0.28-0.el5.8

samba-common-3.0.28-0.el5.8:提供samba服务器和客户机中都必须使用的公共文件,因此此文件必须在samba服务器和客户端软件包之前安装。
samba-3.0.28-0.el5.8:包括了samba服务器程序的所有文件。
samba-client-3.0.28-0.el5.8:提供了samba客户机的所有文件
system-config-samba-1.2.39-1.el5.noarch:提供图形界面配置管理配置文件,是Xwindow下的图形化配置程式。
samba-swat-3.0.28-0.el5.8以web页面方式配置samba的前端,她们的作用都是设定/etc/samba/smb.

7.配置文件

/etc/samba/smb.conf
[global]
#共享所在的工作组,可以是NT域名、工作组名
workgroup = WORKGROUP

#客户端看到的服务器的描述信息
server string = samba server on Centos

#NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了
netbios name = centos_smb

#监听的网卡,可以写网卡名,也可以写该网卡的IP地址
interfaces = lo eth0

#表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。我这里允许192.168.1.0网段里的所有客户端访问samba server。(注释掉表示允许所有IP)
hosts allow = 192.168.1. 0/255.255.255.0

#设置用户访问Samba Server的验证方式,一共有四种验证方式。 share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。 user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。 server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。 domain:域安全级别,使用主域控制器(PDC)来完成认证。
security=share在新版3.9中已经被废弃了
security = user

#用来定义用户名映射,比如可以将root换成administrator、admin等。要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,以保护Linux的系统账号root。
username map = /etc/samba/smbusers

#是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。
encrypt passwords = true

#passdb backend密码验证后端。目前支持的有三种:smbpasswd、tdbsam和ldapsam。其中smbpasswd方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
passdb backend = smbpasswd

#用来定义samba用户的密码文件。smbpasswd文件如果默认不存在,要手工新建。
smb passwd file =/etc/samba/smbpasswd

#日志文件的储存位置和文件名(%m代表客户端主机名)。
log file = /var/log/samba/log.%m

#同一客户最多能打开的文件数目
max open files = 1000

#用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。
socket options = TCP_NODELAY

#xxxxx表示共享名
[xxxxx]

#comment是对该共享的描述,可以是任意字符串。
comment = code string

#path用来指定共享目录的路径。
path = /home/songyd/code

#writable用来指定该共享路径是否可写。这里我们允许写入,以满足文件双向共享。
writable = yes

#只允许mysql和jack2个用户对此资源可以写,其他的为read only
writelist = mysql, jack

#browseable用来指定该共享是否可以浏览。
browseable = yes

#available用来指定该共享资源是否可用。
available = yes

#是否允许允许来宾访问
guest ok = no

#设置权限为只读权限
read only = yes

#共享目录允许所有用户访问及上传文件
public = no

#只允许jack sunny访问该共享资源
valid users = jack sunny

完整示例

[global]
workgroup = WORKGROUP
server string = samba server on Version %v
netbios name = centos_smb
interfaces = lo eth0
#hosts allow = 192.168.16.0/255.255.255.0
security = user
username map = /etc/samba/smbusers
encrypt passwords = true
passdb backend = smbpasswd
smb passwd file =/etc/samba/smbpasswd
log file = /var/log/samba/log.%m
max open files = 1000
socket options = TCP_NODELAY

[webfile]
comment = frontend web
path = /home/wwwroot/frontend/web
browseable = yes
writable = yes
create mask = 0664
directory mask = 0755
guest ok = no
public = no
available = yes
8. 测试配置文件
[root@master ~]# testparm --help
Usage: [OPTION...] <config-file> [host-name] [host-ip]
  -s, --suppress-prompt           Suppress prompt for enter
  -v, --verbose                   Show default options too
  -l, --skip-logic-checks         Skip the global checks
  --show-all-parameters           Show the parameters, type, possible values
  --parameter-name=STRING         Limit testparm to a named parameter
  --section-name=STRING           Limit testparm to a named section
[root@master ~]# testparm 
Registered MSG_REQ_POOL_USAGE
Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
	printcap name = cups
	security = USER
	workgroup = SAMBA
	idmap config * : backend = tdb
	cups options = raw


[homes]
	browseable = No
	comment = Home Directories
	inherit acls = Yes
	read only = No
	valid users = %S %D%w%S


[printers]
	browseable = No
	comment = All Printers
	create mask = 0600
	path = /var/tmp
	printable = Yes


[print$]
	comment = Printer Drivers
	create mask = 0664
	directory mask = 0775
	force group = @printadmin
	path = /var/lib/samba/drivers
	write list = @printadmin root
9. 新建samba用户
[root@master ~]# smbpasswd --help
smbpasswd: invalid option -- '-'
When run by root:
    smbpasswd [options] [username]
otherwise:
    smbpasswd [options]

options:
  -L                   local mode (must be first option)
  -h                   print this usage message
  -s                   use stdin for password prompt
  -c smb.conf file     Use the given path to the smb.conf file
  -D LEVEL             debug level
  -r MACHINE           remote machine
  -U USER              remote username (e.g. SAM/user)
extra options when run by root or in local mode:
  -a                   add user
  -d                   disable user
  -e                   enable user
  -i                   interdomain trust account
  -m                   machine trust account
  -n                   set no password
  -W                   use stdin ldap admin password
  -w PASSWORD          ldap admin password
  -x                   delete user
  -R ORDER             name resolve order

创建用户
smbpasswd -a gege
如果要建立一个samba用户,必须是在/etc/shadow(当前linux系统中)存在的用户。
禁用samba用户
smbpasswd -d gege
启用samba用户
smbpasswd -e gege
用户的密码置空
smbpasswd -n gege
删除samba用户
smbpasswd -x geger

[root@master ~]# smbpasswd -a blueicex
New SMB password:
Retype new SMB password:
Failed to add entry for user blueicex

[root@master samba]# useradd blueicex 
[root@master samba]# smbpasswd -a blueicex
New SMB password:
Retype new SMB password:
Added user blueicex.

linux有个和smbpasswd更可靠的用户验证模式,tdbsam用户验证文件存储,系统默认使用tdbsam的安全帐户管理模式,而且smb.conf文件里没有启用smbpasswd认证存储
修改passdb backend = tdbsam为 # passdb backend = tdbsam ,即将tdbsam存储关闭
加入smb passwd file = /etc/samba/smbpasswd 启用用户验证文件存储到smbpasswd文件

**输入完该samba用户密码后,会在/etc/samba/smbpasswd文件生成blueicex用户密码信息,**如果不想让samba用户使用blueicex作为samba用户名访问的话,则可以在/etc/samba/smbusers 设置改用户别名,如下写出了添加blueicex后的smbpasswd文件和smbusers文件信息

[root@master samba]# smbpasswd -a test1
New SMB password:
Retype new SMB password:
Added user test1.
[root@master samba]# smbpasswd -a test2
New SMB password:
Retype new SMB password:
Added user test2.
[root@master samba]# ls
lmhosts  smb.conf  smb.conf.example  smbpasswd
[root@master samba]# cat smbpasswd 
test1:1004:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:55C840E857FA61EF2634FB5EFFCB5918:[U          ]:LCT-5E67A883:
test2:1005:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:55C840E857FA61EF2634FB5EFFCB5918:[U          ]:LCT-5E67A88D:

Notice:★★★★★
samba版本升级了,规则也变化了。现在无论是使用tdb数据库存储密钥还是smbpasswd文本存储密钥都要设定相对应的 passdb backend参数。要用传统的文本方式存储只需这样设定passdb backend = smbpasswd:/etc/samba/smbpasswd(后面跟的是绝对路径)>,不要再画蛇添足的写上smb passwd file = /etc/samba/smbpasswd,该参数已经不适用于新版本的samba了。
用户名必须是linux中存在的用户,可以使用useradd命令在系统中添加一个用户,然后再增加一个对应的samba用户,也 就是一个用户名使用的是两套密码。一个是系统用户密码,另一个密码存储在/etc/samba/smbpasswd文件中的samba密码,这样可以防止 系统用户密钥外泄带来的安全隐患。
除了上面的措施外,samba还提供了一个更安全的方法,用户名映射功能,这样做的好处是防止系统内的真实用户名暴露,在smb.conf中增 加username map = /etc/samba/smbuser设定,再手工建立该文件。username map参数详解,比如有一个系统用户名为zyhyt.org,同时我们也设定其为samba的登录名,虽然是两套独立的密码,但依然告诉了用户,我系统内 也存在zyhyt.org这个用户。严格的说这也是违背系统安全规则的,不法人士可能会利用该用户名暴力猜解获得系统内帐户权限。samba提供的用户名 映射功能,只需编辑smbuser文>件,格式为:真实的用户名 = 映射出的用户名(随便自定义);zyhyt.org = nas_guest nas_nobody(可以映射出多个用户名,注意中间的空格)。设定完成后,我们只需将nas_guest告诉用户即可,无须担心真实的 zyhyt.org用户名暴露。

[root@master ~]# cat smbusers 
#Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
mysql = sql     (samba用户可以使用sql作为samba帐号来访问samba服务器)
[root@master ~]#vim /etc/samba/smb.conf
security = user
guest accout = peter
encrypt passwords = yes
smb passwd file =/etc/samba/smbpasswd
passdb backend = smbpasswd
[root@master ~]# mkdir /home/share
[share]
         path = /home/share
         writeable = yes
[root@master samba]# pdbedit --help
Usage: [OPTION...]
  -L, --list                         list all users
  -v, --verbose                      be verbose
  -w, --smbpasswd-style              give output in smbpasswd style
  -u, --user=USER                    use username
  -N, --account-desc=STRING          set account description
  -f, --fullname=STRING              set full name
  -h, --homedir=STRING               set home directory
  -D, --drive=STRING                 set home drive
  -S, --script=STRING                set logon script
  -p, --profile=STRING               set profile path
  -I, --domain=STRING                set a users' domain
  -U, --user SID=STRING              set user SID or RID
  -M, --machine SID=STRING           set machine SID or RID
  -a, --create                       create user
  -r, --modify                       modify user
  -m, --machine                      account is a machine account
  -x, --delete                       delete user
  -b, --backend=STRING               use different passdb backend as default backend
  -i, --import=STRING                import user accounts from this backend
  -e, --export=STRING                export user accounts to this backend
  -g, --group                        use -i and -e for groups
  -y, --policies                     use -i and -e to move account policies between backends
  --policies-reset                   restore default policies
  -P, --account-policy=STRING        value of an account policy (like maximum password age)
  -C, --value=LONG                   set the account policy to this value
  -c, --account-control=STRING       Values of account control
  --force-initialized-passwords      Force initialization of corrupt password strings in a passdb backend
  -z, --bad-password-count-reset     reset bad password count
  -Z, --logon-hours-reset            reset logon hours
  --time-format=STRING               The time format for time parameters
  -t, --password-from-stdin          get password from standard in
  -K, --kickoff-time=STRING          set the kickoff time
  --set-nt-hash=STRING               set password from nt-hash

Help options:
  -?, --help                         Show this help message
  --usage                            Display brief usage message

Common samba options:
  -d, --debuglevel=DEBUGLEVEL        Set debug level
  -s, --configfile=CONFIGFILE        Use alternate configuration file
  -l, --log-basename=LOGFILEBASE     Base name for log files
  -V, --version                      Print version
  --option=name=value                Set smb.conf option from command line

新建用户
pdbedit -a username
删除用户
pdbedit -x username
列出用户列表,读取passdb.tdb数据库文件
pdbedit -L
列出用户列表详细信息
pdbedit -Lv
暂停该用户帐号
pdbedit -c “[D]” -u username
恢复该用户帐号
pdbedit -c “[]” -u username

10. smbclient
[root@master ~]# smbclient --help
Usage: smbclient service <password>
  -R, --name-resolve=NAME-RESOLVE-ORDER     Use these name resolution services only
  -M, --message=HOST                        Send message
  -I, --ip-address=IP                       Use this IP to connect to
  -E, --stderr                              Write messages to stderr instead of stdout
  -L, --list=HOST                           Get a list of shares available on a host
  -m, --max-protocol=LEVEL                  Set the max protocol level
  -T, --tar=<c|x>IXFqgbNan                  Command line tar
  -D, --directory=DIR                       Start from directory
  -c, --command=STRING                      Execute semicolon separated commands
  -b, --send-buffer=BYTES                   Changes the transmit/send buffer
  -t, --timeout=SECONDS                     Changes the per-operation timeout
  -p, --port=PORT                           Port to connect to
  -g, --grepable                            Produce grepable output
  -q, --quiet                               Suppress help message
  -B, --browse                              Browse SMB servers using DNS

Help options:
  -?, --help                                Show this help message
  --usage                                   Display brief usage message

Common samba options:
  -d, --debuglevel=DEBUGLEVEL               Set debug level
  -s, --configfile=CONFIGFILE               Use alternate configuration file
  -l, --log-basename=LOGFILEBASE            Base name for log files
  -V, --version                             Print version
  --option=name=value                       Set smb.conf option from command line

Connection options:
  -O, --socket-options=SOCKETOPTIONS        socket options to use
  -n, --netbiosname=NETBIOSNAME             Primary netbios name
  -W, --workgroup=WORKGROUP                 Set the workgroup name
  -i, --scope=SCOPE                         Use this Netbios scope

Authentication options:
  -U, --user=USERNAME                       Set the network username
  -N, --no-pass                             Don't ask for a password
  -k, --kerberos                            Use kerberos (active directory) authentication
[root@master ~]# vim /etc/samba/smb.conf
[global]
        workgroup = SAMBA
        security = user
        netbios name = blueicex smb

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
[share]
comment = share Stuff
path = /data
public = yes
writable = yes
[root@master ~]# systemctl restart smb nmb
[root@master ~]# smbclient //127.0.0.1/share
Enter SAMBA\root's password: 
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue Mar 10 10:55:11 2020
  ..                                  D        0  Sun Mar  1 19:11:12 2020
  yum                                 D        0  Sun Mar  1 01:22:43 2020
  wwwroot                             D        0  Sun Mar  1 11:42:47 2020
  wwwlogs                             D        0  Sun Mar  1 11:42:47 2020
  mariadb                             D        0  Tue Mar  3 11:09:32 2020
  data                                D        0  Tue Mar 10 10:54:24 2020
  zookeeper                           D        0  Tue Mar 10 17:18:13 2020

		15718400 blocks of size 1024. 1145760 blocks available
smb: \> help
?              allinfo        altname        archive        backup         
blocksize      cancel         case_sensitive cd             chmod          
chown          close          del            deltree        dir            
du             echo           exit           get            getfacl        
geteas         hardlink       help           history        iosize         
lcd            link           lock           lowercase      ls             
l              mask           md             mget           mkdir          
more           mput           newer          notify         open           
posix          posix_encrypt  posix_open     posix_mkdir    posix_rmdir    
posix_unlink   posix_whoami   print          prompt         put            
pwd            q              queue          quit           readlink       
rd             recurse        reget          rename         reput          
rm             rmdir          showacls       setea          setmode        
scopy          stat           symlink        tar            tarmode        
timeout        translate      unlock         volume         vuid           
wdel           logon          listconnect    showconnect    tcon           
tdis           tid            utimes         logoff         ..             
!              
smb: \> 

列出某个IP地址所提供的共享文件夹
smbclient -L 198.168.0.1 -U username%password

像ftp客户端一样使用smbclient
smbclient //192.168.0.1/tmp -U username%password
执行smbclient命令成功后,进入smbclient环境,出现提示符:smb:/>
这里有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源。

直接一次性使用smbclient命令
smbclient -c “ls” //192.168.0.1/tmp -U username%password

smbclient //192.168.0.1/tmp -U username%password
smb:/>ls

创建一个共享文件夹
smbclient -c “mkdir share1” //192.168.0.1/tmp -U username%password

如果用户共享//192.168.0.1/tmp的方式是只读的,会提示NT_STATUS_ACCESS_DENIED making remote directory /share1

selinux禁止问题

[root@client ~]# smbclient //172.25.254.126/student -U student
Enter student's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \*   selinux禁止
smb: \> quit
客户端配置selinux:
[root@server ~]# getsebool  -a | grep smb
smbd_anon_write --> off
[root@server ~]# getsebool  -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
[root@server ~]# setsebool -P samba_enable_home_dirs on
[root@server ~]# 
客户端访问:
[root@client ~]# smbclient //172.25.254.226/student -U student
Enter student's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                   D        0  Thu Jul 10 19:06:52 2014
  ..                                  D        0  Fri Jun  1 21:49:35 2018
  .bash_logout                        H       18  Wed Jan 29 07:45:18 2014
  .bash_profile                       H      193  Wed Jan 29 07:45:18 2014
  .bashrc                             H      231  Wed Jan 29 07:45:18 2014
  .ssh                               DH        0  Thu Jul 10 18:19:10 2014
  .config                            DH        0  Thu Jul 10 19:06:53 2014

        40913 blocks of size 262144. 28595 blocks available
smb: \> quit
11. 共享文件的挂载
11.1 临时挂载
#客户端
[root@client bin]# smbclient -L//172.25.254.226/student -U student
Enter student's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

    Sharename       Type      Comment
    ---------       ----      -------
    IPC$            IPC       IPC Service (Samba Server Version 4.1.1)
    student        Disk     Home Directories   #硬盘可挂载使用
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

    Server               Comment
    ---------            -------

    Workgroup            Master
    ---------            -------
[root@client bin]# mount //172.25.254.126/student/ /mnt/ -o username=student,password=123
[root@client bin]# df
Filesystem                1K-blocks    Used Available Use% Mounted on
/dev/vda1                  10473900 3182068   7291832  31% /
devtmpfs                     469332       0    469332   0% /dev
tmpfs                        484920     140    484780   1% /dev/shm
tmpfs                        484920   12800    472120   3% /run
tmpfs                        484920       0    484920   0% /sys/fs/cgroup
/dev/mapper/vg0-vo           483670    2339    451840   1% /home
//172.25.254.126/student/  10473900 3157292   7316608  31% /mnt
[root@client bin]# cd /mnt
[root@client mnt]# ls
ls  passwd  
[root@client mnt]# touch file
#服务端Student用户家目录:
[root@server student]# ls
file  ls  passwd  
11.2 永久挂载
[root@centos1 samba]# yum install cifs-utils cifs-utils-devel -y
[root@client ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Wed May  7 01:22:57 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 /                       xfs     defaults        1 1
/dev/vg0/vo /home   ext4    defaults    0 0
//172.25.254.126/student /mnt cifs defaults,username=student,password=123 0 0
[root@client ~]# mount -a
[root@client ~]# df
Filesystem               1K-blocks    Used Available Use% Mounted on
/dev/vda1                 10473900 3182088   7291812  31% /
devtmpfs                    469332       0    469332   0% /dev
tmpfs                       484920     140    484780   1% /dev/shm
tmpfs                       484920   12800    472120   3% /run
tmpfs                       484920       0    484920   0% /sys/fs/cgroup
/dev/mapper/vg0-vo          483670    2339    451840   1% /home
//172.25.254.126/student  10473900 3157288   7316612  31% /mnt
[root@client ~]# vim /etc/rc.d/rc.local 
mount //172.25.254.126/student/ /mnt/ -o username=student,password=123 
[root@client ~]# chmod +x /etc/rc.d/rc.local
[root@client ~]# df
Filesystem         1K-blocks    Used Available Use% Mounted on
/dev/vda1           10473900 3182068   7291832  31% /
devtmpfs              469332       0    469332   0% /dev
tmpfs                 484920     140    484780   1% /dev/shm
tmpfs                 484920   12800    472120   3% /run
tmpfs                 484920       0    484920   0% /sys/fs/cgroup
/dev/mapper/vg0-vo    483670    2339    451840   1% /home
[root@client ~]# reboot
[root@client ~]# df
Filesystem                1K-blocks    Used Available Use% Mounted on
/dev/vda1                  10473900 3181136   7292764  31% /
devtmpfs                     469332       0    469332   0% /dev
tmpfs                        484920      80    484840   1% /dev/shm
tmpfs                        484920   12752    472168   3% /run
tmpfs                        484920       0    484920   0% /sys/fs/cgroup
/dev/mapper/vg0-vo           483670    2339    451840   1% /home
//172.25.254.226/student/  10473900 3157288   7316612  31% /mnt
12. 常用配置
12.1 修改用户域名
[root@server ~]# vim /etc/samba/smb.conf 
workgroup = yifan     #将域名改为yifan
12.2 用户黑白名单
[root@server ~]# vim /etc/samba/smb.conf 
hosts allow =172.25.254.226    #用户白名单
hosts deny =172.25.254.226    #用户黑名单
12.3 设定selinux权限
[root@sever ~]# chcon -t samba_share_t /westos   #修改安全安全上下文
                  或者
[root@sever ~]# semanage fcontext -a -t samba_share_t '/westos(/.*)?'

[root@sever ~]# restorecon -RvvF /westos/   #刷新
restorecon reset /westos context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:default_t:s0
[root@sever ~]# chmod 777 /westos/   #给满权限,以被所有用户都可读写
12.4 用户权限设定
[DIR]共享目录名称,可自己设定
comment=westos dir显示指定的共享目录
path=/westos所要共享的目录
browseable=no/yes是否显示目录
writable=no/yes所有用户对目录是否可写
write list = +/@staff对staff组可写
write list = staff对staff用户可写
admin users =staff此目录的超级用户

#是否显示目录,该修改不用重启服务,用smbclient -L 地址,不显示设置的目录。
browseable=no|yes
#允许所有用户写
writable = yes|no
#对student用户可写,注意此writable = yes一定要注释掉。
write list = student
#对student组用户可写
write list = @/+student

[root@server ~]# vim /etc/samba/smb.conf
 #       writable = yes
         write list = @student
[root@server ~]# systemctl restart smb
[root@sever ~]# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
[root@sever ~]# id westos
uid=1001(westos) gid=1001(westos) groups=1001(westos)
[root@server ~]# systemctl restart smb
[root@client ~]# mount //172.25.254.126/DIR /mnt -o username=westos,password=123
[root@client ~]# cd /mnt/
[root@client mnt]# touch 789
touch: cannot touch ‘789’: Permission denied
[root@sever ~]# usermod -G  student  westos
[root@client ~]# mount //172.25.254.126/DIR /mnt -o username=westos,password=123
[root@client ~]# cd /mnt/
[root@client mnt]# touch word
12.5 匿名用户允许访问
[root@client ~]# smbclient //172.25.254.126/DIR
Enter root's password: 
Anonymous login successful
Domain=[YIFAN] OS=[Unix] Server=[Samba 4.1.1]
tree connect failed: NT_STATUS_ACCESS_DENIED   #访问被拒绝。
[root@server ~]# vim /etc/samba/smb.conf
[DIR]
comment=westos dir
   path=/westos
browseable=no
;  writable=yes
write list =+student
guest ok = yes     #允许guest用户访问
security = user
passdb backend = tdbsam
map to guest = bad user   #将匿名用户映射为guest用户
[root@sever ~]# systemctl restart smb.service 
[root@client ~]# smbclient //172.25.254.126/DIR
Enter root's password: 
Domain=[YIFAN] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                   D        0  Wed Jun  6 18:07:35 2018
  ..                                  D        0  Wed Jun  6 17:33:36 2018
  file                                N        0  Wed Jun  6 17:55:23 2018
  hello                               N        0  Wed Jun  6 17:56:12 2018
  123                                 N        0  Wed Jun  6 17:56:55 2018
  456                                 N        0  Wed Jun  6 17:57:26 2018
  256                                 N        0  Wed Jun  6 17:58:49 2018
  word                                N        0  Wed Jun  6 18:07:35 2018

        40913 blocks of size 262144. 26839 blocks available
smb: \> quit
13. window访问

win+r
\192.168.**
————Blueicex 2020/3/10 23:42 blueice1980@126.com

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值