标签: su

在 Bash 中使用 su 运行多个命令

我想使用su -c以 root 身份运行多个命令。我不想为此使用额外的脚本。

我尝试了以下方法:

su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & " -c "ls -lh"
Run Code Online (Sandbox Code Playgroud)

但它只执行ls不是第一个。

我尝试了以下方法:

su root -c "tcpdump -i wlan0 -s 1500 -w CCCCCC & ; ls -lh;"
Run Code Online (Sandbox Code Playgroud)

但它说分号有错误;

你知道怎么做吗?

bash su

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

如何以不同的用户 (Debian) 运行 GUI 程序?

使用终端,我可以使用su和更改正在运行的用户sudo——但是我如何通过单击桌面/开始菜单上的图标/快捷方式来做到这一点?

如果我必须是 root 才能执行,无论如何我都会被问到,但是一些程序,例如KrusaderNetBeans有时在没有 root 访问权限的情况下运行,但是你无法完成你想要的。

在 Windows 上,我只需点击 shift 并右键单击它,就会提示输入用户名和密码。我想在 Debian 中也有一种类似的简单方法可以做到这一点。(除了像创建脚本这样的解决方法,如sudo xyz.)

提前致谢!

root gui debian su sudo

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

为什么“sudo”密码与“su root”密码不同

在我的个人机器上,我经常sudo在某些命令前面键入以完成管理任务。我曾希望通过键入su root和提供我通常为sudo. 但是,这两个密码不一样(我不知道如何登录su root)。运行的命令是否与sudo登录su root并运行相同的命令不同?

我认为sudosu root是一样的,因为当我输入时sudo whoami,我得到root,而不是仅仅whoami在我得到我的用户名的地方。

linux password administration su sudo

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

无法以超级用户身份连接到 X 服务器:0.0

当我在线时,出现以下错误并且该工具无法启动:

[root@dhcppc9 lin64]# ./ise
No protocol specified
_pn: cannot connect to X server :0.0
Run Code Online (Sandbox Code Playgroud)

但是当我不是超级用户时,一切都很好。为什么?

编辑

[root@dhcppc9 lin64]# export $(dbus-launch)
No protocol specified
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

[root@dhcppc9 lin64]# xhost [+]
No protocol specified
xhost:  unable to open display ":0.0"
Run Code Online (Sandbox Code Playgroud)

su x11 xauth

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

为什么 root 没有来源 .bash_profile?

每次我尝试使用su(not su -)以 root 身份登录时,它都不会来自.bash_profileuser1 的主目录。

基本上,我的/var/root目录没有.bash_profile,所以我把副本.bash_profile/var/root测试su -

它也不会自动来源.bash_profile(in var/root)。

无论如何,.bash_profile当我使用su.

我该怎么办?

(它以前有效!有一天,它只是没有来源!也许 bash 中的某些设置更改了?当我source .bash_profile登录后进入时它有效。)

我正在使用 Mac 和 OS X Yosemite。

osx root su bashrc

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

bash:无法设置终端进程组 (-1):设备的 ioctl 不合适

尝试在 ubuntu 14.04 上使用“lfs”用户执行源命令并得到:

root@linux:~/lfs# su lfs - -c "source ~/.bash_profile"
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

背景信息:我正在关注 LFS 的书,用它制作一个脚本,所以在我用 sudo 执行的脚本中,当它到达这部分时,在创建 lfs 用户和他的 .bashrc 和 .bashprofile 之后,我猜它正在加载它。

语境:

echo "info: create 'lfs' group and user..."
groupadd -f lfs
id -u lfs &>/dev/null || useradd -s /bin/bash -g lfs -m -k /dev/null lfs
passwd -d -q lfs

echo "info: make 'lfs' own the 'tools' and 'sources' directories..." …
Run Code Online (Sandbox Code Playgroud)

bash source ubuntu su lfs

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

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万
查看次数

更改用户并在 shell 脚本中加载整个环境

我在使用我们的新贵脚本时遇到了一些问题,该脚本更改了用户并启动了一些 ruby​​ 守护进程。

在过去,我只会bash -c "do the business" -l someuser确保使用该-l标志来模拟登录。

到目前为止,这一直很有效,我们的 ruby​​ 进程一直在抛出以下错误:require: no such file to load -- rubygems (LoadError)经过一些调查,我发现此错误仅在我以 root 用户身份运行脚本时发生,即(当我sudo su或由 upstart 运行时)。

我认为这是一个 PATH 问题,因为当我首先手动设置路径时,它可以解决问题。

有没有办法改变用户并加载整个环境?

我也试过su user -csudo


为了更容易测试,我正在“root”(sudo su)并运行which bundle(捆绑是一个红宝石)。

这是我得到的:

  • sudo -i -u webuser which bundle # => 没有输出
  • su -l webuser -c which bundle # => 没有输出
  • sudo su - webuser -c which bundle …

login su path environment-variables

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

在“su”没有显示新用户 ID 之后,“我是谁”?

为什么当我切换用户su <username>然后执行时who am i输出的是我之前登录的用户而不是我切换到的用户?

su whoami

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

在 `sudo find` 命令中,如何确保以普通用户身份运行 `-exec` 命令?

我试图使以下命令以process_paths脚本不在提升权限下运行的方式工作。有没有办法做到这一点?

sudo find /path/ -exec process_paths '{}' \+
Run Code Online (Sandbox Code Playgroud)

这里/path/有一些文件对普通用户没有读取权限。脚本process_paths只需要路径。

su sudo find

10
推荐指数
1
解决办法
9028
查看次数

标签 统计

su ×10

bash ×3

root ×3

sudo ×3

debian ×2

administration ×1

bashrc ×1

environment-variables ×1

find ×1

gui ×1

lfs ×1

linux ×1

login ×1

osx ×1

password ×1

path ×1

source ×1

ubuntu ×1

whoami ×1

x11 ×1

xauth ×1