在 CentOS 上设置 SFTP 访问控制列表 (ACL) 可以通过以下步骤完成:
安装 OpenSSH 服务器: 确保你的 CentOS 系统上已经安装了 OpenSSH 服务器。如果没有安装,可以使用以下命令进行安装:
sudo yum install openssh-server
创建用户和组: 创建一个用于 SFTP 访问的用户和一个用于管理 ACL 的组。例如:
sudo groupadd sftpusers
sudo useradd -m -G sftpusers -s /usr/sbin/nologin -d /home/sftpuser sftpuser
sudo passwd sftpuser
设置密码: 为新创建的用户设置密码:
sudo passwd sftpuser
编辑 SSH 配置文件:
打开 /etc/ssh/sshd_config
文件并进行以下修改:
sudo nano /etc/ssh/sshd_config
找到并修改以下配置项:
PubkeyAuthentication yes
PasswordAuthentication no
AllowUsers sftpuser
这将允许 sftpuser
通过公钥认证登录,并禁止密码认证。
创建 ACL 文件:
在用户的主目录下创建一个 .ssh/authorized_keys
文件,并添加用户的公钥。例如:
sudo mkdir -p /home/sftpuser/.ssh
sudo touch /home/sftpuser/.ssh/authorized_keys
sudo chmod 600 /home/sftpuser/.ssh/authorized_keys
sudo chown sftpuser:sftpusers /home/sftpuser/.ssh
sudo chown 700 /home/sftpuser/.ssh
将用户的公钥添加到 authorized_keys
文件中:
cat ~/.ssh/id_rsa.pub | ssh sftpuser@your_server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
设置目录权限:
设置用户主目录和 .ssh
目录的权限:
sudo chmod 755 /home/sftpuser
sudo chmod 700 /home/sftpuser/.ssh
sudo chmod 600 /home/sftpuser/.ssh/authorized_keys
重启 SSH 服务: 重启 SSH 服务以应用更改:
sudo systemctl restart sshd
测试 SFTP 访问:
使用 sftp
命令测试用户是否可以成功登录:
sftp sftpuser@your_server
通过以上步骤,你已经成功设置了 CentOS 上的 SFTP 访问控制列表。