我想使用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)
但它说分号有错误;。
你知道怎么做吗?
使用终端,我可以使用su和更改正在运行的用户sudo——但是我如何通过单击桌面/开始菜单上的图标/快捷方式来做到这一点?
如果我必须是 root 才能执行,无论如何我都会被问到,但是一些程序,例如Krusader,NetBeans有时在没有 root 访问权限的情况下运行,但是你无法完成你想要的。
在 Windows 上,我只需点击 shift 并右键单击它,就会提示输入用户名和密码。我想在 Debian 中也有一种类似的简单方法可以做到这一点。(除了像创建脚本这样的解决方法,如sudo xyz.)
提前致谢!
在我的个人机器上,我经常sudo在某些命令前面键入以完成管理任务。我曾希望通过键入su root和提供我通常为sudo. 但是,这两个密码不一样(我不知道如何登录su root)。运行的命令是否与sudo登录su root并运行相同的命令不同?
我认为sudo和su root是一样的,因为当我输入时sudo whoami,我得到root,而不是仅仅whoami在我得到我的用户名的地方。
当我在线时,出现以下错误并且该工具无法启动:
[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(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。
尝试在 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) $ 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 上不能很好地工作。
我在使用我们的新贵脚本时遇到了一些问题,该脚本更改了用户并启动了一些 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 -c和sudo。
为了更容易测试,我正在“root”(sudo su)并运行which bundle(捆绑是一个红宝石)。
这是我得到的:
sudo -i -u webuser which bundle # => 没有输出su -l webuser -c which bundle # => 没有输出sudo su - webuser -c which bundle …为什么当我切换用户su <username>然后执行时who am i输出的是我之前登录的用户而不是我切换到的用户?
我试图使以下命令以process_paths脚本不在提升权限下运行的方式工作。有没有办法做到这一点?
sudo find /path/ -exec process_paths '{}' \+
Run Code Online (Sandbox Code Playgroud)
这里/path/有一些文件对普通用户没有读取权限。脚本process_paths只需要路径。