努力
加油

CentOS或Ubuntu上搭建系统级共享服务(如SSH多用户、NFS或Samba)的步骤有哪些?

在 Linux 环境下搭建系统级共享服务,核心逻辑其实就两步:安装服务组件 -> 配置权限与启动。

针对你提到的 SSH(多用户远程管理)、NFS(局域网文件共享)和 Samba(跨平台/Windows 兼容共享),这三者虽然都叫“共享”,但应用场景和底层协议完全不同。下面我按实际生产环境的标准流程,分别梳理在 CentOS (RHEL系) 和 Ubuntu (Debian系) 上的操作要点。


一、 SSH 多用户远程访问

场景:允许不同用户通过密钥或密码登录服务器,进行运维管理。
注意:SSH 默认就是支持多用户的,不需要额外搭建“多用户服务”,只需要确保 /etc/passwd 中有对应用户,且 sshd 服务正常运行即可。重点在于安全加固和权限隔离。

1. 基础步骤

  • CentOS/RHEL:
    sudo yum install openssh-server -y
    sudo systemctl enable --now sshd
  • Ubuntu:
    sudo apt update
    sudo apt install openssh-server -y
    sudo systemctl enable --now ssh

2. 关键配置 (/etc/ssh/sshd_config)

不要直接开放 root 登录,建议禁用密码登录,强制使用密钥认证。

PermitRootLogin no          # 禁止 root 直接登录
PasswordAuthentication no   # 禁用密码,改用密钥
PubkeyAuthentication yes    # 启用公钥认证

修改后重启服务生效:sudo systemctl restart sshd (CentOS) 或 sudo systemctl restart ssh (Ubuntu)。

3. 用户管理

为每个需要登录的人创建独立账户:

sudo useradd -m -s /bin/bash username
sudo passwd username        # 设置密码(如果不禁用密码登录)
# 或者更安全的做法:生成密钥对,将公钥放入 ~/.ssh/authorized_keys

二、 NFS (Network File System)

场景:Linux/Linux 之间的高速文件共享,适合内网集群、存储后端。性能高,无加密(需配合防火墙或 XX)。

1. 服务端配置

  • 安装:
    • CentOS: sudo yum install nfs-utils -y
    • Ubuntu: sudo apt install nfs-kernel-server -y
  • 定义共享目录:
    编辑 /etc/exports,例如共享 /data/share 给 192.168.1.0/24 网段:

    /data/share 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)

    参数解释:

    • rw: 读写权限。
    • sync: 同步写入磁盘,数据更安全。
    • no_root_squash: 允许客户端 root 用户拥有与服务端相同的权限(生产环境慎用,建议去掉此项以限制 root 权限)。
  • 生效配置:
    sudo exportfs -arv
    sudo systemctl enable --now nfs-server  # CentOS
    sudo systemctl enable --now nfs-kernel-server # Ubuntu

2. 客户端挂载

  • 安装:
    • CentOS: sudo yum install nfs-utils -y
    • Ubuntu: sudo apt install nfs-common -y
  • 挂载命令:
    sudo mount -t nfs 192.168.1.100:/data/share /mnt/nfs

    若要开机自动挂载,编辑 /etc/fstab 添加一行:

    192.168.1.100:/data/share /mnt/nfs nfs defaults 0 0

三、 Samba (SMB/CIFS)

场景:Linux 与 Windows/macOS 之间的文件共享,适合办公环境、NAS 替代方案。

1. 安装与配置

  • 安装:
    • CentOS: sudo yum install samba -y
    • Ubuntu: sudo apt install samba -y
  • 备份原配置:
    sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
  • 编辑 /etc/samba/smb.conf:
    在文件末尾添加共享段,例如共享 /home/shared:

    [shared]
       comment = Shared Directory
       path = /home/shared
       browseable = yes
       writable = yes
       valid users = @sambashare  # 只允许 sambashare 组的成员访问
       create mask = 0775
       directory mask = 0775

    注意:这里使用了 valid users 限制特定组,比开放给所有人更安全。

2. 创建用户与组

Samba 用户必须先在系统中存在,并单独设置 Samba 密码。

# 创建系统用户(不登录 shell)
sudo useradd -M -s /sbin/nologin smbuser

# 创建 Samba 用户并设置密码
sudo smbpasswd -a smbuser

# 将该用户加入 sambashare 组(如果配置中用了该组)
sudo usermod -aG sambashare smbuser

3. 启动服务

sudo systemctl enable --now smb nmb  # CentOS (nmb 用于 NetBIOS 名称解析)
sudo systemctl enable --now smbd nmbd # Ubuntu

4. 防火墙放行

  • CentOS (firewalld):
    sudo firewall-cmd --permanent --add-service=samba
    sudo firewall-cmd --reload
  • Ubuntu (ufw):
    sudo ufw allow samba

四、 避坑指南 & 最佳实践

  1. SELinux/AppArmor 是最大障碍

    • CentOS/RHEL: SELinux 默认开启。如果你改了共享目录路径,NFS/Samba 可能无法访问。
      • 临时测试:setenforce 0
      • 永久解决:使用 semanage fcontext 和 restorecon 正确标记上下文,而不是直接关闭 SELinux。
    • Ubuntu: AppArmor 较宽松,但也要注意日志 /var/log/syslog 中的拒绝记录。
  2. 权限 vs 文件系统权限

    • NFS/Samba 的 rw 只是网络层面的授权。真正的权限控制依赖于 Linux 文件系统本身的 chmod/chown。
    • 例如:Samba 配置了 writable=yes,但如果 /data/share 的属主是 root 且权限是 700,普通用户依然无法写入。务必确保目录属主/属组正确。
  3. 安全性建议

    • NFS: 仅限内网使用,不加密。敏感数据请走 XX 或使用 iSCSI + IPsec。
    • Samba: 定期更新版本,修复已知漏洞(如 WannaCry 利用的 SMBv1 漏洞,务必禁用 SMBv1)。
    • SSH: 永远不要暴露默认端口 22 到公网,除非你有强密钥认证和 Fail2ban 防护。
  4. 监控与维护

    • 使用 journalctl -u sshd 或 tail -f /var/log/auth.log 查看登录日志。
    • 使用 df -h 检查挂载状态,mount | grep nfs 确认 NFS 连接。

以上步骤覆盖了主流发行版的核心操作。实际生产中,建议结合 Ansible 等自动化工具批量部署,避免手动配置出错。