【问题标题】:Still need to sudo after switching to root user [closed]切换到root用户后仍然需要sudo [关闭]
【发布时间】:2014-04-15 14:34:11
【问题描述】:

我像这样切换到root用户:

$ sudo su -

然后我尝试运行类似birdc

[root@localhost ~]# birdc
Unable to connect to server control socket (/usr/local/var/run/bird.ctl): 
No such file or directory

我发现我仍然需要sudo 来运行类似上面的命令:

[root@localhost ~]# sudo birdc
BIRD 1.4.2 ready.
bird> 

我做错了什么?这与我安装 BIRD 的方式有关吗?

【问题讨论】:

  • 我无法重现这种行为。我使用 vanilla ubuntu 12.04 进行测试。您的路径 /usr/local/var/run/bird.ctl 看起来像是从源代码手动安装的。你能显示ls -al /usr/local/var/run/bird.ctl的输出吗?
  • 可能比sudo -s 更好地打开一个root shell。
  • 谢谢@Kevin 我以后会这样做

标签: linux unix sudo


【解决方案1】:

您的根登录脚本似乎有问题。作为测试,尝试在没有- 的情况下执行sudo su。这将在不创建登录 shell 的情况下更改用户。

要弄清楚你的根登录脚本在做什么,运行

printenv > /tmp/before
sudo su -
printenv > /tmp/after
diff /tmp/before /tmp/after

然后从新的用户 shell 再次执行相同的操作,但没有 - arg 到 su。我打赌你会看到一些东西。

但是,Linux 系统上的每个程序都应该能够使用 root 登录 shell 运行。您需要配置您的系统,使其同时适用于susu -。意味着以正确的方式设置路径和权限。例如,看看香草 Ubuntu。它适用于susu -

【讨论】:

  • 这对这里有什么帮助?
  • 解决了!感谢您的解释 - 这真的让我很烦恼!
  • @marflar 如果它为您修复了某些问题,则意味着您安装错误,因为这意味着您无法以 root 身份登录并使用birdc。我认为这两个答案都具有误导性。
  • 这个实验在很多情况下可以让我省去很多麻烦...+1
  • @Mark 你真的认为不能从 root 登录 shell 启动 Linux 上的程序可以吗?这里真正的解决方案是以 with su - 的方式修复文件权限和路径。我告诉过香草 ubuntu 不会发生这个问题。发生这种情况是因为 OP 错误配置了他的系统。现在,在得到这样的提示后,情况将变得最糟糕。你做得很好。 4 个支持者做得很好! -1 从我这边。
【解决方案2】:

这可能与您的PATH 或其他一些环境变量有关。当您执行sudo 时,您作为用户名的环境配置将保留。但是,当您执行su - 并以root 身份登录时,环境配置会发生变化。

但是(!)Linux 系统上的每个程序都应该能够使用 root 登录 shell 运行。您需要配置您的系统,使其同时适用于susu -。意味着以正确的方式设置路径和权限。例如,看看香草 Ubuntu。它适用于susu -

【讨论】:

  • 谢谢这是正确的
  • +1 表明 OP 应该修复他的系统而不是使用“快速修复”:)
  • 感谢编辑@hek2mgl :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
相关资源
最近更新 更多