rob*_*rtj 7 sudo privileges macos
我在理解上有一些问题sudo。我以非管理员/非 root 用户身份登录终端。这个“普通”用户不在 sudoers 文件中(我认为不应该)。
现在我尝试执行一个需要 admin/root 权限以及访问我的普通用户目录的命令——因此我不能简单地su进入一个 admin 或 root 用户。
在我的理解中sudo -u root应该可以解决问题 - 但是它不接受root(或 admin 如果我尝试使用我的普通管理员用户)的密码。它只接受“普通”用户的密码,这似乎表明该-u username选项无法按照我期望的方式工作。
我的期望是它
以 root 的权限sudo -u root some_command执行some_command,因此它也要求提供 root 的密码。显然不是。
TL;DR:如何在不将普通用户添加到 sudoers 文件的情况下执行任何需要管理员权限并有权访问“登录(普通)用户”文件的命令?
我在 Mac OS X 10.7 下启用了 root 用户。
Dan*_*eck 13
sudo始终需要执行用户的密码(并要求您具有执行此操作的特定权限,即是其中之一sudoers)。
su需要目标帐户的密码(root默认情况下,但默认情况下,root 帐户在 OS X 上没有密码)。如果su改为使用,则可以输入目标帐户的密码并使用该用户的权限执行命令。
su -c some_cmd # as root
su username -c some_cmd # as username
Run Code Online (Sandbox Code Playgroud)
这是通过将用户名后的所有参数传递给目标帐户的登录 shell 来实现的。Shell 通常支持-c <commands>参数。在 GNU coreutils 中su,有一个实际-c command参数su可以放在用户名之前。
您可以su转到另一个用户帐户(使用另一个用户帐户的密码),然后sudo从那里转到另一个帐户,前提是该帐户是sudoer.
如果您既不想输入另一个帐户的密码,也不想授予您的常规帐户sudoers权限,那么您几乎没有选择,除非您考虑使用密钥身份验证或类似的 SSH。
除非你真的“需要”在 Mac OS X 上维护一个单独的 root 用户,否则使用 sudo -s
在您的情况下,非管理员用户不包含在 /etc/sudoers 中 - 因此您必须手动添加您打算让 sudo 接受的用户/组。
# User privilege specification
root ALL=(ALL) ALL
%admin ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
完成后,sudo 将从您的 shell 中继承几乎所有好的东西,例如 PATH 和其他变量,但会立即将您的非管理员用户提升为 root。启用 root 的缺点是时间和某人实际以 root 身份在本地或远程登录的安全风险。
请记住,sudo正在询问登录到 loginwindow 屏幕的用户的密码。su -想要 root 帐户的密码,sudo -s使用权限提升使用当前用户的密码成为 root,而无需任何(或在您的情况下,实际的)root 密码。
| 归档时间: |
|
| 查看次数: |
102707 次 |
| 最近记录: |