互联网的意图:共享
cifs文件的存储:sun和微软联合开发 使用windows和linux之间文件共享
文件系统的存储分离,提高数据交互的稳定性
1.Samba 文件共享
用 Internet 文件系统 (CIFS) 也称为服务器信是适用于MicrosoftWindows 服务器和客户端的标准文件和打印机共享系统息块 (SMB)。
Samba 服务可用于将 Linux 文件系统作为 CIFS/SMB 网络文件共享进行共享 ,并将 Linux 打印机作为 CIFS/SMB 打印机共享进行共享。
2.Samba 服务的组成部分
- 软件包:
Samba-common ——>Samba 的支持文件
Samba-client ——>客户端应用程序
Samba ——>服务器应用程序
- 服务名称:smb nmb
- 服务端口 :通常使用 TCP/445 进行所有连接。还使用UDP137 、 UDP138 和 TCP/139 进行向后兼容
- 主配置文件 :/etc/samba/smb.conf
3.保护 Smb
samba_enable_home_dirs
布尔值允许本地 Linux 主目录作为 CIFS 文件共享导出至其他系统
use_samba_home_dirs
布尔值允许挂载远程 CIFS 文件共享并将其用作本地 Linux 主目录
samba_share_t
smb 共享目录的 selinux 安全上下文
samba_export_all_ro 和 samba_export_all_rw
共享系统目录时要打开
4.Samba服务器的安装及访问调试:
yum install samba-common samba-client.x86_64 samba.x86_64 -y ##安装软件
systemctl stop friewalld ##默认受火墙影响
systemctl start smb ##开启服务
setsebool -P samba_enable_home_dirs on ##打开用户可以查看家目录的权限
smbpasswd -a student ##建立用户:smb用户必须时本机存在的用户
pdbedit -L ##查看smb用户列表
pdbedit -x student ##删除用户
测试:
smbclient -L //172.25.254.118 -U student ##访问共享目录
smbclient //172.25.254.118/student -U student ##查看家目录
实验:
- 建立用户:
useradd hello -s /sbin/nologin ##禁止用户交互式登录 useradd westos -s /sbin/nologin -M ##-M:建立用户时不建立家目录
ls /home/ smbpasswd -a westos smbpasswd -a hello pdbedit -L
-
测试:
smbclient //172.25.254.118/westos -U westos ##不能访问家目录 smbclient //172.25.254.118/hello -U hello ##可以访问加目录
5.Smaba共享目录
1)共享自己建立的文件
vim /etc/samba/smb.conf
[westos] ##共享名称(能看到的名字)
comment=/westos ##共享说明(能看到的目录)
path =/westos ##共享目录路径
systemctl restart smb
共享目录自建立目录时需要修改的selinux属性,此方法修改只针对修改目录
semanage fcontext -a -t samba_share_t '/westos(/.*)?'
restorecon -RvvF /westos/
注意:selinux重启安全上下文会改变
测试:
smbclient -L //172.25.254.118/ -U hello ##查看有哪些共享目录
访问被拒绝:可能是安全上下文不一致
smbclient //172.25.254.118/westos -U hello ##进入共享目录
ls ##可以看到目录里的文件
2)共享系统级的文件
共享系统建立目录要修改的linux属性,此方式修改针对所有目录,一旦开放,selinux不保护目录访问
vim /etc/samba/smb.conf
[mnt]
comment=mnt dir
path=/mnt
systemctl restart smb
测试:
smbclient //172.25.254.118/mnt -U hello
ls ##看不到共享目录里的内容
更改系统及安全上下文会有新的问题出现(这里不多作说明)
bool打开后会忽略安全上下文
共享自己的文件也可以用这个方法,但是权限过大不安全
getsebool -a | grep samba
setsebool -P samba_export_all_ro on ##打开只读开关
setsebool -P samba_export_all_rw on ##读写
测试:
smbclient //172.25.254.118/mnt -U hello
ls ##可以看到共享目录里的内容
NT_STATUS_IO_TIMEOUT
问题的原因:主机名解析失败
问题解决办法:修改本地解析:vim /etc/hosts
6.访问控制
访问列表,拒绝列表
vim /etc/samba/smb.conf
方法1:全局设定
方法2:局部设定
hosts allow =172.25.254.118 ##允许118挂载
systemctl restart smb
vim /etc/fstab
//172.25.254.118/westos /mnt cifs defaults,username=hello,password=111 0 0 ##设置自动挂载策略
测试:在118上
mount -a
df ##挂载成功
在60上:
mount //172.25.254.118/westos /mnt -o username=hello,password=111
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) ##挂载失败
hosts deny =172.25.254.118 ##禁止118挂载
hosts deny =172.25.254. ##禁止172.25.254.整个网段挂载
7.samba匿名访问
vim /etc/samba/smb.conf
systemctl restart smb
测试:在60主机上(测试主机需要安装samba-client)
mount //172.25.254.118/mnt /mnt/ -o username=guest,passwd=""
df ##查看,挂载成功
smbclient //172.25.254.118/mnt ##不需要输入密码,按回车
ls ##可以看到目录下的内容
8.管理参数
1)所有用户均可写:writable = yes
测试:挂载后在mnt下建立文件看是否成功
systemctl restart smb
mount -a
df
cd /mnt/
touch file
ls
**建立不成功的原因:
1.共享文件的安全上下文是否为samba_share_t
2.共享文件是否有写权限
3.samba_export_all_rw 的bool值是否为on
2)指定用户可写:write list = username
指定westos用户可写,+和@都表示用户组(westos组)成员可写
测试:用hello用户挂载后在mnt下建立文件失败
用wetos用户挂载后在mnt下建立文件成功
把hello用户添加到westos用户组下
用hello用户挂载后可在mnt下创建文件
3)指定用户可共享:valid users=+username
valid users=+westos ##设置共享的有效用户为westos(谁可以挂载),包括组成员
测试:
student 用户不能挂载
westos用户挂载成功,hello属于westos用户组也挂载成功
4)浏览权限browseable =No/yes ##浏览权限(不能查看系统共享文件)
设置browseable =No,登录后看不到westos共享文件
设置browseable =yes ,登录后可看到westos共享文件。
5)admin users =westos ##设定的共享超级用户为westos(谁建立的文件的所有者所有组就是谁)
9.多用户挂载
谁挂载谁访问
用自己的身份不用挂载的身份
默认不能访问,认证后能访问
使用的不是文件里的用户身份
开启其他用户的认证,认证方式
在客户端:
yum install cifs-utils -y
vim /root/smbpass
chmod 600 /root/smbpass
mount -o credentials=/root/smbpass,multiuse,sec=ntlmssp //172.25.254.118/westos /mnt/
mount
#credentials=/root/haha 指定挂载时所用到的用户文件
#multiuser 支持多用户认证
#sec=ntlmssp 认证方式为标准smb认证方式
删除/mnt下的内容
cd /mnt/
ls
rm -fr *
ls
查看用户信息
touch /mnt/file
su - kiosk
ll /mnt ##因为没有作smb的认证所以无法访问smb共享
cifscreds add -u westos 172.25.254.118