新用户的特殊目录权限

新用户的特殊目录权限

我需要为新的 shell 用户添加特殊权限。使用adduser命令 new 后,用户可以将所有目录读入 shell 帐户。

命令adduser user1为我们带来了拥有自己 shell 目录的新用户/home/user1。现在,我需要授予user1仅对其相应/home/user1文件夹具有完全访问权限的权限。每次user1进入文件夹时,用户都不应该看到此文件夹中的任何内容。进入主 shell 目录(其中有文件夹、、等)/home时应该有相同的行为。user1etchomeusrvar

现在当我登录时,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文件夹之外的文件夹中执行了此操作,以防万一。以下是我所做的分步操作,似乎已经奏效:

  1. 我创建了一个文件夹/private_home
  2. 在下面/private_home我创建了另一个名为 的文件夹user1
  3. 创建了一个名为 的标准用户user1
  4. 已将文件夹指定 /private_home/user1为用户的主文件夹,使用:sudo usermod -d /private_home/user1 user1。这会将 的主文件夹user1从移动/home/user1/private_home/user1
  5. 然后将访问权限更改为/private_home如下:sudo chmod 711 /private_home

user1现在,当我以使用身份登录时,su user1我登录到了该用户的文件夹/private_home/user1,但当我尝试时,cd ..我可以访问该文件夹(shell 提示符显示这一点),但我没有权限读取文件夹内容。也就是说,当尝试时,ls它显示“权限被拒绝”。

据推测,您可以针对该文件夹的所有用户执行相同的操作/private_home

话虽如此,我不会这样做 / 因为这样会降低系统稳定性

注意:我使用了一些概念这篇文章中的答案

相关内容