相关疑难解决方法(0)

为什么 sudo 命令不需要 root 密码?

我已经使用 Linux 一段时间了,每当我输入时,sudo我都以为我正在切换到 root 用户来执行命令。

显然这不是真的,因为我需要的只是我的用户帐户的密码。我猜因为我没有与多个用户一起工作过,所以我在现实世界中并没有真正注意到这一点。

我不确定 Ubuntu 如何设置我的第一个帐户。有root用户吗?我是根吗?我猜我刚刚在安装时创建了一个新用户,但它给了我 root 权限?只是在这里有点困惑......

那么为什么我可以使用我的用户密码运行 root 命令呢?

sudo

52
推荐指数
3
解决办法
2万
查看次数

sudo 打算如何使用?

我之前尝试过配置sudo,但我没有太多运气。它与 有什么不同su -l -c "x"?似乎通过配置文件,可以使用户只能访问某些命令等。我一直认为sudo这是将命令作为另一个用户或组的一种方式。由于像 Ubuntu 和 Mint 这样的发行版本质上通过密码让主用户轻松访问 root 来简化它,因此我不确定它的预期用途是什么。

如何将用户添加到 sudo 文件,授予他们仅在 root 下运行某些命令的权限?我也不想打开任何安全漏洞。

root sudo

24
推荐指数
2
解决办法
1万
查看次数

sudo 是如何工作的?

我一直认为“sudo”只是启动另一个登录过程,特别是使用“root”作为用户名并要求输入密码登录。运行某个程序后,它会结束并注销(或:保持打开的会话一段时间然后退出)。不知道我从哪里听说的,但这对我来说似乎是合理的。

但是现在我发现了这个 sudoers 选项:

ALL    ALL = (root) NOPASSWD: /my/command
Run Code Online (Sandbox Code Playgroud)

这允许我以 root 身份从任何用户运行任何程序,而无需输入任何密码。这让我想知道:

这是如何运作的?程序如何获得用户权限?sudo 是否需要一个服务器(作为守护进程以 root 身份运行)并连接到该服务器,向它发送应该执行的内容并且该服务器以 root 权限执行它?

其他用户呢?

有什么好的和简单的解释这是如何工作的吗?

root sudo

14
推荐指数
2
解决办法
1万
查看次数

登录和 su 内部结构

我试图了解用户权限在 Linux 中是如何工作的。内核init以 root 身份启动,对吗?然后 Init再次以 root 身份运行启动脚本并运行getty( agetty)。Agetty 只是读取用户名并运行login,我认为仍然以 root 身份运行。还没有什么有趣的。但是登录有什么作用呢?我找不到比“它尝试登录”更好的方法了。假设 login 发现密码匹配(并且我们尝试以普通用户身份登录),它如何更改用户 ID?我认为应该有系统调用,但我找不到它(也许我只是瞎了?)


另外,关于susu设置了“setuid”位,所以当我们运行它时,它总是以 root 身份运行。但是当我们告诉它以普通用户身份登录时,它又需要更改用户 ID。难道我理解正确的话,同样的“神奇”发生在sulogin当他们需要改变用户?如果是这样,为什么有两个不同的程序?运行登录时是否有其他类型的严重事务发生?

login authentication architecture

11
推荐指数
1
解决办法
2744
查看次数

`sudo` 要求哪个用户的密码?

$ ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 136808 Jul  4  2017 /usr/bin/sudo
Run Code Online (Sandbox Code Playgroud)

sosudo可由任何用户运行,并且任何运行的用户都sudo将 root 作为进程的有效用户 ID,因为设置了 set-user-id 位/usr/bin/sudo

来自https://unix.stackexchange.com/a/11287/674

sudo 和 su 之间最明显的区别是sudo 需要用户的密码,而 su 需要 root 的密码。

  1. sudo要求提供哪个用户的密码?是进程的真实用户ID所代表的用户吗?

    如果是,没有任何用户可以通过运行sudo然后提供自己的密码来获得超级用户权限吗?Linux 可以限制某些用户吗?

  2. 它是纠正sudo输入密码请求 execve()开始执行main()/usr/bin/sudo

    既然进程的euid已经改成root了(因为设置了/usr/bin/sudo的set-user-id位),那么后面sudo要求密码有什么意义呢?

谢谢。

我已阅读https://unix.stackexchange.com/a/80350/674,但它没有回答上述问题。

setuid sudo executable

11
推荐指数
3
解决办法
5959
查看次数

setuid、suid、sudo 和 su 有什么关系?

我有一种感觉setuidnosuid挂载选项sudo,和su都与它们的名字相关。
但它们如何相互关联?
其中一些是否结合使用?
如果不是,那为什么他们的名字如此相似?

setuid su sudo

3
推荐指数
1
解决办法
1万
查看次数

Linux - 为什么 su 和 sudo 二进制文件需要设置 UID 根?

我正在努力为上述问题找到正确的原因。我的理解是:

  • sudo需要读取/etc/sudoers只有root才能读取的文件,这就是为什么它需要设置-UID root
  • su将要创建一个具有不同真实有效 UID 的新 shell,并且需要检查密码。要检查密码,它需要读取/etc/shadow,这就是为什么它需要设置-UID root。检查密码后,它需要调用setuid()分叉进程,并且要使用任意UID参数,其父进程必须具有root作为有效UID,因此这也是另一个原因。

以上理由是否正确?

setuid su sudo

1
推荐指数
1
解决办法
361
查看次数

标签 统计

sudo ×6

setuid ×3

root ×2

su ×2

architecture ×1

authentication ×1

executable ×1

login ×1