实现目标:
分别为财务部、人事部、销售部建立3个目录cwb、rsb、xsb用于存放各部门文件及资料,并只允许各部门账号访问。 建立三个测试账号cwb_test、rsb_test、xsb_test加入cwb、rsb、xsb中对应的组,且三个测试账号不出现在系统登陆界面中。 测试是否对应的账号打开的时对应的文件夹。
1. 创建部门目录
首先,创建三个目录分别对应财务部、人事部和销售部。
bash
深色版本
sudo mkdir -p /srv/samba/cwb
sudo mkdir -p /srv/samba/rsb
sudo mkdir -p /srv/samba/xsb
2. 设置目录权限
为每个目录设置适当的权限,以便只有相应组的成员可以访问。
bash
深色版本
sudo chmod -R 0770 /srv/samba/cwb
sudo chmod -R 0770 /srv/samba/rsb
sudo chmod -R 0770 /srv/samba/xsb
3. 创建部门组
为每个部门创建一个组。
bash
深色版本
sudo groupadd cwb
sudo groupadd rsb
sudo groupadd xsb
4. 创建测试账号
为每个部门创建一个测试账号,并将其添加到相应的组中。同时,设置这些账号不允许通过SSH登录。
bash
深色版本
sudo useradd -M -d /srv/samba/cwb -s /sbin/nologin cwb_test
sudo useradd -M -d /srv/samba/rsb -s /sbin/nologin rsb_test
sudo useradd -M -d /srv/samba/xsb -s /sbin/nologin xsb_test
sudo usermod -aG cwb cwb_test
sudo usermod -aG rsb rsb_test
sudo usermod -aG xsb xsb_test
5. 设置 Samba 配置
编辑Samba配置文件/etc/samba/smb.conf
,添加以下内容:
ini
深色版本
[cwb]
path = /srv/samba/cwb
valid users = @cwb
read only = no
browsable = yes
[rsb]
path = /srv/samba/rsb
valid users = @rsb
read only = no
browsable = yes
[xsb]
path = /srv/samba/xsb
valid users = @xsb
read only = no
browsable = yes
6. 设置 Samba 用户密码
为每个测试账号设置Samba密码。
bash
深色版本
sudo smbpasswd -a cwb_test
sudo smbpasswd -a rsb_test
sudo smbpasswd -a xsb_test
7. 启动并启用 Samba 服务
确保Samba服务已经启动并设置为开机自启。
bash
深色版本
sudo systemctl start smb
sudo systemctl start nmb
sudo systemctl enable smb
sudo systemctl enable nmb
8. 防火墙设置
如果防火墙是开启的,需要允许Samba流量。
bash
深色版本
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
9. 测试访问
从另一台计算机上测试访问Samba共享,确保每个账号只能访问其对应的共享目录。
在Windows上测试
打开“文件资源管理器”。
在地址栏中输入
\\<your_server_ip>\cwb
并按回车键,使用cwb_test
账号登录。重复上述步骤,分别测试
rsb
和xsb
目录,使用rsb_test
和xsb_test
账号登录。
在Linux上测试
使用
smbclient
命令测试连接:
bash
深色版本
smbclient //server_ip/cwb -U cwb_test
smbclient //server_ip/rsb -U rsb_test
smbclient //server_ip/xsb -U xsb_test
或者使用
mount
命令挂载共享目录:
bash
深色版本
sudo mount -t cifs -o username=cwb_test //server_ip/cwb /mnt/cwb
sudo mount -t cifs -o username=rsb_test //server_ip/rsb /mnt/rsb
sudo mount -t cifs -o username=xsb_test //server_ip/xsb /mnt/xsb
10. 确保测试账号不出现在系统登录界面
如果你使用的是图形界面(如GNOME),可以通过以下方式隐藏这些账号:
编辑
/etc/lightdm/users.conf
文件:
bash
深色版本
sudo nano /etc/lightdm/users.conf
在文件中添加以下内容:
ini
深色版本
hidden-users=cwb_test rsb_test xsb_test
保存并退出编辑器,重启LightDM服务:
bash
深色版本
sudo systemctl restart lightdm
这样,这些测试账号就不会出现在系统登录界面上了。
完成以上步骤后,你应该能够成功地为财务部、人事部和销售部分别创建共享目录,并确保只有相应的账号可以访问各自的目录。
可能遇到的问题:
如果你遇到“没有权限写入”的问题,可能是由于以下几个原因导致的:
目录权限设置不正确:确保每个目录的权限设置正确,允许组内的用户读写。
Samba配置文件中的权限设置不正确:确保Samba配置文件中的
read only
设置为no
。SELinux策略限制:如果SELinux处于 enforcing 模式,可能会阻止Samba写入文件。
我们来逐一检查和解决这些问题。
1. 检查目录权限
确保每个目录的权限设置正确,允许组内的用户读写。
bash
深色版本
sudo chown -R :cwb /srv/samba/cwb
sudo chown -R :rsb /srv/samba/rsb
sudo chown -R :xsb /srv/samba/xsb
sudo chmod -R 0770 /srv/samba/cwb
sudo chmod -R 0770 /srv/samba/rsb
sudo chmod -R 0770 /srv/samba/xsb
2. 检查Samba配置文件
确保Samba配置文件中的read only
设置为no
。编辑/etc/samba/smb.conf
文件,确保每个共享部分的配置如下:
ini
深色版本
[cwb]
path = /srv/samba/cwb
valid users = @cwb
read only = no
browsable = yes
[rsb]
path = /srv/samba/rsb
valid users = @rsb
read only = no
browsable = yes
[xsb]
path = /srv/samba/xsb
valid users = @xsb
read only = no
browsable = yes
3. 重启Samba服务
确保Samba服务重新加载了最新的配置文件。
bash
深色版本
sudo systemctl restart smb
sudo systemctl restart nmb
4. 检查SELinux策略
如果SELinux处于 enforcing 模式,可能会阻止Samba写入文件。你可以临时将SELinux设置为 permissive 模式来测试:
bash
深色版本
sudo setenforce 0
如果问题解决了,说明SELinux策略确实是一个问题。你可以通过以下步骤永久修改SELinux策略:
安装SELinux管理工具:
bash
深色版本
sudo yum install policycoreutils-python-utils -y
设置Samba目录的SELinux上下文:
bash
深色版本
sudo semanage fcontext -a -t samba_share_t "/srv/samba/cwb(/.*)?" sudo semanage fcontext -a -t samba_share_t "/srv/samba/rsb(/.*)?" sudo semanage fcontext -a -t samba_share_t "/srv/samba/xsb(/.*)?"
应用上下文更改:
bash
深色版本
sudo restorecon -R /srv/samba/cwb sudo restorecon -R /srv/samba/rsb sudo restorecon -R /srv/samba/xsb
将SELinux模式设置回 enforcing:
bash
深色版本
sudo setenforce 1
5. 测试访问
再次测试访问Samba共享,确保每个账号只能访问其对应的共享目录,并且可以写入文件。
在Windows上测试
打开“文件资源管理器”。
在地址栏中输入
\\<your_server_ip>\cwb
并按回车键,使用cwb_test
账号登录。重复上述步骤,分别测试
rsb
和xsb
目录,使用rsb_test
和xsb_test
账号登录。
在Linux上测试
使用
smbclient
命令测试连接:bash
深色版本
smbclient //server_ip/cwb -U cwb_test smbclient //server_ip/rsb -U rsb_test smbclient //server_ip/xsb -U xsb_test
或者使用
mount
命令挂载共享目录:bash
深色版本
sudo mount -t cifs -o username=cwb_test //server_ip/cwb /mnt/cwb sudo mount -t cifs -o username=rsb_test //server_ip/rsb /mnt/rsb sudo mount -t cifs -o username=xsb_test //server_ip/xsb /mnt/xsb
完成以上步骤后,你应该能够成功地写入Samba共享目录。如果还有问题,请提供具体的错误信息,以便进一步诊断。