这似乎是一个先有鸡还是先有蛋的问题。最常见的任务sudo
是安装和删除软件。
sudo apt-get purge <appname>
Run Code Online (Sandbox Code Playgroud)
但sudo
本身是可以去除的。
sudo apt-get purge sudo # Do not run this command on production computers!
Run Code Online (Sandbox Code Playgroud)
这就是乐趣所在
ubuntu@ubuntu:~$ sudo
bash: /usr/bin/sudo: No such file or directory
Run Code Online (Sandbox Code Playgroud)
虽然很明显没有人会清除sudo
(除了我之外),但有人可能会被愚弄运行此命令(不是直接,以十六进制模式,或其他任何名称),或者有人可以伪装成技术大师进行SSH和做的烂摊子。
那么有没有办法重新安装sudo?
我刚刚按照http://www.wikihow.com/Become-Root-in-Ubuntu 的步骤获得了 root 访问权限。我的提示从$
变为#
签名,表明我有 root 访问权限。现在我已经退出或注销或禁用 root 访问。为此,我尝试了
sudo passwd -dl root
. 然后它显示消息:
passwd: password expiry information changed.
Run Code Online (Sandbox Code Playgroud)
但我仍然拥有 root 访问权限,而且我仍然拥有#
符号而不是$
.
root@hostname:~#
仍然出现而不是xyz@hostname:~$
。
作为我的问题的例子,我的~/.bashrc
文件包含以下几行:
export LD_LIBRARY_PATH=/opt/intel/mkl/lib/ia32:$LD_LIBRARY_PATH
export LD_PRELOAD=/opt/intel/mkl/lib/ia32/libmkl_core.so
Run Code Online (Sandbox Code Playgroud)
这样 Numpy (Python) 就可以找到它需要运行的库,因为它是使用 MKL 和英特尔编译器构建的。这个工作流程不是最好的,但这是另一回事。
我的问题是,~/.bashrc
当我使用“sudo”(但不是 root)运行程序时,如何传递任意变量(如 中的变量)?
目前,如果我运行:
sudo python -c "import numpy"
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
ImportError: libimf.so: cannot open shared object file: No such file or directory*
Run Code Online (Sandbox Code Playgroud)
一些建议作为sudo -i
或sudo -E
不会改变这里的任何内容。
编辑:
我无法回答我的问题(分数不够:D)但我会在这里发表评论,希望还有其他 Linux 新手对sudo
陷阱感到疑惑。
[只是暂时的!] 这对我有用(~/.bashrc
):
alias sudo='sudo env PATH=$PATH VAR1=SOME_VALUE VAR2=SOME_VALUE...'
Run Code Online (Sandbox Code Playgroud) 我有桌面版的 Ubuntu。
我喜欢终端,所以我更喜欢用shutdown
命令关闭我的电脑。
但是,当我输入shutdown now
它时,它会提示我输入密码。有什么办法可以在不输入密码的情况下使用此命令关闭我的计算机?
当我的非 sudo 帐户尝试运行 sudo 命令时:
nonsudo@Hairy14:$ sudo hello
Run Code Online (Sandbox Code Playgroud)
报道了一个事件:
[sudo] password for nonsudo:
nonsudo is not in the sudoers file. This incident will be reported.
Run Code Online (Sandbox Code Playgroud)
我猜这不是真正的圣诞老人,那么它向谁(或在哪里)报告以及我如何访问它?
(来自xkcd,作者:兰德尔·门罗)
我正在尝试在没有密码的情况下设置 sudo,但仍然提示我输入密码,我使用的是 ubuntu,这是 sudoers 配置文件中的相关行:
gandalf ALL=(ALL:ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud) 我注意到当我执行需要密码的命令时,终端最近变得太慢了。显示 [sudo] 密码需要几秒钟...
我在 Ubuntu 13.04 64 位上使用戴尔 XPS 开发人员版(i7,8G RAM)。
突然间 gksu 停止为我工作:
~$ gksu gparted
(gpartedbin:24252): Gtk-WARNING **: cannot open display: :0
Run Code Online (Sandbox Code Playgroud)
同样的情况发生在gparted-pkexec
:
~$ gparted-pkexec
No protocol specified
(gpartedbin:25454): Gtk-WARNING **: cannot open display: :0
Run Code Online (Sandbox Code Playgroud)
什么可能导致这种情况?
我没有通过 SSH 或 VNC 运行它。这是普通终端窗口中的localhost 。
以下是我所知道的:
我必须在sudoers
文件中添加以下行以授予用户执行特定任务的权限。
user_name ALL=NOPASSWD: /usr/bin/apt-get install
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想授予此用户访问权限以重新启动 2 个具有所有安装权限的服务(即Apache
和MySQL
)。
使用上面的行,我已经给了他所有的安装权限,现在我必须再添加两次相同的行来授予服务权限吗?或者我可以在同一行中添加这些命令,用逗号或其他东西分隔吗?
14.04 在这里。我通过 SSH 连接到我的机器,将以下行添加到/etc/sudoers
:
myuser ALL=NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
然后尝试运行:
sudo mkdir /etc/blah
Run Code Online (Sandbox Code Playgroud)
...我被要求输入密码。为什么?!?
我不希望这样的操作时,要问我的密码。请注意,当我运行时,ls -ltr /
我得到:
drwxr-xr-x 94 root root 4096 Jul 30 13:28 etc
Run Code Online (Sandbox Code Playgroud)
但是我认为这并不重要,因为我已经将自己设置为“sudoer”,对吗?
更重要的是,我需要做什么才能以sudo mkdir /etc/blah
当前用户 ( myuser
) 的身份运行而不会被要求输入密码?
这是我的整个/etc/sudoers
文件:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for …
Run Code Online (Sandbox Code Playgroud)