在 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 訪問控制列表。