标签: sudo

“车轮”组的名字从何而来?

wheel在* nix计算机组通常是指基团与某种根状的访问。我听说在某些 *nix 上它是有权运行的用户组su,但在 Linux 上似乎是任何人(尽管您自然需要 root 密码)。在我使用的 Linux 发行版上,它似乎是默认情况下有权使用的组sudo;他们有一个条目sudoers

%wheel ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)

但这都是切线的。我的实际问题是:为什么叫这个组wheel?之前听过各种解释,不知道对不对。有谁知道这个词的实际历史?

su sudo history group

249
推荐指数
4
解决办法
12万
查看次数

如果我可以在没有密码的情况下使用 sudo,为什么我需要一个 tty 来运行 sudo?

我已配置sudo为无需密码即可运行,但是当我尝试时ssh 'sudo Foo',仍然收到错误消息sudo: sorry, you must have a tty to run sudo

为什么会发生这种情况,我该如何解决?

ssh sudo tty

232
推荐指数
4
解决办法
30万
查看次数

如何在没有密码提示的情况下以 root 身份运行特定程序?

我需要在没有密码的情况下以 sudo 的形式运行一些东西,所以我使用visudo并将其添加到我的sudoers文件中:

MYUSERNAME ALL = NOPASSWD: /path/to/my/program
Run Code Online (Sandbox Code Playgroud)

然后我试了一下:

$ sudo /path/to/my/program
[sudo] password for MYUSERNAME: 
Run Code Online (Sandbox Code Playgroud)

为什么它要求输入密码?如何在不要求密码的情况下以非 root 用户身份以 root 身份运行/使用命令?

sudo

205
推荐指数
6
解决办法
45万
查看次数

如何让`sudo` 保留$PATH?

我有一个程序安装在 /opt 下的自定义目录中。为了更容易运行它,我编辑了我的 bashrc 以将所述目录添加到我的路径中:

export PATH=$PATH:/opt/godi/bin:/opt/godi/sbin
Run Code Online (Sandbox Code Playgroud)

如果我想在没有 sudo 的情况下运行程序,这很好用。但是,如果我尝试使用 sudo 运行它,它会因“找不到命令”错误而失败。

$ sudo godi_console
sudo: godi_console: command not found
Run Code Online (Sandbox Code Playgroud)

使用 sudo 后检查 PATH 变量表明它不包括我作为普通用户所拥有的相同 PATH:

$ sudo sh
# echo $PATH                 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Run Code Online (Sandbox Code Playgroud)

为什么 PATH 不一样?难道我做错了什么?我在 Debian Jessie 上,如果它有所作为。

我尝试的一件事是直接调用 /opt/godi/sbin/godi_console,将绝对路径传递给可执行文件。不幸的是,这在这种特殊情况下没有帮助,因为 godi_console 本身取决于正确设置的 PATH。

sudo path

164
推荐指数
5
解决办法
13万
查看次数

获得 root 权限的最安全方法是:sudo、su 还是 login?

即使我的非特权用户受到威胁,我也希望 root 帐户安全。

在 Ubuntu 上,默认情况下您只能出于“安全原因”使用 sudo。但是,我不确定它是否比仅在文本模式控制台上使用登录更安全。如果攻击者可以以我的普通用户身份运行代码,那么可能会出错的事情太多了。例如添加别名、向我的 PATH 添加东西、设置 LD_PRELOAD 和 X11 键盘记录器等等。我能看到的唯一优势是超时,所以我永远不会忘记注销。

我对 su 也有同样的疑问,但它甚至没有时间限制。某些操作(尤其是 IO 重定向)对 su 更方便,但在安全方面这似乎更糟。

在文本模式控制台上登录似乎是最安全的。由于它是由 init 启动的,如果攻击者可以控制 PATH 或 LD_PRELOAD,那么他已经是 root。按键事件无法被 X 上运行的程序拦截。我不知道 X 上运行的程序是否可以拦截 [ctrl]+[alt]+[f1](并打开一个看起来像控制台的全屏窗口)或它就像 Windows 上的 [ctrl]+[alt]+[del] 一样安全。除此之外,我看到的唯一问题是没有超时。

所以我错过了什么吗?为什么 Ubuntu 的人决定只允许 sudo?我可以做些什么来提高任何方法的安全性?

SSH呢?传统上 root 不能通过 SSH 登录。但是使用上述逻辑不是最安全的做法:

  • 允许 root 通过 SSH
  • 切换到文本模式
  • 以 root 身份登录
  • ssh 到另一台机器
  • 以 root 身份登录?

security login su sudo privileges

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

-bash: sudo: 命令未找到

我正在尝试部署 django 应用程序。当我打印时, apt-get update 我看到

