具有以下软件的Linux服务器:
- Ubuntu 10.04 LTS x64
- Linux kernel 2.6.38
需要以下配置/软件:
- SSH through rsa key authentication
- SFTP with the following properties:
- Single user
- Access to ONLY /var/www (no home directory what so ever)
- Rsa key authentication
服务器将连接到互联网,因此需要确保安全。我该如何正确做到这一点?我被 SFTP 用户的配置难住了,他可以访问 FTP,但不能写入任何内容,也不能下载。我想我对 chown 做了一些错误,或者权限设置不正确,我就是搞不清楚是什么导致了这个问题。
sudo apt-get install openssh-server
sudo mkdir /var/www
sudo groupadd sftp_users
sudo useradd -d "/var/www" --groups sftp_users -s /bin/false -p '!' "root_sftp"
sudo passwd root_sftp
sudo chmod 751 /var/
sudo chmod 770 /var/www
sudo chown root:root_sftp /var/www
sudo nano /etc/ssh/sshd_config
在 sshd_configuration 文件中添加/更改了以下内容
PermitRootLogin no
AuthorizedKeysFile /etc/ssh/authorized_keys
PermitEmptyPasswords no
PasswordAuthentication yes
Subsystem sftp internal-sftp
Match User root_sftp
ChrootDirectory /var/www
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PermitRootLogin no
AllowAgentForwarding no
现在问题再次出现,用户可以使用密钥登录,SSH 也能正常工作,但 SFTP 无法正常工作。
用户可以使用 SFTP 登录(我使用了 filezilla),但无法上传等。看来用户只有执行位(--x 或 1)
我真的希望有人能帮助我,我已经花了很长时间来配置。感谢您的帮助和时间。
提取 root、/var 和 /var/www 的权限
# ls -lad / /var /var/www
drwxr-xr-x 22 root root 4096 2012-03-13 22:59 /
drwxr-x--x 15 root root 4096 2012-03-13 23:04 /var
drwxrwx--- 3 root root_sftp 4096 2012-03-13 23:15 /var/www
/var/www 目录是空的。
答案1
以 root 身份:
mkdir /var/www/files
chown root_sftp:sftp_users /var/www/files
您的 SFTP 用户是否可以将文件放入 chroot 下显示的 /files 中?我记不清了,但我认为由于 chroot jail,您将无法对明显的 / 进行写入。
更新:
啊,它实际上是在 sshd_config 的手册页中:
ChrootDirectory Specifies a path to chroot(2) to after authentication. This path, and all its components, must be root-owned directories that are not writable by any other user or group.
因此,您在 /etc/ssh/sshd_config 中指定为 ChrootDirectory 的内容不可写入。您可以重新考虑目录设置,因此您的网站的文档根目录是 /var/www/example.com,其中 example.com 子目录可由 SFTP 用户写入。