我需要为新的 shell 用户添加特殊权限。使用adduser
命令 new 后,用户可以将所有目录读入 shell 帐户。
命令adduser user1
为我们带来了拥有自己 shell 目录的新用户/home/user1
。现在,我需要授予user1
仅对其相应/home/user1
文件夹具有完全访问权限的权限。每次user1
进入文件夹时,用户都不应该看到此文件夹中的任何内容。进入主 shell 目录(其中有文件夹、、等)/home
时应该有相同的行为。user1
etc
home
usr
var
现在当我登录时,user1
我可以读取所有 shell 目录,例如通过 Midnight Commander。
有人能帮忙设置这个特殊权限吗?提前谢谢您。
答案1
要使用系统,用户必须能够访问/读取系统的许多部分。但他不能在自己的主目录(即/home/user1
)之外写入。
这当然不适用于其他用户的主目录。(据说是为了方便)Ubuntu 有一个默认设置,每个人都有读访问其他用户的所有主目录。
ls -l /home
将显示类似
drwxr-xr-x 54 user user 4096 Jan 25 17:17 user
drwxr-xr-x 52 user1 user1 4096 Dez 21 17:47 user1
drwxr-xr-x 198 another another 12288 Jan 25 17:19 another
查看每行开头的权限:
drwxr-xr-x
^^^
标记部分的意思是:“其他所有人都可以读取目录和 cd
进去”
您可以通过发出以下命令来防止这种情况
sudo chmod 0700 /home/*
检查一下ls -l /home
,你会看到类似的内容
drwx------ 54 user user 4096 Jan 25 17:17 user
drwx------ 52 user1 user1 4096 Dez 21 17:47 user1
drwx------ 198 another another 12288 Jan 25 17:19 another
现在,任何用户都无法看到其他用户主目录的内容(当然,使用 Midnight Commander 也无法看到)。
如果您想避免新添加的用户出现此问题,有几种方法,具体取决于您如何创建新用户。
当您使用 GUI(系统设置/用户)添加新用户时
这将从 的现有权限中获取主目录的权限etc/skel
。因此
sudo chmod -v 0700 /etc/skel
将得到期望的结果。
当您添加新用户时adduser
编辑/etc/adduser.conf
。找到以下行
DIR_MODE=0755
并将其更改为
DIR_MODE=0750
答案2
您可以使用不同的权限来执行此操作。假设您删除/home
其他人和组的读取权限。这样,只有超级用户才有权读取。
我通过创建一个新用户来测试这一点,我为该用户分配了一个除默认文件夹之外的文件夹。在测试时,我在一个除系统/home
文件夹之外的文件夹中执行了此操作,以防万一。以下是我所做的分步操作,似乎已经奏效:
- 我创建了一个文件夹
/private_home
- 在下面
/private_home
我创建了另一个名为 的文件夹user1
。 - 创建了一个名为 的标准用户
user1
。 - 已将文件夹指定
/private_home/user1
为用户的主文件夹,使用:sudo usermod -d /private_home/user1 user1
。这会将 的主文件夹user1
从移动/home/user1
到/private_home/user1
。 - 然后将访问权限更改为
/private_home
如下:sudo chmod 711 /private_home
。
user1
现在,当我以使用身份登录时,su user1
我登录到了该用户的文件夹/private_home/user1
,但当我尝试时,cd ..
我可以访问该文件夹(shell 提示符显示这一点),但我没有权限读取文件夹内容。也就是说,当尝试时,ls
它显示“权限被拒绝”。
据推测,您可以针对该文件夹的所有用户执行相同的操作/private_home
。
话虽如此,我不会这样做 /
因为这样会降低系统稳定性。
注意:我使用了一些概念这篇文章中的答案。