centos7 yum安装samba及管理
关闭SELINUXsed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/configsetenforce 0安装 smbyum -y install samba samba-client启动并设置我开机自运行systemctl start smb nmbsystemctl enable smb nmb防火墙 开启samba默认端口.
关闭SELINUX
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
安装 smb
yum -y install samba samba-client
启动并设置我开机自运行
systemctl start smb nmb
systemctl enable smb nmb
防火墙 开启samba默认端口
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
查看samba版本号
smbd -V
添加访问用户
先创建操作系统用户
useradd -s /sbin/nologin user01
创建smb登录用户
smbpasswd -a user01
修改SMB配置文件
vi /etc/samba/smb.conf 追加
[sharefile-user01]
comment = Shared Directories
path = /user01
public = no
admin users = user01
valid users = user01
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777
force directory mode = 0777
force create mode = 0777
创建要共享的路径,这里的/user01
mkdir /user01
设置文件访问权限
chown -R 777 /user01
重启smb服务
systemctl restart smb nmb
windows测试访问
运行输入\\192.168.53.26
共享管理
列出用户列表 pdbedit -L
列出用户详细信息的列表pdbedit -Lv
-
修改smb登录密码
smbpasswd user01
systemctl restart smb nmb
注:
- restart了,如该重置密码用户正在访问,马上无法访问,需要注销一次系统,再次进入才有验证弹窗;
- 如不restart,被重置密码的用户重置前已经登录,那依然可以继续访问,只有下一次登录才被阻止;
- 该用户未登录,重置后,不重启,可用新密码登录。
-
添加smb用户,并允许访问上面创建的共享
一样的先创建操作系统用户 > 创建smb登录用户;
useradd -s /sbin/nologin user02 && smbpasswd -a user02
在/etc/samba/smb.conf 中的共享区的valid users 追加用户
valid users = @ user01 user02
只追加valid users仅可访问,无法写入,需admin users行也追加用户名(对该共享具有完全控制权限)
-
删除SMB用户
smbpasswd -x user01
systemctl restart smb nmb
这个时候/etc/passwd 还有存在用户,继续删除
userdel user01
-
关闭用户home目录的共享
当共享目录名为非用户名时,用户的home/user01“家目录” 也会被共享了,并可读写权限,这是不安全的,
关闭方式:
在/etc/samba/smb.conf 中将[homes]及其区间配置都注释了即可。
-
定义用户组访问权限
valid users和admin users都支持以添加组和用户方式,组为@后带组名表现形式,下面是操作流程:
groupadd IT
useradd IT001 -g IT -s /sbin/nologin
useradd IT002 -g IT -s /sbin/nologin
cat /etc/passwd
smbpasswd -a IT001
cat /etc/samba/smb.conf | grep IT
valid users = @ IT user01 user02
systemctl restart smb nmb
即可使用IT组的用户IT001或IT002登录访问
如需黑名单一个组用户,添加
invalid users = IT002
-
禁用与恢复用户
禁用用户 pdbedit -c '[D]' -u user01 | grep Flags
恢复用户 pdbedit -c '[ ]' -u user01 | grep Flags
(已登录用户,不会受到影响,需重启systemctl restart smb nmb )
-
共享目录指定用户可见
需求:用户kevin登录后只能看到他有权限的共享目录,而其他用户登录也不能看到kevin的共享目录。
操作方式:
在/etc/samba下建立一个文本文件其名称为kevin.smb.conf
cat /etc/samba/kevin.smb.conf
[kevin]
security = user
path = /data/kevin
valid users = @kevin
read list = @kevin
write list = @kevin
writable = yes
create mask = 0777
directory mask = 0777
在/etc/samba/smb.conf文件中引用子配置文件
[global]区间中添加
config file = /etc/samba/%U.smb.conf
创建共享目录
mkdir -p /data/kevin
授权目录权限
chown kevin.kevin -R /data/kevin
新建用户kevin
useradd -s /sbin/nologin kevin && smbpasswd -a kevin
当以kevin的身份访问Samba服务器,只能看到共享目录kevin,其他在smb.conf中定义的共享资源都无法看到。
-
访问控制
允许/禁止来源地址客户端的访问
可在[global]全局或指定作用共享区间中添加
ip白名单 hosts allow=192.168.53.0/255.255.255.0 EXCEPT 192.168.53.63
ip黑名单 hosts deny=192.168.53.99/255.255.255.255
监听绑定设置
在[global]全局参数中添加
bind interfaces only = yes
如绑定网卡interfaces =eth0 #可以多个
如绑定网络地址interfaces = 192.168.53.26 #可以多个
修改通信端口smb ports = 4455
限制客户端访问连接数目
可在[global]全局或指定作用共享区间中添加
max connections = 0
0表示不限制,超出连接数目,则新的连接请求将被拒绝
设置无操作断开会话时间
deadtime = 10
隐藏点.文件
hide dot files = yes
隐藏指定文件/夹
hide files = /*.exe/*档案/
禁止上传类型文件,并带隐藏文件功能
veto files = /*.exe/*.rar/*.zip/
-
centos作客户端挂载SMB共享盘
安装Samba客户端软件
yum -y install cifs-utils
手动挂载
mount -t cifs -o username=kevin,password=passwd,uid=0,gid=0 //192.168.53.26/kevin /mnt
或mount.cifs -o username=kevin,password=passwd //192.168.53.26/kevin /mnt
注意mount.cifs 指定挂载用的uid,gid无效
uid=0,gid=0 指定用户,组去挂载,0 0为root,当为root时,其他用户进入共享可读不可写;
在已经挂载的samba存储内,chown更改归属和chomd修改权限都无作用。
如需隐藏密码,不带password=即可手动输入
挂载免验证共享
mount.cifs //192.168.53.26/guestfile /mnt
Password for root@//192.168.53.26/guestfile: (直接回车)
查看挂载
df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 37G 2.1G 35G 6% /
devtmpfs devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs tmpfs 1.5G 9.5M 1.5G 1% /run
tmpfs tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/sda1 xfs 1014M 155M 860M 16% /boot
tmpfs tmpfs 300M 0 300M 0% /run/user/0
//192.168.53.26/kevin cifs 37G 2.1G 35G 6% /mnt
卸载挂载
umount //192.168.53.26/kevin
设置开机自动挂载
将用户名、密码、共享域的信息写入到一个认证文件中
vi /root/auth.smb
username=kevin
password=passwd
domain=SAMBA
更改密码文件权限
chmod 600 /root/auth.smb
将挂载信息写入/etc/fstab,实现开机挂载
//192.168.53.26/kevin /mnt cifs credentials=/root/auth.smb 0 0
测试挂载是否成功,无报错即成功
mount -a
挂载非445端口的smb
mount.cifs -o username=kevin,password=kevin,port=4455 //192.168.53.26/kevin /mnt
以只读方式挂载
mount.cifs -o username=kevin,password=kevin --ro //192.168.53.26/kevin /mnt
-
创建win免登录访问的共享
[global]全局参数中
security = user下一行添加
map to guest = Bad User
再新建guest访问的区间
[guestfile]
comment=Shared guest Dir
path=/guestfile
browseable=yes
writable=yes
guest ok=yes
create mask = 0775
directory mask = 0775
创建目录与更改目录权限
mkdir /guestfile
chown -R nobody:nobody /guestfile
systemctl restart smb nmb
win免验证直接访问guestfil成功,点击其他需验证的共享才跳验证窗口
-
日志
[global]全局参数中添加
log file = /var/log/samba/log.%m
log level=3 #等级越大,记录内容越多
日志文件默认存放/var/log/samba/中,以客户端计算器名字或ip命名的文件
查看登录成功的记录
cat log.PC8 | grep 'connect to service'
pc8 (ipv4:192.168.53.99:63047) connect to service sharefile-user01 initially as user user01 (uid=0, gid=1000) (pid 12105)
查看登录失败的记录
cat log.PC8 | grep 'request_error_ex'
查看操作文件的记录
cat log.z97esx-2008-f | grep 123.doc
-
在windows连接非445端口smb
- 因win默认也固定只访问TCP445为目标,可本机或其他机器,起一个端口转发服务:如本机监听445转发远端的4455(太多方式了,不细说了)访问\\127.0.0.1即可。
- Android可使用“FX文件管理器8.0及其以上版本”。
案例参数说明
[kevin] # 自定义共享名
comment = Home Directories # 描述符,是给系统管理员看的
path = /home/kevin # 共享的路径
public = yes # 是否公开,也就是是否能在网上邻居看到该共享
browseable = yes # 共享的目录是否让所有人可见
writable = yes # 是否可写
guest ok = no # 是否拒绝匿名访问,仅当安全级别为 share 时才生效
workgroup = WORKGROUP # 工作组,要设置成跟 Windows 的工作组一致
server string = Samba Server Version %v # 其他 Linux 主机查看共享时的提示符
netbios name = MYSERVER # 用于在 Windows 网上邻居上显示的主机名
hosts allow = 127. 192.168.12. 192.168.13. # 指定允许访问 samba 服务器的主机
security = share # 定义安全级别
log file = /var/log/samba/log.%m # 定义日志文件,每个访问的主机会产生独立的日志文件,%m 是客户端主机名
max log size = 50 # 定义单个日志的最大容量(KB)
passdb backend = tdbsam # 用户的存储方式,smbpasswd表示明文存储,tdbsam 表示密文存储
deadtime = 10 # 客户端在10分钟内没有打开任何 Samba 资源,服务器将自动关闭会话
display charset = UTF8 # 设置显示的字符集
max connections = 0 # 设置最大连接数,0表示无限制,如果超过最大连接数则拒绝连接
guest account = nobody # 设置匿名账户为nobody
load printers = yes # 是否在启动 Samba 时就共享打印机
cups options = raw # 设置打印机使用的方式
valid users = user1 user2 user3 # 指定哪些用户可访问,如不指定则所有用户都可访问
invalid users = user1 user2 # 指定哪些用户不可以访问
create mask = 0775 # 客户端上传文件的默认权限
directory mask = 0775 # 客户端创建目录的默认权限
write list = user1 user2 user3 # 设置可对文件进行写操作的用户
admin users = user1 # 设置共享目录的管理员,具有完全权限
smbclient
smbclient主要用在Linux访问SMB共享文件,实现文件的传输,也方便应用于脚本运作。
安装
yum install -y samba-client
列出目标服务器的共享目录
smbclient -L //192.168.53.26 -U user01%user01
连接进入共享目录
[root@localhost ~]# smbclient //192.168.53.26/kevin -U kevin%passwd
smb: \> ls
查看共享目录下的文件
smbclient -c "ls" //192.168.53.26/kevin -U kevin%passwd
在共享目录创建文件
smbclient -c "mkdir $(date "+%Y%m%d%H%M")" //192.168.53.26/kevin -U kevin%passwd
下载文件
smbclient -c "get a.exe" //192.168.53.26/kevin -U kevin%passwd
上传文件
smbclient -c "put a.exe" //192.168.53.26/kevin -U kevin%passwd
注意:下载上传是覆盖目标/合并目录,(put a.exe a.exe1)是上传并重命名批量上传(多个单文件用,批量prom)
smbclient -c "prom; mput a.exe b.exe" //192.168.53.26/kevin -U kevin%passwd
批量命令mget和mput
批量下载 [不含递归]
smbclient -c "prom; mget * " //192.168.53.26/kevin -U kevin%passwd
批量上传[含递归文件,递归用recurse ON]
smbclient -c "prom;recurse ON; mput *" //192.168.53.26/kevin -U kevin%passwd
批量下载[含递归文件]
smbclient -c "prom;recurse ON; mget *" //192.168.53.26/kevin -U kevin%passwd
批量下载指定目录
smbclient -c "prom;recurse ON; cd 20201010/; mget *" //192.168.53.26/kevin -U kevin%passwd
批量上传到共享中的目录
smbclient -c "prom; cd 20201010;mput *" //192.168.53.26/kevin -U kevin%passwd
批量上传到共享以今天日期的文件夹
smbclient -c "prom; mkdir $(date "+%Y%m%d");cd $(date "+%Y%m%d");mput *" //192.168.53.26/kevin -U kevin%passwd
链接非默认端口
smbclient -p 4455 -c "ls" //192.168.53.26/kevin -U kevin%passwd
参看文献
更多推荐
所有评论(0)