在Debian系统中配置SFTP访问控制列表(ACL)可以通过使用sshd_config文件和acl包来实现。以下是详细的步骤:
首先,确保你已经安装了openssh-server和acl包。如果没有安装,可以使用以下命令进行安装:
sudo apt update
sudo apt install openssh-server acl
编辑/etc/ssh/sshd_config文件,确保以下配置项存在并正确设置:
# 允许SFTP子系统
Subsystem sftp /usr/lib/openssh/sftp-server
# 启用ACL支持
UsePAM yes
创建一个专门用于SFTP访问的用户和组。例如,创建一个名为sftpuser的用户和一个名为sftpgroup的组:
sudo addgroup sftpgroup
sudo adduser --ingroup sftpgroup sftpuser
确保SFTP用户的主目录及其子目录的权限设置正确。通常,主目录的权限应设置为755,并且所有者应为sftpuser:
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo mkdir /home/sftpuser/uploads
sudo chown sftpuser:sftpgroup /home/sftpuser/uploads
sudo chmod 755 /home/sftpuser/uploads
使用setfacl命令为特定目录设置ACL。例如,为/home/sftpuser/uploads目录设置读写权限:
sudo setfacl -m u:sftpuser:rwx /home/sftpuser/uploads
sudo setfacl -m g:sftpgroup:rwx /home/sftpuser/uploads
编辑/etc/ssh/sshd_config文件,添加或修改以下配置项以启用ACL支持:
Match Group sftpgroup
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
保存并关闭sshd_config文件后,重启SSH服务以应用更改:
sudo systemctl restart sshd
使用SFTP客户端连接到服务器,验证访问控制是否按预期工作:
sftp sftpuser@your_server_ip
你应该能够看到sftpuser的主目录,并且只能访问uploads目录及其子目录。
通过以上步骤,你可以在Debian系统中成功配置SFTP访问控制列表。