什么机制可以阻止任何用户通过 root 访问任何其他用户的文件?

什么机制可以阻止任何用户通过 root 访问任何其他用户的文件?

在多用户系统上,什么可以防止任何用户通过 root 访问任何其他用户文件?作为上下文,这个问题基于我的理解如下:

有两个与 root 权限相关的命令,sudosu。使用sudo,您不会成为另一个用户(包括 root)。sudo有一个预定义的批准命令列表,它代表您执行。由于您不会成为 root 或其他用户,因此您只需使用自己的密码进行身份验证即可。

使用su,您实际上成为 root 或其他用户。如果您想成为用户 Bob,您需要 Bob 的密码。要成为 root 用户,您需要 root 密码(将在多用户系统上定义)。

参考文献:howtogeek.com:

su将您切换到 root 用户帐户并需要 root 帐户的密码。sudo使用 root 权限运行单个命令 – 它不会切换到 root 用户。

如果执行 su bob 命令,系统会提示您输入 Bob 的密码,并且 shell 将切换到 Bob 的用户帐户;类似的描述位于计算机希望网

howtoing.com:

'sudo' 是 root 二进制 setuid,代表授权用户执行 root 命令

如果你成为root,你就可以访问一切。任何未经授权访问其他用户帐户的人都不会获得 root 密码,并且不会有sudo允许使用该密码的定义。

这一切都是有道理的,直到你看到类似的东西这个链接sudo -V,这是一个使用您自己的密码然后sudo su -成为 root 的教程。

如果任何用户无需 root 密码即可成为 root,那么什么机制可以保护用户文件免遭未经授权的访问?

答案1

主要的sudo和之间的区别su在于用于身份验证的机制。用户su必须知道root密码(这应该是一个严格保密的秘密),而sudo通常配置为询问用户自己的密码。为了阻止所有用户造成混乱,sudo幸运的是,可以使用该/etc/sudoers文件配置该命令释放的权限。

这两个命令经常以另一个用户身份运行命令root

sudo su -在您给出的示例中有效,因为用户(或用户所属的组)是在/etc/sudoers文件中配置的。也就是说,他们是允许使用sudo.有了这个,他们可以使用sudo临时获得root权限(未提供用户名时为默认权限)并root启动另一个 shell ( su -)。他们现在root无需知道root密码即可访问。

相反,如果您不允许用户使用,sudo那么他们将无法使用sudo su -

发行版通常有一个组(通常称为wheel),允许其成员sudo运行所有命令。将它们从该组中删除将意味着它们sudo在默认情况下根本无法使用。

执行此操作的行/etc/sudoers是:

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

虽然从该组中删除用户将使您的系统更加安全,但也会导致您(或其他系统管理员)需要代表您的用户在系统上执行更多管理任务。

更明智的折衷方案是配置sudo为让您可以更细粒度地控制谁可以使用sudo、谁不能使用,以及他们可以使用哪些命令(而不是默认的全部命令)。例如,

## Allows members of the users group to mount and unmount the
## cdrom as root
%users  ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

(仅当前面的 %wheel 行被注释掉或wheel组中没有用户时有用)。

据推测,发行版并未将这种更细粒度的配置作为标准配置,因为无法预测管理员对其用户和系统的要求。

底线是 - 了解详细信息sudo,您可以停止sudo su -,同时允许其他不授予用户rootshell 访问权限的命令或访问可以更改其他用户文件的命令。您应该认真考虑允许使用谁sudo以及使用到什么级别。

警告:始终使用该visudo命令来编辑sudoers文件,因为它会检查您的编辑,并尝试将您从尴尬的情况中拯救出来,即错误配置的文件(由于语法错误)阻止您使用sudo编辑任何错误。在 Debian/Ubuntu 和root默认情况下禁用该帐户的变体上尤其如此。

答案2

