第八周
文件服务器(Samba)
Samba服务主要提供什么功能
- 文件共享服务
- 文件同步服务
- 文件和打印共享服务
Samba服务的主配置文件在哪
/usr/lib/smb.conf
/etc/samba/samba.conf
/etc/samba/smb.conf
项目8.1基本文件共享
项目背景
你是某公司的网络管理员,公司的一台文件服务器运行RHEL7.5.公司大部分员工的桌面电脑运行Windows系统。请配置服务器实现如下目标项目要求
为用户创建只读共享 /share/download
- 共享名为“下载区”
- 该共享下的资源公户只可下载
为用户创建可写共享 /share/upload- 共享名为“上传区”
- 该共享下的资源用户即可上传也可下载
- 用户只能管理(删除、修改、更名)自己上传的资源
项目8.2部门级文件服务器
项目背景
公司有一Linux服务器作为文件服务器,公司内部客户端主要是由Windows+Linux组成的异构操作系统平台,作为管理员的你现需解决跨平台文件共享问题,具体需求如下:项目要求
增加用户与用户组
- 组:employees 用户:employee1,employee2,employee3
- 组:managers 用户:manager1,manager2,manager3
- 组: projects 用户:project1,project2,project3
- 组:sales 用户:sale1,sale2,sale3
功能要求
- /share/目录为共享文件的根目录,要求为所有内网用户均能访问;
- /share/public/目录作为发布公共信息使用,要求所有用户拥有下载权限;
- /share/private/目录作为公司内部资源发布使用,要求managers(rwx),projects(rx),slaes(rx),employee1(rx)
- /share/project/目录发布工程信息,要求managers(rwx),projects(rwx),sale1(rx)
背景知识
访问Samba服务器
从Windows客户端访问
- UNC路径
- \服务器IP
从Linux客户端访问
- `mount.cifs -o user=username,pass=password //ip/ 共享名 /挂载点
实现简单Samba共享
配置Samba服务器
安装
yum install samba
修改/etc/samba/smb.conf
重启服务systemctl start smb.service
添加Samba用户
smbpasswd -a username
pdbedit -a username
pdbedit -L
注意firewall、SELinux(可以暂时关闭)
smb.conf修改范例
user级安全——只读共享
修改/etc/samba/smb.conf
注意:security = user \RHEL不再支持share级别
Eg:
[public]
path = /myshare/download
writable = no
public = yes
systemctl restart smb.service
在Windows运行中键入\Server_IP验证
- 更换用户连接时需要运行
net use * /d /y
user级安全——可读可写共享
修改/etc/samba/smb.conf
Eg:
[incoming]
path = /myshare/upload
writable = yes
public = yes
systemctl restart smb.service
在Windows运行中键入\Server_IP验证
注意:Linux文件权限中其他用户是否可写
ACL权限
设置ACL
针对用户
setfacl -m u:username:rwx /file
针对组
setfacl -m g:groupname:rwx /file
删除ACL
setfacl -x u:username /file
查看ACL
getfacl
实施步骤:批量添加用户
#!/bin/bash
groupadd ${1}s
for i in {1..3}
do
useradd -s /sbin/nologin -g ${1}s ${1}${i}
echo -e "123\n123" | smbpasswd -s -a ${1}${i} //pdbedit -t -a
done
函数方法的实现参考
#!/bin/bash
function function_adduser(){
groupadd ${1}s
for i in {1..3}
do
useradd -s /sbin/nologin -g ${1}s ${1}${i}
echo -e "123\n123" | smbpasswd -s -a ${1}${i}
done
}
for name in {employee,project,sale,manager}
do
function_adduser ${name}
done
实施步骤:文件权限配置
mkdir /share/{public,private,project} -p
setfacl -m g:managers:rwx,g:projects:rx,g:sales:rx,u:employee1:rx /share/private/
setfacl -m g:managers:rwx,g:projects:rwx,u:sale1:rx /share/project/
chmod o-x /share/{project,private}
实施步骤:配置服务环境
相关服务配置
systemctl enable --now smb.service
防火墙配置
firewall-cmd --add-service=samba --permanent
firewall-cmd --reload
SELinux配置
chcon -R -t samba_share_t /myshare/ //临时修改
semanage fcontect -a -t samba_share_t "/myshare(/.*)?"
restorecon -Rv /myshare/
setsebool -P samba_enable_home_dirs on
拓展:实现Linux Samba Client
配置Samba客户端
- Windows端创建共享(Administrator 命令解释器)
net user hcz01 123 /add
mkdir d:\\share
echo hello > d:\\share\\hello.txt
net share mytest=d:\\share /grant:hcz01,CHANGE
- 安装Linux cifs工具
yum provides mount.cifs
yum install cifs-utils
- 从Linux连接Windows共享
mount.cifs -o user=qinwen01,pass=123 //ip/mytest /media