文章目录
由于实验环境的限制(本人主机上没有windows)本文主要讲解linux下的samba服务的搭建与基本配置。希望以linux下的samba基本操作来更好的理解samba。
搭建samba服务器
实验背景:
服务端: desktop 172.25.254.110 客户端: server 172.25.254.210
实验步骤:
在服务端 desktop
yum install samba(服务的启动软件)samba-common (包括服务的配置文件) samba-client((安装此软件才能添加samba用户) -y #samba服务比较特殊,两个都安装,才能启动samba服务
rpm -qa | grep samba
rmp -qc samba-common #查看配置文件
rpm -ql samba-4.1.1-31.el7.x86_64
cd /etc/samba
ls
vim smb.conf
添加共享
[WESTOS]
comment = share local directory #对共享的描述
path = /sambashare #共享的文件路径
writeable = yes #设置可写
mkdir -vp /sambashare #显示创建过程
chmod 777 /sambashare
getenforce
systemctl start smb
systemctl enable smb
netstat - antlupe | grep smb
firewall-cmd --permanment --list -services
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
firewall-cmd --list-all
在客户端 server中
yum install samba-client -y
smbclient -L //172.25.254.110 -U
查看是否能看到desktop共享的WESTOS
服务端添加samba用户
在服务器端
useradd -s /sbin/nologin(不提供shell登录界面) -M (不建立用户家目录) westos #添加samba用户westos
id westos
smbpasswd -a westos 设置westos的密码
useradd -s /sbin/nologin -M lee
smbpasswd -a lee
ls /home/
pdbedit -L #查看新添加的samba用户
pdbedit -x xxx 删除samba用户
1.
在客户端
smbclient -L //172.25.254.110 -U lee #列出共享
smbclient //172.25.254.110/WESTOS -U lee #进入WESTOS共享
本机位置在root的家目录
smbclient //172.25.254.110/WESTOS -U lee
!ls #查看本机的当前位置的文件
put anaconda-ks.cfg 将此文件上传至共享
在服务器
cd /sambashare/
ll #发现文件的用户和组都是lee
客户端手动挂载
在客户端
mount //172.25.254.110/WESTOS /mnt -o username=lee,password=lee
cd /mnt/
ls
df
umount /mnt
永久挂载
方式一:vim /etc/fstab
添加 //172.25.254.110/WESTOS /mnt cifs defaults,username=lee,password=lee 0(不备份) 0(不检测)
方式二:或者将上述命令写在
/etc/rc.d/rc.local里
mount -a
df
客户端aufs自动挂载
autofs的作用:
将挂载信息写入到/etc/fstab文件中,可实现开机自动挂载。如果远程共享资源过多,则会给网络带宽和服务器的硬件资源带来很大负载。如果挂载的资源长期不使用,也会造成服务器资源的浪费。
autofs自动挂载服务是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,会自动挂载该文件系统。简单来说,将挂载信息写入/etc/fstab文件中,系统在每次开机时都会自动挂载,而autofs服务则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器硬件资源的开销。
在客户端:
yum search autofs
yum install autofs.x86_64 -y
systemctl start antofs.service
systemctl enable autofs.service
目的:
将//172.25.254.110/WESTOS自动挂载到/mnt/WESTOS里面
当你想用目录时,自动挂载(/mnt/WESTOS下),不想用时 ,自动卸载
1.vim /etc/auto.master
/mnt (最终挂载点的上层目录) /etc/auto.samba (挂载的策略文件,名字可以随便起)
2. vim /etc/auto.samba
WESTOS(最终挂载的目录,相对路径) -fstype=cifs(文件系统类型),username=lee,password=lee(常规mount时 -o后面的) ://172.25.254.110/WESTOS(共享源(服务器端)中真实存在的文件)
systemctl restart autofs
上层目录什么意思?
/mnt/haha/ssbss/123 上层目录是 /mnt/haha/ssbss 挂载目录 123
== 测试:==
cd /mnt/
ls 什么都没有
cd WESTOS
df 看到自动挂载
cd 别处 退出挂载点目录时 df 默认等待300秒会自动卸载
改变退出卸载时长
vim /etc/sysconfig/autofs
编辑
TIMEOUT=3
设置不访问时3秒之后 自动卸载
systemctl restart autofs
samba 服务的全局设定
服务端 即改即生效
vim /etc/samba/smb.conf 分号是注释的意思
1.更改域
89 行 workgroup = WESTOS 表示共享的域是WESTOS
测试:
smbclient -L //172.25.254.110
Domain = WESTOS
2.黑白名单的设定
hosts deny = 172.25.254.210 # 禁止210连接
测试:
客户机:smbclient -L //172.25.254.110 连接失败
注释掉黑名单,设置白名单
hosts allow = 172.25.254.210 #只允许210连接
3.匿名用户的登录
map to guest =bad user 把匿名用户(bad user) 映射成guest
并且 在WESTOS域中添加
guest ok = yes
测试:
客户机:smbclient // 172.25.254.110/WESTOS 匿名用户登录时不需要密码
4.匿名用户的挂载
客户机:
mount //172.25.254.110/WESTOS /media/ -o username=guest
df
umount /media/
服务端对某个共享的设定
1.隐藏列出
在WESTOS共享下
添加
browseable = no
测试:
在客户机 smbclient -L //172.25.254.110 发现sharename等被隐藏
2.生效的用户 表示哪些用户或者哪些用户组可以挂载等
在WESTOS共享下添加
valid users = lee
测试:
在客户端
mount //172.25.254.110/WESTOS /mnt/ -o username=westos,password=westos #发现挂载失败
valid users = +lee 或者@lee 表示lee组的成员 是生效的
usermod -G lee westos 将lee组添加至westos的附加组
测试:
mount //172.25.254.110/WESTOS /mnt/ -o username=westos,password=westos 挂载成功
3.write list 可写的用户列表或者组 和 writeable =yes 冲突
不成功就重启服务
在WESTOS共享下添加
write list = westos 应该先将writebale = yes 注释掉
测试:
mount //172.25.254.110/WESTOS /mnt/ -o username=lee,password=lee #失败
cd /mnt/
ll
在服务端
vim /etc/samba/smb.conf
添加 write list = @westos
systemctl restart smb
id lee
usermod -G westos lee
id lee
在客户端
mount //172.25.254.110/WESTOS /mnt/ -o username=lee,password=lee
cd /mnt/
ls
touch ll
ll
在服务端:
4.成为某个共享的超级用户
在共享WESTOS下添加
admin users = lee
在客户端
mount //172.25.254.110/WESTOS /mnt/ -o username=lee,password=lee
cd /mnt/
ls
touch iamlee 发现文件的用户都是root ,id为0
有一部分截图遗漏了
服务端;
samba的多用户(客户端)挂载
在客户端做 多用户是指客户机的多用户
student 和root 是你本机客户机的用户
你添加的 lee westos是samba的用户
1.root用户添加samba用户lee
yum install cifs-utils -y
保证系统内核在3以上
uname -r 查看内核 版本
vim /etc/auto.samba
添加如图
WESTOS -fstype=cifs,credentials=/root/smbpass,sec=ntlmssp,multiuser ://172.25.254.110/WESTOS
1.2.3.
vim /etc/root/smbpass #root用户执行samba服务时,可用的samaba用户
添加
useraname=lee
password=lee
chmod 600 /root/smbpass
systemctl restart autofs
1.2.3.
cd /mnt/
cd WESTOS
ls
客户端:
服务端:
2.student用户添加samba用户westos
开始时
su -student
cd /mnt/
cd WESTOS
ls 显示被拒绝
rpm -ql cifs-utils
cifscreds --help
添加 cifscreds add -u westos 172.25.254.110
cd /mnt/
cd WESTOS
ls 成功
touch ff
ll 发现用户和组的id ,虽然id和服务器端一样都是1001,但是用户名不一样。
cifscreds clearall #清除student用户的所有samba用户
cifscreds clear -u westos 172.25.254.110 #清除指定用户
cd /mnt/
cd WESTOS
ls 被拒绝
selinux影响下的samba的相应设置
打开 desktop(服务端)的selinux
getenforce
1.自建目录 要共享 ——>更改安全上下文
ls -Zd /sambashare/
semanage fcontext -a -t samba_share_t '/sambashare(/.*)?'
restorecon -RVVF /sambashare/
在客户端
cd /mnt/
cd WESTOS
touch bb
ll
2.系统目录的更改要共享——>设置它的sebool值
不能改它的安全上下文 否则会影响目录对其他的 影响
在服务端
vim /etc/samba/smb.conf
在WESTOS共享中
更改共享文件为
path = /mnt
touch /mnt/hello
不做任何设置时,students ls不到任何内容
getsebool -a | grep samba
setsebool -P samba_export_all_rw on 或者1 或者true
在客户端
cd /mnt/
cd WESTOS
ls
touch gg
ll
注意:
smb/cifs 主要实现windows——>linux(unix) ----samba
linux/unix——> linux/unix ====nfs