W: Unable to read /etc/apt/apt.conf.d/ - DirectoryExists (13: Permission denied)
W: Unable to read /etc/apt/sources.list.d/ - DirectoryExists (13: Permission denied)
W: Unable to read /etc/apt/sources.list - RealFileExists (13: Permission denied)
E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)
E: Unable to read /var/cache/apt/ - opendir (13: Permission denied)
E: Unable to read /var/cache/apt/ - opendir (13: Permission denied)
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: …
Run Code Online (Sandbox Code Playgroud)

debian su sudo apt

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

将标准输出重定向到您没有写权限的文件

当您尝试在没有写入权限的情况下修改文件时,您会收到错误消息:

> touch /tmp/foo && sudo chown root /tmp/foo
> echo test > /tmp/foo
zsh: permission denied: /tmp/foo
Run Code Online (Sandbox Code Playgroud)

Sudoing 没有帮助,因为它以 root 身份运行命令,但 shell 处理重定向 stdout 并以您的方式打开文件:

> sudo echo test > /tmp/foo
zsh: permission denied: /tmp/foo
Run Code Online (Sandbox Code Playgroud)

除了以root身份打开shell并以这种方式操作文件之外,是否有一种简单的方法可以将stdout重定向到您无权写入的文件?

> sudo su
# echo test > /tmp/foo
Run Code Online (Sandbox Code Playgroud)

shell permissions io sudo io-redirection

125
推荐指数
4
解决办法
2万
查看次数

用户名不在 sudoers 文件中。此事件将被举报

我在我的笔记本电脑上使用 VMware Player 运行 Ubuntu 12.04。我不知道为什么,但除了我通常登录使用 Ubuntu 的帐户之外,我还有一个名为“用户帐户”的帐户。好吧,这只是附带评论,但基本上我要做的就是在 Ubuntu 上安装 ncurses 库。我尝试使用以下命令行安装 ncurses:

sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-dev
Run Code Online (Sandbox Code Playgroud)

当我尝试使用上述命令安装 ncurses 两次时,我在终端中收到以下提示:

[sudo] password for username
Run Code Online (Sandbox Code Playgroud)

当我输入密码时,我收到以下消息:

username is not in the sudoers file. This incident will be reported.
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已尝试按照以下链接中的说明启用 root 用户(“超级用户”)帐户:https : //help.ubuntu.com/community/RootSudo

以下是链接建议执行的一些操作:

允许其他用户运行 sudo。在命令行中键入以下内容:

须藤 adduser 用户名须藤

或者

须藤 adduser 用户名须藤

以其他用户身份登录。在命令行中键入以下内容:

sudo -i -u 用户名

启用 root 帐户。在命令行中键入以下内容:

须藤 -i

或者

须藤密码根

我已经尝试了上述所有命令行,在输入每个命令后,系统提示我输入密码。输入密码后,我收到了与尝试安装 ncurses 时相同的消息:

fsolano is not in the sudoers file. This …
Run Code Online (Sandbox Code Playgroud)

sudo

125
推荐指数
5
解决办法
105万
查看次数

linux中`fakeroot`命令有什么需要

为什么我们需要fakeroot命令?我们不能简单地使用sudoorsu命令吗?

手册页说:

fakeroot - 在伪造 root 权限的环境中运行命令以进行文件操作

About.com 说:

提供一个假的根环境。该软件包旨在启用以下功能:dpkg-buildpackage -rfakeroot即消除成为软件包构建的 root 用户的需要。这是通过设置LD_PRELOAD为 来完成的libfakeroot.so,它提供了getuid, chown, chmod, mknod, stat, ... 的包装器,从而创建了一个假的根环境。如果你不明白这些,你不需要fakeroot

我的问题是,它解决简单su或不简单的特殊目的是什么sudo?例如,要重新打包 ubuntu 中所有已安装的包,我们给出以下命令:

$ fakeroot -u dpkg-repack `dpkg --get-selections | grep install | cut -f1`
Run Code Online (Sandbox Code Playgroud)

我们可以使用 sudo 或 su 而不是 fakeroot 来执行上述命令,如下所示:

$ sudo dpkg-repack `dpkg --get-selections | grep install | cut -f1`
Run Code Online (Sandbox Code Playgroud)

编辑:

跑步: …

su sudo

123
推荐指数
5
解决办法
11万
查看次数

su vs sudo -s vs sudo -i vs sudo bash

以下命令有什么区别:

su
sudo -s
sudo -i
sudo bash
Run Code Online (Sandbox Code Playgroud)

我知道su我需要知道 root 密码,而且sudo我必须在sudoers文件中,但是一旦执行有什么区别?

我知道su和之间存在差异,sudo -s因为我的主目录/root在我执行之后su,但我的主目录仍然/home/mynamesudo -s. 但我怀疑这只是我遗漏的潜在差异的症状。

su sudo

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

标签 统计

sudo ×10

su ×5

apt ×1

debian ×1

group ×1

history ×1

io ×1

io-redirection ×1

login ×1

path ×1

permissions ×1

privileges ×1

security ×1

shell ×1

ssh ×1

tty ×1