作为参考,我在 Ubuntu 12.04.5 上
我感觉我已经看过了上百个这样的方法,但不知为何,没有一个奏效。这很可能是因为我对自己到底在做什么缺乏理解。我想做的是设置一个用户,并且只允许该用户访问他们的目录和主目录下的任何内容。但是,我不希望他们能够访问此主目录之上的任何内容(这意味着他们不应该被允许通过cd ..
while in来更改目录/home/username
)。
以下是我采取的步骤:
- 设置用户
username
。 - 将用户添加到一个特殊组,以便他们和其他用户可以编辑某些文件,我们可以称之为
sgroup
。 通过发出以下命令来设置文件
username
需要能够运行 mysql、ls、vim 等程序:[AS ROOT] mount --rbind /bin /home/username/sprg/bin mount --rbind /dev /home/username/sprg/dev mount --rbind /etc /home/username/sprg/etc mount --rbind /lib /home/username/sprg/lib mount --rbind /proc /home/username/sprg/proc mount --rbind /sbin /home/username/sprg/sbin mount --rbind /sys /home/username/sprg/sys mount --rbind /usr /home/username/sprg/usr
root
目前拥有该文件夹下的所有内容,sprg
包括文件夹本身。
编辑并将
/etc/ssh/sshd_config
行:更改Subsystem sftp /usr/lib/openssh/sftp-server
为Subsystem sftp internal-sftp
。在文件末尾,我添加了以下内容:Match user username ChrootDirectory /home/username AllowTCPForwarding no ForceCommand internal-sftp
通过 重新启动 ssh
sudo service ssh restart
。
现在,当我将用户更改为username
via时su - username
,我仍然可以查看/home/username
目录之外的文件和文件夹。另请注意root
owns /home/username
。
总而言之,我想要做的就是让用户通过 ssh 登录到终端,定向到他们的主目录(这已经发生了),然后禁止他们访问其他目录除非它位于 下/home/username
。在这种情况下,他们可以自由地在该目录下做任何他们想做的事情。
任何帮助,将不胜感激!
答案1
现在,当我通过 将我的用户更改为用户名时
su - username
,我仍然可以查看/home/username
目录之外的文件和文件夹。另请注意,root 拥有/home/username
。
SSH 的限制不会影响。这些设置对我来说似乎没问题,因此您应该通过执行和su
进行测试。既然您已经说过用户通过 SSH 登录,那么有了这些设置,应该不会有问题。ssh username@localhost
sftp username@localhost
su