从Linux圣经第9版起:


未分配给任何用户名的文件被视为存在安全风险。


这怎么可能?如何利用?

编辑:我的问题不是所提问题的重复,因为我的问题集中在用户创建过程上,而不是最小的问题上特权原则。

评论

“我的问题不是所提问题的重复,因为我的问题集中在用户创建过程上,而不是最小特权原则上。” -实际上,您的问题根本不集中。仅答案侧重于用户创建过程,而不关注您的问题。而且,答案中的论点实际上也是5年前提出的。因此,我仍然认为它是重复的。

@SteffenUllrich我同意这是一个有效的副本,但是花了我一秒钟的时间才看过这个模棱两可的标题。我改写了重复目标的标题,希望可以使OP更清楚。

@AXANO除非您真的认为两个问题之间存在重大差异,否则我将使用重复标签(这不会使您的问题消失,也不会为将来的读者提供有用的指针)。

#1 楼

在Linux系统上,您可以轻松删除用户,而不必删除该用户拥有的任何文件。这样的文件将保留在原处,并且文件所有者的用户ID(存储为inode的属性)保持不变。这样,文件就可以有效地变为无主。

如果以后再创建一个具有相同ID的用户,则该用户将自动成为以前孤立的文件的所有者。这样一来,新用户可能会无意间(或出于恶意意图)成为他们不应该拥有的文件的所有者,这显然对安全性不利。

请注意,userdel拥有一个额外的开关,可以删除用户及其文件,但只会从某些固定位置删除文件,例如主目录:

 -r, --remove
       Files in the user's home directory will be removed along with
       the home directory itself and the user's mail spool. Files
       located in other file systems will have to be searched for
       and deleted manually.


您可能希望将find-nouser开关一起使用发现不存在的所有者的文件:

 -nouser
    No user corresponds to file's numeric user ID.



这是Arch Linux上的快速演示。

让我们添加一个用户alice并使其成为文件foo的所有者。

[root@box /]# useradd alice
[root@box /]# touch foo
[root@box /]# chown alice foo
[root@box /]# ls -l foo
-rw-r--r-- 1 alice root 0 Jan  5 02:59 foo


现在让我们删除alice

[root@box /]# userdel alice
[root@box /]# ls -l foo
-rw-r--r-- 1 1001 root 0 Jan  5 02:59 foo


ls不能确定所有者名称,只能显示数字所有者ID 1001。现在让我们添加一个新用户bob

[root@box /]# useradd bob
[root@box /]# ls -l foo
-rw-r--r-- 1 bob root 0 Jan  5 02:59 foo


由于已为bob分配了下一个免费用户ID,因此他现在自动成为文件的所有者。

评论


评论不作进一步讨论;此对话已移至聊天。

–Rory Alsop♦
18年1月6日在15:34