Linux用户只能在一个位置访问和执行

我想弄清楚这个解决scheme:

我有一些使用命令useradd创build的用户。 我想让这个用户在特定位置做任何他想做的事情,比如/ var / www /。 他可能需要上传或下载文件,提取压缩文件夹,列出文件和文件夹,更改权限等。

他应该被限制做其他任何事情,如创build另一个用户/组,使用sudo,安装/卸载任何东西,甚至访问其他文件夹或任何其他。 有没有可能做到这一点? 有人可以帮助我最早。

FYI:OS:Linux,任何平台:AWS

使用useradd创build的用户默认情况下不具有sudo访问权限,不能安装软件包,添加用户等等。只有root用户可以这样做(通过sudo或直接从shell或脚本执行)。

为用户提供一个主目录,(有几种方法可以做到这一点,例如使用一个命令 [看起来接近底部])。

并设置访问权限

例如在/home/theuser (sudo,或先成为root)

 sudo mkdir /home/theuser sudo chmod 700 /home/theuser # next create / move user home dir to /home/theuser sudo usermod -m -d /home/theuser theuser # give a password to the user sudo passwd theuser 

用户将login/ home / theuser,可以在那里,无论他想要什么。 创build,删除文件和目录。 上传文件(假设他允许使用ssh通过rsync上传文件)。

从你的问题“ 甚至访问其他文件夹 ”的最后一点。 如果其他家庭通常只能由其所有者访问(像drwx------0700一样访问),您真的希望用户无法看到系统文件等吗?

在这种情况下,你必须将用户监禁到它的主目录,在AskUbuntu上看到这个文件 ,实际上并不特定于Ubuntu。

我之所以询问文件系统,是因为您也可以使用ACL(访问控制列表)来为文件系统的任何级别的给定用户设置特定的访问权限。 例如阻止用户访问系统的某些特定区域。 有关ACL的更多信息

你可以把用户放在一个cgroup和一个chroot中。 如果你还想使用SSH,你可以看看Jailkit,它允许你监狱SSH用户。 在实践中,cgroup加上严格的权限在你的服务器上就足够了。