授予用户管理员权限不起作用?

授予用户管理员权限不起作用?

我看到了sudoers 手册并计划最终仅授予用户运行特定程序的权限,但尝试使用所有权限进行测试,但不起作用。

sudo -l显示如下:

[sudo] password for nav: 
Matching Defaults entries for nav on this host:
    env_reset,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User nav may run the following commands on this host:
    (ALL : ALL) ALL
    (ALL : ALL) ALL

但是当我尝试时apt-get install firefox 我得到了这个:

E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

我的实际目标是运行 Truecrypt 而不要求输入 Ubuntu 登录密码,但在此之前,我至少希望能够运行其他命令而无需输入sudo。知道我做错了什么吗?
也试过了此解决方案但它不起作用。

答案1

嗯,对于 sudo 如何工作存在一点困惑。

Sudo 允许您成为 root(或其他用户)以运行某个命令。但是,当您运行命令 apt-get 时,它不会自动调用;您需要运行 sudo:

sudo apt-get install firefox

并不是

apt-get install firefox

否则,您根本就不会调用 sudo!您会看到,sudo 不是系统的东西。它只是一个始终以 root 权限运行的常规程序(苏伊德, 换句话说)。

~$ ls -l `which sudo`
-rwsr-xr-x 2 root root 127668 2013-02-27 21:41 /usr/bin/sudo*

看到权限中的星号和“s”了吗?这就是它的意思——无论谁运行 sudo,sudo 都会以 root 的权限运行;就像 root 启动了它一样。然后它四处查看,发现是你运行了它,查找 sudoers 文件并说:好的,你被允许以 root 身份运行 apt-get,让我为你运行它。并apt-get以 root 权限调用,这与 root 运行它具有相同的效果。

如果你不使用 sudo,而只是输入

apt-get install firefox

然后apt-get以普通用户身份运行,自然无权接触只能由 root 打开进行写入的文件。这是因为 apt-get 不是 suid 程序;它以启动它的用户的权限运行。

Suid 程序很危险,因为如果程序中出现任何错误,它就会被用来提升未经授权用户的权限。这就是为什么只有一个程序 ( sudo) 可以用于这些特定目的。

美好的。关于密码的事情:使用NOPASSWDsudoers 文件中的指令(用于visudo编辑它)并使用 运行命令sudo。以下是 sudoers 文件中的相应条目:

yourusername ALL = NOPASSWD: /path/to/the/program

这样,调用

sudo /path/to/the/program

不需要输入密码,您可以从脚本或通过 cron 运行它。

相关内容