文档
如何创建一个被囚禁的 SFTP 用户( chroot 监狱)
AWS 市场用户的重要注释 :
如果您尚未启用您的 Marketplace 服务器上的根账户, 您需要用 sudo 运行以下命令 。 简单的方法是完成后在sudo shell内退出。例如,从以下命令开始:
sudo su
完成后:
exit
开始了...
所有 TurnKey 应用设备 都与 SFTP 预配置并启用。然而,默认情况下,所有用户都读取了整个文件系统的访问权限。 只要你们不介意他们读文件,那可能就不成问题了,因为默认新非特权用户除了自己的主目录之外,没有任何地方的写权限. (通常/home/USERNAME),加上任何明确给予他们写权限的地方。加起来,由于SFTP是由SSH提供的,默认情况下,他们也可以登录到SSH shell中。) 他们能够做的将是有限的,但这仍然可能不可取。
因此,在一种情况下,你只希望SFTP用户通过SFTP(而不是SSH)登录,而你希望他们被锁在自己的目录中(即. 被称为"chroot prison"),然后可以配置SSH/SFTP来完成此任务.
下面我给出了所需的命令,它们以脚本形式存在,因此可以复制/粘贴到命令行。请注意,我曾尝试过使命令具有一元性(即: 如果你多次运行,就不会破坏东西) 但我还没有广泛测试。所以如果你重新运行一部分,你可能会有出乎意料的结果。 用户相关命令可以重新运行给新用户(改变NEW_USER的值),但添加sftp_用户组和SSH配置,只应完成一次. 如果您需要修改 SSH 配置设置, 我建议您手动编辑配置文件 。
运行一次
创建所需的组 :
groupadd sftp_users
每个新用户运行一次
添加新用户 。 我这里使用"新用户"这个名字,但你可以使用任何你喜欢的名字,虽然我强烈建议你只使用小写字符,没有空格或特殊字符. 如果您希望添加额外的用户,则更改"NEW_USER"的值(以下第一行): 1.
NEW_USER="newuser" useradd -G sftp_users -s /sbin/nologin $NEW_USER passwd $NEW_USER
一旦您为新用户设置了密码并证实了它,然后完成创建新用户账户:
mkdir -p /home/$NEW_USER/files chown root:root /home/$NEW_USER chown $NEW_USER:$NEW_USER /home/$NEW_USER/files chmod 700 /home/$NEW_USER/files usermod -d /files $NEW_USER
跑一次就够了!
接下来我们需要重新配置 SSH/ SFTP。 要做到这一点, 我们需要编辑 SSH 配置文件( /etc/ssh/sshd_config).) , 以便简单化, 我已经以脚本形式提供了它 。 请注意,这只应该做到 一次.:
CONF=/etc/ssh/sshd_config
SEARCH="Subsystem sftp \/usr\/lib\/openssh\/sftp-server"
NEW_LINE="Subsystem sftp internal-sftp"
sed -i "/^$SEARCH/ s|^|#|" $CONF
sed -i "/$NEW_LINE/d" $CONF
sed -i "/$SEARCH/a\\$NEW_LINE" $CONF
if ! grep "Match Group sftp_users" $CONF >/dev/null; then
cat >> $CONF <<EOF
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /home/%u
ForceCommand internal-sftp
EOF
fi
最后一步是重新启动 SSH :
service ssh restart
如果您需要进一步调整您的 SSH 设置, 请使用纳米等文本编辑器手动编辑配置文件。 例如 :
nano /etc/ssh/sshd_config
用户会自动向 fftp 进入其 chround 家( /home/user/files).) 他们将能够cd到母目录(/home/user)但除了在那里读取访问(并且不能浏览任何更高)之外,没有其他任何内容.
附加注释: 如果您希望允许您的 chround SFTP 用户有一点更大的灵活性( 例如允许 scp 和/ 或 rsync) , 那么与其给他们一个 /sbin/nologin shell, 安装 rsh 语录 (apt-get settle rssh)并给他们一个/usr/bin/rssh shell.