限制用户更改到 /home/username 之外的目录

限制用户更改到 /home/username 之外的目录

作为参考,我在 Ubuntu 12.04.5 上

我感觉我已经看过了上百个这样的方法,但不知为何,没有一个奏效。这很可能是因为我对自己到底在做什么缺乏理解。我想做的是设置一个用户,并且只允许该用户访问他们的目录和主目录下的任何内容。但是,我不希望他们能够访问此主目录之上的任何内容(这意味着他们不应该被允许通过cd ..while in来更改目录/home/username)。

以下是我采取的步骤:

  1. 设置用户username
  2. 将用户添加到一个特殊组,以便他们和其他用户可以编辑某些文件,我们可以称之为sgroup
  3. 通过发出以下命令来设置文件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包括文件夹本身。

  1. 编辑并将/etc/ssh/sshd_config行:更改Subsystem sftp /usr/lib/openssh/sftp-serverSubsystem sftp internal-sftp。在文件末尾,我添加了以下内容:

    Match user username
        ChrootDirectory /home/username
        AllowTCPForwarding no
        ForceCommand internal-sftp
    
  2. 通过 重新启动 ssh sudo service ssh restart

现在,当我将用户更改为usernamevia时su - username,我仍然可以查看/home/username目录之外的文件和文件夹。另请注意rootowns /home/username

总而言之,我想要做的就是让用户通过 ssh 登录到终端,定向到他们的主目录(这已经发生了),然后禁止他们访问其他目录除非它位于 下/home/username。在这种情况下,他们可以自由地在该目录下做任何他们想做的事情。

任何帮助,将不胜感激!

答案1

现在,当我通过 将我的用户更改为用户名时su - username,我仍然可以查看/home/username目录之外的文件和文件夹。另请注意,root 拥有/home/username

SSH 的限制不会影响。这些设置对我来说似乎没问题,因此您应该通过执行和su进行测试。既然您已经说过用户通过 SSH 登录,那么有了这些设置,应该不会有问题。ssh username@localhostsftp username@localhostsu

相关内容