我像这样切换到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的方式有关吗?
答案 0 :(得分:6)
您的root登录脚本似乎有问题。作为测试,请尝试在没有sudo su
的情况下执行-
。这将在不创建登录shell的情况下更改用户。
要弄清楚您的root登录脚本在做什么,请运行
printenv > /tmp/before
sudo su -
printenv > /tmp/after
diff /tmp/before /tmp/after
然后从新的用户shell再次执行相同的操作,但没有-
arg到su
。我打赌你会看到一些东西。
然而,Linux系统上的每个程序都应该能够使用root登录shell运行。您需要以适用于su
和su -
的方式配置系统。意思是以正确的方式设置路径和权限。以香草Ubuntu为例。它适用于su
和su -
答案 1 :(得分:2)
可能与您的PATH
或其他一些环境变量有关。当您执行sudo
时,您拥有的用户名的环境配置将保留。但是,当您执行su -
并以root身份登录时,环境配置会更改。
但是(!)Linux系统上的每个程序都应该能够使用root登录shell运行。您需要以适用于su
和su -
的方式配置系统。意思是以正确的方式设置路径和权限。以香草Ubuntu为例。它适用于su
和su -