我一直在更新 bash 的一些默认配置文件,并从我遵循的教程中看到,我可以使用以下方法使用新的环境设置重新加载新的配置文件:
source /etc/bash.bashrc
Run Code Online (Sandbox Code Playgroud)
唯一的问题是 - 新的环境变量仅对我当前的用户可用 - 在我使用 sudo 时被忽略。只有当我关闭终端会话并重新加入时,它们才对 sudo 可用。
当我尝试使用:
sudo source /etc/bash.bashrc
Run Code Online (Sandbox Code Playgroud)
我收到错误:
sudo: source: command not found
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以加载 sudo 的新 bash 配置文件设置,而无需关闭终端并重新启动?
-- 最初,我使用了一些引用变量的安装程序脚本。我发现虽然当我直接调用脚本时他们可以访问变量(尽管这会导致以后创建目录时出现问题,因为我需要成为 root),但使用 sudo 调用安装脚本不会。
我通过使用这些简单的命令进行测试来证明这一点:
echo $ENV_VARIABLE
sudo echo $ENV_VARIABLE
Run Code Online (Sandbox Code Playgroud)
第一个将输出变量的值,但第二个不会输出任何内容。
我注意到两个组被授予了类似的权限/etc/sudoers
:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)
我的具有“管理系统”权限的用户帐户在该admin
组中,并且该组中似乎没有任何用户sudo
。这两个组有什么用?
我刚刚从 10.04 升级到 11.04,gdb 不允许我再附加到进程我收到错误
附加到进程 10144 无法附加到进程。如果您的 uid 与目标进程的 uid 匹配,请检查 /proc/sys/kernel/yama/ptrace_scope 的设置,或以 root 用户身份重试。有关更多详细信息,请参阅 /etc/sysctl.d/10-ptrace.conf ptrace:不允许操作。
我如何解决这个问题,以便我可以在没有 sudo 的情况下再次调试?
如果我运行一个命令。
sudo some-command && some-other-command
Run Code Online (Sandbox Code Playgroud)
第二个命令是否sudo
也使用特权运行?
每次我使用 执行命令时sudo
,.sudo_as_admin_successful
都会在我的主目录中创建一个名为的文件。据我所知,它存在的唯一目的是禁用 bash 在启动时打印的消息:
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
Run Code Online (Sandbox Code Playgroud)
可以通过注释掉 中的相关部分来停止该消息/etc/bash.bashrc
,但sudo
仍会在我的主目录中创建一个烦人的文件。
此网页建议您可以通过将自己从admin
组中删除来停止创建文件,但我不在任何此类组中,admin
也不在/etc/group
.
有没有办法阻止这个文件被创建?
我相信这不是这个问题的重复,因为那是问是否有可能使 bash 打印的通知消失,而不是是否有可能停止由sudo
.
我不小心跑了
sudo chmod 755 -R /
Run Code Online (Sandbox Code Playgroud)
代替
sudo chmod 755 -R ./
Run Code Online (Sandbox Code Playgroud)
几秒钟后我停止了它,但是现在出现了一些问题,例如
sudo: must be setuid root
Run Code Online (Sandbox Code Playgroud)
如何恢复权限?
我今天全新安装了 Ubuntu 11.10,然后安装了 VirtualBox。这需要我将自己添加到 vboxusers 组,并且由于 11.10 似乎不再有图形应用程序来将用户添加到组中,因此我运行了以下命令:
sudo usermod -G vboxusers stephane
Run Code Online (Sandbox Code Playgroud)
这是个问题。我现在看到我应该运行的是:
sudo usermod -aG vboxusers stephane
Run Code Online (Sandbox Code Playgroud)
最终结果是我不再属于我应该加入的组。包括运行“sudo”所需的任何组。当我现在以 sudo 身份运行任何命令时,我得到以下信息:
$ sudo ls
[sudo] password for stephane:
stephane is not in the sudoers file. This incident will be reported.
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题,还是我需要从头开始重新安装?
我试图在一个不在 /home 下的目录中将 python 环境与系统一(使用 virtualenv)分开,因为我需要使用它来构建其他软件,这些软件必须可供多个用户访问。我可以创建并激活virtualenv,但是当我执行sudo
某些命令(例如制作或编译其他软件)时,使用的是系统python(由于可用模块,我可以分辨出来)。
由于在 Ubuntu 上使用root用户不是一件好事,有没有办法告诉sudo
使用 virtualenv?或者这可能不是正确的方法,我应该进行全新的 python 安装?
我使用的是 64 位版本的 Ubuntu 12.04(和 python 2.7)。
当我们安装/删除/更新软件包或进行任何需要管理权限的更改时,系统会提示我们输入具有sudo
权限的管理员用户的密码——这通过 GUI 和终端发生。
但是,如果我们尝试通过终端关闭并重新启动,它会抱怨我们需要root
:
$ reboot
reboot: Need to be root
$ shutdown now
shutdown: Need to be root
Run Code Online (Sandbox Code Playgroud)
但是当我们通过右上角的齿轮执行这些操作时,我们永远不会被要求输入密码。
为什么会出现这种差异?
我是 Ubuntu 用户,没有太多经验,我一直在使用sudo
.
做sudo !!
什么以及如何做?
sudo ×10
bash ×3
permissions ×3
command-line ×2
11.04 ×1
chmod ×1
debug ×1
debugging ×1
privileges ×1
python ×1
restart ×1
shutdown ×1