Samba客户端配置
访问SMB共享
手动挂载和卸载SMB文件系统
1.安装软件包:cifs-utils、samba-client
2.识别要访问的远程共享:smblient -L //server
3.创建挂载点
4.挂载
Ø 手动挂载
mount -t cifs -o guest //server/share /mountpoint
-t:SMB共享的文件类型
-o:以某个账户身份挂载。
Ø 永久挂载
编辑/etc/fstab并添加
//server/share /mountpoint cifs guest 0 0
客户端安装:
yum install -y cifs-utils samba-client
查看服务端共享出来的文件:
Smbclient -L //server
挂载查看到的文件:
mount -t cifs //172.16.10.10 /srv/test
对SMB共享进行身份验证
SMB服务器通常限制对特定用户和用户组的访问。如果要访问受保
护的共享,需向SMB服务器提供合适的凭据
身份验证的一个常用方法是用户名和密码对。这些对既可添加至
mount命令(或/etc/fstab条目),也可存储在挂载操作期间被引用的
凭据文件中。如果未提供密码,mount命令将会提示输入密码,但是使
用/etc/fstab时必须提供密码。可通过guest选项明确请求来宾访问权限。
对SMB共享进行身份验证
mount -t cifs -o username=watson //server/cases /mountpoint
在/mountpoint中挂载SMB共享//serverX/cases并尝试以watson执行身份
验证。在此例中,mount命令将提示输入密码
Ø Mount -t cifs -o credentials=/secure/sherlock //server/cases /mountpoint
在/mountpoint中挂载//serverX/cases并尝试使用存储于/secure/sherlock中的凭据执行身份验证
凭据文件格式:
username=xxx
password=xxx
domain=domain
注意:凭据文件应仅具有root访问权限的某个安全位置如chmod600
挂载windows文件到linux目录下:
vim /etc/smb.txt
username=adfasdf
password=asdf
domain=asd.com
chmod 600 /etc/smb.txt
mount -t cifs -o username="rsc\administrator",password="123456" //172.16.10.10 /srv/test
mount -t cifs -o credentials=/etc/smb.txt //172.16.10.10 /srv/test
通过将帐号密码写入配置文件中:
将server端的samba共享文件挂载到desktop服务器的/mnt/samba目录下:
[root@desktop ~]# cat /root/smb.txt
username=root
password=redhat
[root@desktop ~]# mount -t cifs -o credentials=/root/smb.txt //172.25.0.11/smb1 /mnt/samba
[root@desktop ~]# ll /mnt/samba/
total 0
-rw-r--r--. 1 root root 0 Dec 8 17:19 move1
-rw-r--r--. 1 root root 0 Dec 8 17:19 move10
-rw-r--r--. 1 root root 0 Dec 8 17:19 move2
-rw-r--r--. 1 root root 0 Dec 8 17:19 move3
-rw-r--r--. 1 root root 0 Dec 8 17:19 move4
-rw-r--r--. 1 root root 0 Dec 8 17:19 move5
-rw-r--r--. 1 root root 0 Dec 8 17:19 move6
-rw-r--r--. 1 root root 0 Dec 8 17:19 move7
-rw-r--r--. 1 root root 0 Dec 8 17:19 move8
-rw-r--r--. 1 root root 0 Dec 8 17:19 move9
通过命令行指定帐号和密码:
[root@desktop mnt]# mount -t cifs -o username="root",password="redhat" //172.25.0.11/smb1 /mnt/samba
查看挂载的详细参数:
[root@desktop mnt]# mount | grep "172.25.0.11"
//172.25.0.11/smb1 on /mnt/samba type cifs
(rw,relatime,vers=1.0,cache=strict,username=root,domain=SERVER,uid=0,noforceuid,gid=0,noforcegid,addr=172.25.0.11,unix,posixpaths,serverino,acl,r
size=1048576,wsize=65536,actimeo=1)
使用自动挂载程序挂载SMB文件系统
当某一进程试图访问SMB共享上的文件时,可以将自动挂
载程序(或autofs)服务配置为“按需”挂载SMB共享。当共享
不再使用并处于不活动状态达一段期间以后,自动挂载程序将会
卸载该共享。
自动挂载步骤:
1.安装autofs软件包
2.添加一个可识别共享基础目录和关联映射文件的
auto.master.d配置文件
3.创建或编辑映射文件,以包括SMB共享的挂载详细信息
4.启用并启动autofs服务
在/bakerst/cases为SMB共享//server/cases创建一个自动挂载,并
根据凭据文件/secure/sherlock进行身份验证
1.vim /etc/auto.master.d/bakerst.autofs(编辑主映射文件)
/bakerst /etc/auto.bakerst
2.vim /etc/auto.bakerst(编辑映射文件)
cases -fstype=cifs,credentials=/secure/sherlock ://server/cases
注意:指定文件系统类型使用-fstype=cifs选项,然后使用一列以逗号分
隔的挂载选项。服务器URL地址需要以冒号“:”为前缀
3.Vim /secure/sherlock(编辑凭据文件)
username=sherlock
password=villin221B
domain=BAKERST
4.启用并启动autofs
systemctl enable autofs
systemctl start autofs
服务端端安装配置以及执行多用户挂载:
服务端安装samba:
[root@server ~]# yum install samba -y
Loaded plugins: langpacks
Package samba-4.1.1-31.el7.x86_64 already installed and latest version
重启服务:
[root@server ~]# systemctl restart smb.service
[root@server0 ~]# rpm -qa| grep samba
samba-client-4.1.1-31.el7.x86_64#客户端工具
samba-4.1.1-31.el7.x86_64#服务端 包含smb nmb 程序
samba-common-4.1.1-31.el7.x86_64#服务端,客户端都需要 smb.conf testparm
samba-libs-4.1.1-31.el7.x86_64
查看监听的端口:
[root@server0 samba]# ss -antup | grep -E "nmbd|smbd"
tcp UNCONN 0 0 172.25.0.255:137 *:* users:(("nmbd",1445,23))
tcp UNCONN 0 0 172.25.0.111:137 *:* users:(("nmbd",1445,22))
tcp UNCONN 0 0 172.25.0.255:137 *:* users:(("nmbd",1445,19))
tcp UNCONN 0 0 172.25.0.110:137 *:* users:(("nmbd",1445,18))
tcp UNCONN 0 0 172.25.0.255:137 *:* users:(("nmbd",1445,14))
tcp UNCONN 0 0 172.25.0.11:137 *:* users:(("nmbd",1445,13))
tcp UNCONN 0 0 *:137 *:* users:(("nmbd",1445,11))
tcp UNCONN 0 0 172.25.0.255:138 *:* users:(("nmbd",1445,25))
tcp UNCONN 0 0 172.25.0.111:138 *:* users:(("nmbd",1445,24))
tcp UNCONN 0 0 172.25.0.255:138 *:* users:(("nmbd",1445,21))
tcp UNCONN 0 0 172.25.0.110:138 *:* users:(("nmbd",1445,20))
tcp UNCONN 0 0 172.25.0.255:138 *:* users:(("nmbd",1445,16))
tcp UNCONN 0 0 172.25.0.11:138 *:* users:(("nmbd",1445,15))
tcp UNCONN 0 0 *:138 *:* users:(("nmbd",1445,12))
tcp LISTEN 0 50 *:445 *:* users:(("smbd",1497,35))
tcp LISTEN 0 50 *:139 *:* users:(("smbd",1497,36))
tcp LISTEN 0 50 :::445 :::* users:(("smbd",1497,33))
tcp LISTEN 0 50 :::139 :::* users:(("smbd",1497,34))
Samba权限:
用户和常规权限:
应用目录设置的权限取决于需要访问此目录的用户以及客户端挂载此目录的方式
客户端一般是通过作为特定用户来验证对SMB服务器的访问权限,从而挂载共享,共享中的所有文件需要能够由用于挂载共享的用户进行读取(并可能写入)
SELINUX上下文及布尔值(服务端,客户端都要配置)
如果将仅通过samba来访问共享目录,则目录以其所有子目录和文件都应具有的布尔值:samba_share_t
这将为samba提供读写访问权限
目录的默认权限:
[root@desktop0 ~]# ls -Z /smb1/ -d
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /smb1/
修改成以下selinux权限:
[root@server /]# semanage fcontext -a -t samba_share_t '/smb1(/.*)?'
[root@server /]# restorecon -FRvv /smb1
restorecon reset /smb1 context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
如果[home]作为共享目录,表示为所有用户启动个人主目录共享,要实现这个功能,需要开启SELinux布尔值:samba_enable_home_dirs
[root@server0 myshare]# setsebool -P samba_enable_home_dirs on
Samba配置文件详解:
配置文件位置:[root@server /]# cat /etc/samba/smb.conf
[global]#定义samba服务器的基本配置
Workgroup#定义服务器的windows工作组
Workgroup = WORDGROUP
netbios name = MYSERVER#主机的netbios名称,每个主机都不相同
log file = /var/log/samba/log.%m#日志存放的目录
server string = Samba Server Version %v#主机的说明
max log size = 50#日志单文档最大的大小,超过会被切割,rotate
Security#控制samba对客户端进行身份验证的方式
Security = user#客户端使用本地samba服务器管理的有效用户名和密码来登录
Share:共享不需要密码,大家都可以访问
User:使用SAMBA的数据库来验证用户,数据库在: passdb backend = tdbsam
Domain:使用外部的服务器密码
Hosts allow#指定允许访问samba服务的主机的列表, 如果未指定,则所有主机都可以访问
如果在[global]是未指定,则可以在共享的目录上配置,如果有指定,则代理全局配置
Hosts allow配置语法:
172.25.0.0/24
172.25.0.0/255.255.255.0
172.25.0.
[2001:db8:0:1::/64]
Desktop.example.com
.example.com 172.25.0.
文件共享节:
[share_name]#共享名称,客户端挂载的名称
comment = samba share#说明文字
path = /smb2#要共享出来的实际目录
Browseable = yes#是否让所有用户看到这个目录
Writable = yes#所有经过身份验证的用户都对共享目录有读写权限,是否可写
Writable = no #这个配合使用
Write list = @admin#只有admin组才有读写权限,不在admin组的用户只有只读权限,是否可写的用户或用户组
Valid users = admin#允许访问共享的用户的列表,如果为空则所有用户均可以访问共享,那些用户可以访问,不管是否能读写,只有这里指定的用户才可以访问共享,其它未指定用户禁止访问
Create mode 和directory mode#用户挂载后,在该共享文件夹下创建文件或目录的默认权限
Read only = no 与writable = yes 功能相同
Host allow = 172.25.0.0/24#允许那个网段的IP来访问
Host allow = 172.25.0 .example.com
Host allow = 172.25.0.0/24,desktop.example.com
仅允许用户fred 和management组的成员对共享myshare具有只读访问权限
[myshare]
Path = /sharepath
Writable = no
Valid users = fred,@management
验证/etc/samba/smb.conf配置文件是否有错误:
[root@server /]# 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 "[smb1]"
Processing section "[smb2]"
Loaded services file OK.
创建samba客户端登录用户:
当security = user 时,需要创建samba用户
Samba用户帐号,在linux系统中(/etc/passwd)必须存在
但是samba的密码和linux的密码可以不同
[root@server /]# useradd -s /sbin/nologin fred
[root@server /]# yum -y install samba-client
Loaded plugins: langpacks
Package samba-client-4.1.1-31.el7.x86_64 already installed and latest version
为fred用户创建samba密码
[root@server /]# smbpasswd -a fred
New SMB password:
Retype new SMB password:
Added user fred.
Pdbedit -L [-vw]
Pdbedit -a [-r] -x -u 用户帐户
Pdbedit -a -m -u 机器帐号
pdbedit -L :查看samba用户
pdbedit -a -u user:添加samba用户,帐号在要/etc/passwd存在
pdbedit -r -u user:修改samba用户信息
pdbedit -x -u user: 删除samba用户
方法一:
先添加系统用户:
[root@server0 samba]# useradd -s /sbin/nologin gmy
再将系统用户添加到samba用户数据库
[root@server0 samba]# pdbedit -a gmy
new password:
retype new password:
方法二:
添加samba用户
pdbedit -a -u smb1 #这个用户要在系统在存在,否则创建失败
new password:然后输入密码
列出系统上配置了samba帐户的细节:
[root@server /]# pdbedit -L
andy:1001:
justin:1003:
fred:1005:
edward:1002:
root:0:root
启动samba服务:
[root@server /]# systemctl restart smb nmb
将samba服务加入到防火墙:
[root@server /]# firewall-cmd --permanent --add-service=samba
success
[root@server /]# firewall-cmd --reload
success
[root@server /]# firewall-cmd --list-all
public (default, active)
interfaces: eth0 eth1 eth2
sources:
services: dhcpv6-client dns mountd nfs rpc-bind samba smtp ssh
ports: 3260/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
在客户端挂载samba共享目录:
查看由服务器samba共享出来的目录列表:
[root@desktop ~]# smbclient -L //172.25.0.11
Enter root's password:
Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
smb1 Disk samba share
smb2 Disk samba share
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
root Disk Home Directories
Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
SERVER Samba Server Version 4.1.1
Workgroup Master
--------- -------
STAFF SERVER
挂载服务端共享的目录:
[root@desktop /]# mount -t cifs -o username=fred //172.25.0.11/smb1 /smbfiles/
Password for fred@//172.25.0.11/smb1: ****#输入fred的密码
[root@desktop /]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 xfs 10G 3.1G 6.9G 31% /
devtmpfs devtmpfs 734M 0 734M 0% /dev
tmpfs tmpfs 750M 0 750M 0% /dev/shm
tmpfs tmpfs 750M 17M 733M 3% /run
tmpfs tmpfs 750M 0 750M 0% /sys/fs/cgroup
//172.25.0.11/smb1 cifs 10G 3.6G 6.5G 36% /smbfiles
通过密码文件来认证:
[root@desktop /]# cat /etc/smb.txt
username=fred
password=fred
[root@desktop /]# mount -t cifs -o credentials=/etc/smb.txt //172.25.0.11/smb1 /smbfiles/
[root@desktop /]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 xfs 10G 3.1G 6.9G 31% /
devtmpfs devtmpfs 734M 0 734M 0% /dev
tmpfs tmpfs 750M 0 750M 0% /dev/shm
tmpfs tmpfs 750M 17M 733M 3% /run
tmpfs tmpfs 750M 0 750M 0% /sys/fs/cgroup
//172.25.0.11/smb1 cifs 10G 3.6G 6.5G 36% /smbfiles
创建自动挂载:
vim /etc/fstab
//server0/myshare/mysharecifs credentials=/etc/smb.txt,sec=ntlmssp,defaults 0 0
#mount
//server0/myshare on /myshare type cifs (rw,relatime,vers=1.0,cache=strict,username=harry,domain=SERVER0,uid=0,noforceuid,gid=0,noforcegid,addr=172.25.0.11,unix,posixpaths,serverino,acl,rsize=1048576,wsize=65536,actimeo=1)
执行多用户SMB挂载:
Multiuser挂载选项将挂载凭据与用于确定每个用户的文件访问权限的凭据进行隔离。与sec=ntlmssp身份验证一起使用
Root用户使用multiuser选项以及一个SMB用户名(对共享内容具有最低访问权限),挂载共享常规用户随后可以使用cifscredis命令将自己的SMB用户名和密码存储在当前会话的内核密钥环中。其对共享的访问权限是通过来自密钥环的自身凭据而非挂载凭据来验证。用户可以随时清除或更改其针对该登录会话的凭据,并且在会话结束后将会清除。文件访问权限完全由SMB服务根据当前使用的访问凭据强制实施。
默认情况下,挂载凭据确定对挂载点的访问权限
先以对共享文件夹具有最低权限的用户进行挂载
使用multiuser选项将挂载凭据与用于确定每个用户的文件访问权限的凭据进行隔离
可与sec=ntlmssp选项一起使用
使用cifscreds将身份验证凭据存储在本地用户的密钥环中
Samba服务端权限:
Vim /etc/samba/smb.conf
[myshare]
comment = myshare files
path = /myshare
writable = no
write list = natasha
valid users = natasha,harry
服务端用户名:
[root@server0 myshare]# grep natasha /etc/passwd
natasha:x:1006:1006::/home/natasha:/sbin/nologin
在客户端安装软件包:
[root@desktop0 ~]# yum install cifs-utils
Loaded plugins: langpacks
rhel_dvd | 4.1 kB 00:00:00
Package cifs-utils-6.2-6.el7.x86_64 already installed and latest version
创建一个与服务器端用户名和密码一样的用户natasha
[root@desktop0 ~]# useradd -u 1006 -g 1006 natasha
[root@desktop0 ~]#passwd natasha
[root@desktop0 ~]#密码redhat
创建认证文件:
[root@desktop0 ~]# cat /etc/smb.txt
username=harry
password=redhat