有两个与 root 权限相关的命令,sudosu。使用sudo,您不会成为另一个用户(包括 root)。sudo有一个预定义的批准命令列表,它代表您执行(这解决了我在评论中询问的有关如何授予选定用户选择性权限的问题)。由于您不会成为 root 或其他用户,因此您只需使用自己的密码进行身份验证即可。

这是不正确的。su和 之间最明显的区别sudo是后者通常配置为要求您自己的密码而不是目标用户的密码,并且sudo更加灵活。它们的全部目的都是让您成为另一个用户。su可以运行特定的命令并sudo可以启动交互式 shell,它们只是有不同的默认模式。

最常见的是,您有一个组,通常命名为wheel,允许以任何用户身份运行任何命令。有时您希望限制用户仅以特定用户身份运行特定命令,这sudosu.

使用su,您实际上成为 root 或其他用户。如果您想成为用户 Bob,您需要 Bob 的密码。要成为 root 用户,您需要 root 密码(将在多用户系统上定义)。

sudo也可以使用自己的密码成为任何用户,只要 中的规则/etc/sudoers设置允许您这样做。sudo允许您限制用户可以运行的命令,是的,并且可以防止您必须披露特定用户的密码,甚至可以防止特定用户根本没有密码而不允许定期登录。

如果你成为root,你就可以访问一切。任何未经授权访问其他用户帐户的人都不会获得 root 密码,并且不会有sudo允许使用该密码的定义。

这一切都是有意义的,直到您查看类似 [此链接] [1] 之类的内容,这是一个仅使用您自己的密码使用sudo -V然后sudo su -成为 root 的教程。

如果任何用户无需 root 密码即可成为 root,那么什么机制可以保护用户文件免遭未经授权的访问? [1]:http://home.ubalt.edu/abento/linux/terminal/sudo.html

首先,sudo -V打印二进制文件的版本sudo,并sudo -v验证缓存的凭据,与后面的部分无关。

其次,sudo su这是一件相当愚蠢的事情,因为已经有一个sudo选项可以以指定用户 ( ) 的身份启动交互式 shell sudo -i,并且运行一个权限授权工具 ( sudo) 来运行另一个权限授权工具 ( su) 确实很愚蠢。

第三,“任何用户”绝对应该不是能够成为root。如果可以的话,你的整个系统就完全不安全了。 root用户权力很大,可以做任何事情,而以root身份运行命令只是其用途之一sudo,它是一个通用授权工具,可以让特定用户以特定用户身份运行特定命令。

答案3

简短的回答是你不能。

如果您允许某人(例如 simth)加入 sudoer 组,他可以发出命令,sudo su -然后成为 root,然后成为另一个用户(例如 wesson)。这是向 simth 提供 root 密码的另一种方法。但是他(史密斯)可以更改 root 密码。

还注意到

1)你必须在/etc/sudoers一行中指定

%sudo   ALL=(ALL:ALL) ALL

2) smith(上例中)必须位于 sudo 组中。

这不是默认设置。

您必须完全信任某人(史密斯)才能授予sudo su -访问权限。

答案4

这些答案都没有以任何方式解决这个问题。正确的答案是文件权限阻止任何用户访问其他用户的文件,包括根用户。是的,有一些方法可以防止 root 读取和写入您的文件(或目录,即文件)。

例如,目录可能包含以下条目:

drwxrwxr-x 13 root root 8192 Jan 17 15:38 bash-5.2.15 drwxr-xr-x 15 root root 4096 Jan 20 08:13 比特币 drwxr-xr-x 8 root root 4096 Dec 6 16:37 boost_1_84_0 -rwx- ----- 1 root root 13210 Jan 19 17:44 doit_configure -rwx----- 1 root root 7491 Oct 17 11:44 doit_configure_bash

目录以“d”开头。常规文件以“-”开头。然后是文件/目录的权限,例如rwxrwxrwx分为三部分:所有者、组和其他。 r=读,w=写,x=执行权限。

“su”和“sudo”命令实用程序有助于访问,但它们并不是原始问题的真正答案。

相关内容