SAMBA服务
访问安装
http://www.samba.org/ #模拟window共享[root@vm ~]# yum -y install samba
[root@vm ~]# systemctl start smb
[root@vm ~]# ss -antlp| grep smb
LISTEN 0 50 *:445 *:* users:(("smbd",pid=20155,fd=36))
LISTEN 0 50 *:139 *:* users:(("smbd",pid=20155,fd=37))# windows 访问 linux上的samba
win+r \\10.1.0.11# linux 访问 linux上的samba
[root@client ~]# yum -y install samba-client
[root@client ~]# smbclient -L 10.1.0.11
Enter SAMBA\root's password:# linux 访问window上的samba,windows要先开启samba
win net user test 123 /add [root@client ~]# smbclient -L 10.1.0.1 -U test%123
[root@client ~]# smbclient -L //10.1.0.1/share -U test%123
smb: \> ls
smb: \> put files # 上传
samba 配置
# samba 配置
全局设置:[global] 服务器通用或全局设置的部分特定共享设置:[homes] 用户的家目录共享[printers] 定义打印机资源和服务[sharename] 自定义的共享目录配置
其中:#和:开头的语句为注释,大小写不敏感samba配置中的宏定义:%m 客户端主机的NetBIOS名%M 客户端主机的FQDN%H 当前用户家目录路径%U 当前用户的用户名%g 当前用户所属组%h samba服务器的主机名%L samba服务器的NetBIOS名%I 客户端主机的IP%T 当前日期和时间%S 可登录的用户名[root@vm ~]# rpm -ql samba-common|grep conf
/etc/samba/smb.conf
/etc/samba/smb.conf.example[root@vm ~]# cat /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.[global]workgroup = SAMBA # window里的工作组# netbios name = linux39 #此设置可以不用IP访问samba 需要启动 nmb服务才可以生效# hosts allow = 127. 10.1.0. # 127的IP 10.1.0.网段的IP可访问# log file=/var/log/samba/log.%I #日志文件名,调用samba宏# log_level=2 # 日志级别security = userpassdb backend = tdbsamprinting = cupsprintcap name = cupsload printers = yescups options = raw# 设置家目录共享
[homes]comment = Home Directoriesvalid users = %S, %D%w%Sbrowseable = Noread only = Noinherit acls = Yes[printers]comment = All Printerspath = /var/tmpprintable = Yescreate mask = 0600browseable = No[print$]comment = Printer Driverspath = /var/lib/samba/driverswrite list = @printadmin rootforce group = @printadmincreate mask = 0664directory mask = 0775
管理SAMBA用户
实现samba用户说明包:samba-common-tools工具:smbpasswd pdbedit用户数据库:/var/lib/samba/private/passdb.tdb说明:samba用户须是Linux用户,建议使用/sbin/nologin#添加samba用户: smbpasswd -a <user>pdbedit -a -u <user> #修改用户密码:smbpasswd <user># 删除用户和密码:
smbpasswd -x <user>
pdbedit -x -u<user># 查看samba用户列表:
pdbedit -L -V# linux用户
[root@vm ~]# useradd -s /sbin/nologin smb1# 添加为samba账号
[root@vm ~]# smbpasswd -a smb1 # -a 增加用户 -x 删除
New SMB password:
Retype new SMB password:
Added user smb1.
[root@vm ~]# smbpasswd smb1 # 修改smb1密码
[root@vm ~]# pdbedit -L
smb1:2001:[root@vm ~]# pdbedit -Lv # 查看详细的信息
---------------
Unix username: smb1
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2709267256-3865259140-523429974-1000
Primary Group SID: S-1-5-21-2709267256-3865259140-523429974-513
...[root@vm ~]# smbstatus # 查看状态
Samba version 4.10.16
...
Service pid Machine Connected at[root@client ~]# smbclient -L 10.1.0.11 -U smb1%byd
[root@client ~]# smbclient //10.1.0.11/smb1 -U smb1%byd
Try "help" to get a list of possible commands.
smb: \>\\10.1.0.11\smb1
配置特定目录共享
每个共享目录应该有独立的[ ]部分
[共享名称] 远程网络看到的共享名称
comment 注释信息
path 所共享的目录路径
public 能否被guest访问的共享,默认no,和guestok类似
browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏
writable=yes 可以被所有用户读写,默认为no
writable=yes 等价readonly=no,二选一
write list用户,@组名,+组名,用,分隔,如writable=no,列表中用户或组可读写,不在列表中用户只读 valid users特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔
vim /etc/samba/smb.conf
[share]
path=/app/dir
valid users=admins,@docker
write list=@docker
#writeable = no
browseable = nogroupadd docker
usermod -G docker smb1
groupmems -l -g docker
利用SAMBA实现指定目录共享
#在samba服务器上安装samba包
yum -y install samba
#创建samba用户和组
groupadd -r admins
useradd -s /sbin/nologin -G admins smb1
smbpasswd -a smb1
useradd -s /sbin/nologin smb2
smbpasswd -a smb2
#创建samba共享目录,
mkdir /testdir/smbshare
chgrp admins /testdir/smbshare
chmod 2775 /testdir/smbshare#samba服务器配置
vim/etc/samba/smb.conf
...
[share]
path =/testdir/smbshare
write 1ist = @adminssystemctl enable --now smb nmb
挂载smb
#用smb1 用户挂载smb共享到本机并访问
mkdir/mnt/smb1
mount -o username=smb1,password=smb //smbserver/share /mnt/smb1
echo"Hello smb1 ">/mnt/smb1 /file.txt#fstab 挂载
yum -y install cifs-utils
vim /etc/fstab
//10.1.0.11/share /mnt/ cifs cred=/etc/user.txt 0 0 cat /etc/user.txt
username=smb1 #或user=smb1
password=password #或pass=password
chmod 600 /etc/user.txt# 挂载问题不能开机
Linux16 行尾 rw init=/sysroot bin/sh
vi /sysroot/etc/fstab
不同samba用户访问相同的samba共享
实现不同samba用户访问相同的samba共享,实现不同的配置
useradd -s /sbin/nologin -r smb1
useradd -s /sbin/nologin -r smb2
useradd -s /sbin/nologin -r smb3
smbpasswd -a smb1
smbpasswd -a smb2
smbpasswd -a smb3#修改samba配置文件
vim /etc/samba/smb.conf
#在workgroup下加一行
config file=/etc/samba/conf.d/%U # 说明:%U表示用户名 每个用户有自己的配置
[share]
Path=/data/dir
Read only= NO
Guest ok = yes
write list=@wheel#针对smb1和smb2用户创建单独的配置文件
vim /etc/samba/conf.d/smb1
[share]
Path=/data/dir1
Read only=No
Create mask=0644 #说明:默认为744vim /etc/samba/conf.d/smb2
[share]
path=/data/dir2
systemctl restart smb nmb#用户smb1,smb2,smb3访问share共享目录,看到目录是不同目录
smbc1ient //sambaserver/share -U smb1%smb1
smbclient //sambaserver/share -U smb2%smb2
smbc1ient //sambaserver/share -U smb3%smb3