宝宝
宝宝
发布于 2024-11-03 / 21 阅读
0
0

Samba服务器搭建

实现目标:

分别为财务部、人事部、销售部建立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上测试

  1. 打开“文件资源管理器”。

  2. 在地址栏中输入 \\<your_server_ip>\cwb 并按回车键,使用 cwb_test 账号登录。

  3. 重复上述步骤,分别测试 rsbxsb 目录,使用 rsb_testxsb_test 账号登录。

在Linux上测试

  1. 使用 smbclient 命令测试连接:

bash

深色版本

smbclient //server_ip/cwb -U cwb_test
smbclient //server_ip/rsb -U rsb_test
smbclient //server_ip/xsb -U xsb_test
  1. 或者使用 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),可以通过以下方式隐藏这些账号:

  1. 编辑 /etc/lightdm/users.conf 文件:

bash

深色版本

sudo nano /etc/lightdm/users.conf
  1. 在文件中添加以下内容:

ini

深色版本

hidden-users=cwb_test rsb_test xsb_test
  1. 保存并退出编辑器,重启LightDM服务:

bash

深色版本

sudo systemctl restart lightdm

这样,这些测试账号就不会出现在系统登录界面上了。

完成以上步骤后,你应该能够成功地为财务部、人事部和销售部分别创建共享目录,并确保只有相应的账号可以访问各自的目录。

可能遇到的问题:

如果你遇到“没有权限写入”的问题,可能是由于以下几个原因导致的:

  1. 目录权限设置不正确:确保每个目录的权限设置正确,允许组内的用户读写。

  2. Samba配置文件中的权限设置不正确:确保Samba配置文件中的read only设置为no

  3. 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策略:

  1. 安装SELinux管理工具

    bash

    深色版本

    sudo yum install policycoreutils-python-utils -y
  2. 设置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(/.*)?"
  3. 应用上下文更改

    bash

    深色版本

    sudo restorecon -R /srv/samba/cwb
    sudo restorecon -R /srv/samba/rsb
    sudo restorecon -R /srv/samba/xsb
  4. 将SELinux模式设置回 enforcing

    bash

    深色版本

    sudo setenforce 1

5. 测试访问

再次测试访问Samba共享,确保每个账号只能访问其对应的共享目录,并且可以写入文件。

在Windows上测试

  1. 打开“文件资源管理器”。

  2. 在地址栏中输入 \\<your_server_ip>\cwb 并按回车键,使用 cwb_test 账号登录。

  3. 重复上述步骤,分别测试 rsbxsb 目录,使用 rsb_testxsb_test 账号登录。

在Linux上测试

  1. 使用 smbclient 命令测试连接:

    bash

    深色版本

    smbclient //server_ip/cwb -U cwb_test
    smbclient //server_ip/rsb -U rsb_test
    smbclient //server_ip/xsb -U xsb_test
  2. 或者使用 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共享目录。如果还有问题,请提供具体的错误信息,以便进一步诊断。


评论