使用 su 命令时要求 root 输入密码

使用 su 命令时要求 root 输入密码

我正在尝试/etc/sudoers通过进行编辑visudo,但我不知道如何更改根权限。

我希望当 root 尝试使用su user1.

答案1

嗯,这确实不是一个好主意,但它是可能的。正如有人指出的,你无法阻止 root 成为计算机的上帝,但你可以修改“su”程序来询问密码。它可以阻止 root 重新登录其他帐户,除非他编译自己版本的 su 并使用它。

首先,您需要一个编译器才能重新构建 su。作为 root,执行:

apt-get install build-essential

然后,下载并准备GNU Coreutils:

ftp://ftp.task.gda.pl/pub/gnu/coreutils/coreutils-8.13.tar.gz
tar xvf coreutils-8.20.tar.xz
cd coreutils-8.20
./configure

现在访问源代码目录并找到苏.c文件。在第 223 行,您会发现:

if (getuid () == 0 || !correct || correct[0] == '\0')

将其更改为:

if (!correct || correct[0] == '\0')

现在,回到coreutils-8.20目录,运行make。编译可能需要很长时间。完成后,用新的 su 二进制文件覆盖当前的 su 二进制文件:

cp src/su `which su`

再说一遍——你做错了。

答案2

  1. root 做任何事情都不需要密码。 root 是一个全能用户。 root=超级用户=管理员=chucknorris
  2. 正如 @Cry Havok 指出的 /etc/sudoers 与 无关su,仅sudo

旁注:su - <user>以普通用户(非 root/无特权)运行将始终要求输入密码。

答案3

Root 可以成为任何用户,无需任何身份验证。即使su命令配置为提示输入密码,root 也可以使用其他程序来发出底层系统调用。该su命令通常配置为不需要密码,因为它对安全性无用,并且许多非交互式脚本依赖该密码以权限较低的用户身份执行任务。

在 Ubuntu(以及许多其他使用聚丙烯酰胺),root运行时没有密码提示su是通过以下行实现的/etc/pam.d/su

auth       sufficient pam_rootok.so

请注意,sudosu是完全不同的程序。您无法su通过更改 的配置来更改 的行为sudo

答案4

Root 没有提示密码,这背后的原因是/etc/pam.d/su.

auth       sufficient pam_rootok.so

我认为应该在此之前添加一些行,以要求 root 对特定用户进行身份验证。

相关内容