在 CentOS 系统中,SFTP 权限问题通常与用户、目录和文件权限设置有关。以下是一些建议和解决方法:
确保已安装并启动 OpenSSH 服务器:
sudo yum install openssh-server
sudo systemctl start sshd
sudo systemctl enable sshd
检查 /etc/ssh/sshd_config
文件中的 SFTP 配置。确保以下配置存在且未被注释:
Subsystem sftp /usr/libexec/openssh/sftp-server
如果需要限制用户访问特定目录,请在 /etc/ssh/sshd_config
文件中添加或修改以下配置:
Match User <username>
ChrootDirectory <user_directory>
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
将 <username>
替换为要限制的用户名,将 <user_directory>
替换为该用户的主目录。
确保用户主目录和子目录的权限设置正确。通常,主目录的权限应设置为 755,子目录和文件的权限应设置为 755 或 644。可以使用 chmod
命令更改权限:
chmod 755 /home/<username>
chmod 755 /home/<username>/<subdirectory>
chmod 644 /home/<username>/<file>
如果需要,可以创建一个专门用于 SFTP 传输的组,并将用户添加到该组。然后,可以设置目录的 SGID 位,以便在该目录中创建的新文件和子目录继承其组所有权:
sudo groupadd sftp_group
sudo usermod -a -G sftp_group <username>
sudo chown root:sftp_group /home/<username>
sudo chmod 2775 /home/<username>
重启 SSH 服务以应用更改:
sudo systemctl restart sshd
遵循以上建议,应该可以解决 CentOS 系统中的 SFTP 权限问题。如果仍然遇到问题,请检查系统日志(如 /var/log/secure
)以获取更多详细信息。