我对 Linux 终端很陌生,我不太确定su带连字符和su不带连字符的区别是什么,例如:su - usernamevs su username. .
我查看了文档,但在那里没有提到这一点。有人可以帮我吗?
“超级用户”一词从何而来?它是“监督用户”的缩写,还是只是一个此类用户在系统中拥有的权力水平的指标?
我明白了什么su -呢
su将您登录到您的环境中的根相反)我明白了什么sudo呢
但我不确定这是做什么的: sudo su -
任何人都想澄清
如果我在su提示时输入密码,则它sudo su不起作用。此外,当使用 执行命令时sudo (command),默认情况下 sudo 是否会自动以 root 执行它(因为手册页说sudo, sudoedit - execute a command as another user
michaelxu@michaelxu-server:~$ su
Password:
su: Authentication failure
michaelxu@michaelxu-server:~$ sudo su
[sudo] password for michaelxu:
root@michaelxu-server:/home/michaelxu# exit
Run Code Online (Sandbox Code Playgroud) 我试图通过覆盖此文件上的值来更改亮度:
sudo echo 5 > /sys/class/backlight/acpi_video0/brightness
-bash: /sys/class/backlight/acpi_video0/brightness: Permission denied
Run Code Online (Sandbox Code Playgroud)
即使使用 sudo 也不起作用。但是,如果我使用 su 切换到超级用户,它就可以工作。这是为什么?
环境:OSX Sierra,Darwin Kernel Version 16.3.0
根本问题:我想在中央存储库中使用一堆 shell 脚本,它们有一个 #!/usr/bin/zsh。在我的 Mac 上,zsh 位于 /bin/zsh 中。
尝试的解决方案:我想创建一个符号链接
ln -s /bin/zsh /usr/bin/zsh
Run Code Online (Sandbox Code Playgroud)
我的用户帐户具有管理员权限,但我不是 root,我不想在这台 Mac 上启用 root 用户。因此我首先做了一个
sudo su
Run Code Online (Sandbox Code Playgroud)
获取具有 root 权限的 shell,然后执行ln命令。但是我仍然收到错误消息ln: /usr/bin/zsh: Operation not allowed。
问题:
为什么我会收到此错误消息?
我需要做什么来创建链接?
有没有更好的方法来实现我最初的目标?请注意,修复 #! 线不是一种选择。
我是 root 用户,假设我想以另一个用户身份运行任何应用程序。这可能吗,而无需切换到另一个用户?
就像是
# google-chrome user=abc
Run Code Online (Sandbox Code Playgroud)
我实际上以非 root 用户身份执行 CLI 程序。我已经设置了粘性位并且我正在使用 setuid,所以程序以 root 权限运行。现在我system()在程序中使用来调用 GUI 应用程序。但我不想以 root 身份运行它,所以我只想暂时放弃该调用的 root 权限。
我编写了一个过程,该过程涉及更新位于 3 台不同机器上的文件上的符号链接。在这些机器上每个存在 4 个用户,每个用户都需要更新这些链接。
使用 su,有没有办法在一行中将密码参数传递给命令,而无需调用 sudo,因为用户将没有管理员权限?
在这一点上,我唯一的替代解决方案是 ssh,但是我希望能够在没有对一堆主机/ips 进行硬编码的情况下做到这一点。
下面的命令根据失败与否正确打印“0”或“1”,因为我把 $? 在“su”命令中。
sudo su -m $USER -c "./shutdown.sh &> /dev/null; echo \$?"
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做:
sudo su -m $USER -c "$BASE/bin/shutdown.sh &> /dev/null"; echo $?
Run Code Online (Sandbox Code Playgroud)
它将始终打印“0”,因为即使命令部分失败,实际的“su”也将始终成功。
知道如何检索子外壳的退出代码吗?
Windows 命令行中是否有类似的 Linux su命令?如果没有,那又怎样:
注意:我使用的是 netcat 远程 shell 连接,因此当命令“runas”请求时我无法插入密码。
注2:“sudo”和“su”命令是不同的命令。“sudo”以另一个用户的身份执行命令。“su”更改有效用户。
注3:尽管找到了我的具体问题的答案,但正如@Ramhound所说,这个问题的答案是“不可能的”