登录Ubuntu系统时,登录用户为“ root
”。
然后,我想代表“ non_root
”执行一些bash脚本:
root@test_pc:~# echo $USER
root
root@test_pc:~# sudo -E -u non_root -g non_root -H /bin/bash -c "echo $USER"
root
root@test_pc:~#
但输出仍然是“ root
”,换句话说,该命令仍然是在“ root
”用户下执行,而不是在“ non_root
”下执行。
这是预期的输出:
root@test_pc:~# sudo -E -u non_root -g non_root -H /bin/bash -c "echo $USER"
non_root
root@test_pc:~#
下面是真实的操作:
sudo -E -u non_root -g non_root -H /bin/bash -c "systemctl --user disable pulseaudio.service"
但出现以下错误:
Failed to connect to bus: Operation not permitted (consider using --machine=<user>@.host --user to connect to bus of other user)
non_root
当使用“ ”用户登录时,如何以“ ”身份执行任何bash命令root
?
不用说,您正在做的事情(即以用户身份登录)
root
是不鼓励的,因此root
默认情况下在 Ubuntu 上禁用该用户。也就是说,...
Bash 命令字符串周围的双引号允许在执行命令之前在当前命令行中的当前 shell 中进行参数扩展……查看实际操作:
虽然您的命令实际上是作为预期用户执行的:
要在创建的子 shell 中展开
$USER
以运行该 Bash 命令字符串,请在命令字符串周围使用单引号:另请注意,pulseaudio 是一项用户服务,需要用户登录才能运行...请参见例如https://askubuntu.com/a/1465201,Dbus也是用户的用户运行时环境的一部分,需要用户登录为好吧......例如参见https://askubuntu.com/a/1470118