相关疑难解决方法(0)

为什么通过 sudo 和 su 运行时 PATH 变量不同?

在我的 Fedora VM 上,使用我的用户帐户运行时/usr/local/bin,我的路径中有:

[justin@justin-fedora12 ~]$ env | grep PATH
 PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
Run Code Online (Sandbox Code Playgroud)

同样在运行时su

[justin@justin-fedora12 ~]$ su -
Password: 
[root@justin-fedora12 justin]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/justin/bin
Run Code Online (Sandbox Code Playgroud)

但是,运行 via 时sudo,此目录不在路径中:

[root@justin-fedora12 justin]# exit
[justin@justin-fedora12 ~]$ sudo bash
[root@justin-fedora12 ~]# env | grep PATH
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/sbin:/bin:/usr/sbin:/usr/bin
Run Code Online (Sandbox Code Playgroud)

为什么运行 via 时路径会不同sudo

linux shell sudo path environment-variables

52
推荐指数
4
解决办法
5万
查看次数

如何将环境变量传递给 sudo su

我基本上需要这样做:

DUMMY=dummy
sudo su - ec2-user -c 'echo $DUMMY'
Run Code Online (Sandbox Code Playgroud)

这不起作用。如何将环境变量 $DUMMY 传递给 su?-p 不适用于 -l。

linux su sudo environment-variables

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

为什么 PATH 在 sudo 命令中重置?

在经历了令人沮丧的头砖墙接触之后,我发现了这一点:

$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/steve/bin

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

$ sudo bash -c 'echo $PATH'
/sbin:/bin:/usr/sbin:/usr/bin

$ sudo bash -Ec 'echo $PATH'
/sbin:/bin:/usr/sbin:/usr/bin
Run Code Online (Sandbox Code Playgroud)

我从另一篇文章中收集到sudo路径是从中读取的/etc/sudoers- 但为什么呢?设置是否$PATH/root/.profile任何意义,或者是只是上面的混乱配方(即产卵实际外壳导致不同$PATH的是,在不经意中使用sudo的命令......)?

我在 RHEL 6.4 上使用 bash。

security sudo path

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

为什么在 sudo 返回未找到命令时运行命令?

示例命令:

drush cc all
Run Code Online (Sandbox Code Playgroud)

有效,但这:

sudo drush cc all
Run Code Online (Sandbox Code Playgroud)

给我:

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

为什么?如何解决这个问题?

sudo path

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

LD_LIBRARY_PATH 在 sudo 之后总是空白

每当我似乎手动安装软件时,我都会收到共享库错误。执行后echo $LD_LIBRARY_PATH它显示为..没有。我试过添加/usr/local/lib到一个.conf文件中,/etc/ld.so.conf.d但它似乎永远不会执行。

这不起作用,要么(引号或其他):

LD_LIBRARY_PATH="/usr/local/lib"
export LD_LIBRARY_PATH
sudo ldconfig -v
Run Code Online (Sandbox Code Playgroud)

该值将被临时设置,但如果我退出终端窗口,它将不会保留该值。重新启动也没有任何作用。

sudo environment-variables shared-library

11
推荐指数
1
解决办法
4万
查看次数

debian su - 和 su $PATH 的区别?

$ su -
Password: 
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# exit
logout
$ su
Password: 
# echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Run Code Online (Sandbox Code Playgroud)

我不知道为什么 /bin 和 /sbin 没有添加到$PATH,如果我做普通的 su 。过去就是这样。我怎样才能解决这个问题?我确实注意到:

-rw-r--r-- 1 root root 0 Jan  8  2018 /etc/environment
Run Code Online (Sandbox Code Playgroud)

但除此之外,我的系统似乎很正常。

编辑:我忘了强制性的 uname -a

Linux rpi3 4.17.0-1-arm64 #1 SMP Debian 4.17.8-1 (2018-07-20) aarch64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

编辑2:

$ cat /etc/issue
Debian GNU/Linux buster/sid \n \l
Run Code Online (Sandbox Code Playgroud)

所有的包都来自“测试”repo,因为“稳定”的包在 aarch64 上不能很好地工作。

bash root debian su

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

为什么以下为 sudo 保留环境变量的方法不起作用?

来自/sf/answers/2058041891/

到目前为止,我在这里看到的其他解决方案基于一些系统定义,但实际上可以通过正确调用它来sudo使用当前 PATH(使用env命令)和/或环境的其余部分(使用-E选项) :

sudo -E env "PATH=$PATH" <command> [arguments]
Run Code Online (Sandbox Code Playgroud)

事实上,我们可以用它来做一个别名:

alias mysudo='sudo -E env "PATH=$PATH"'
Run Code Online (Sandbox Code Playgroud)

(也可以自己命名别名sudo,替换原来的sudo.)

鉴于

-E, --preserve-env 指示用户希望保留其现有环境变量的安全策略。如果用户没有保护环境的权限,安全策略可能会返回错误。

我想知道为什么以下不起作用

sudo -E <command> [arguments]
Run Code Online (Sandbox Code Playgroud)

?

鉴于这"PATH=$PATH" <command> [arguments]也是一个命令,我想知道为什么以下不起作用:

sudo  "PATH=$PATH" <command> [arguments]
Run Code Online (Sandbox Code Playgroud)

?

谢谢。

sudo environment-variables

2
推荐指数
1
解决办法
4603
查看次数

标签 统计

sudo ×6

environment-variables ×4

path ×3

linux ×2

su ×2

bash ×1

debian ×1

root ×1

security ×1

shared-library ×1

shell ×1