我最近在一个客户端盒子上工作,并使用 root 凭据通过 SSH 进入盒子,但是当我尝试 su 或 sudo 到 root 用户时,它指出了错误的密码。我尝试更改 root 密码并知道我输入正确。
感谢帮助
我尝试使用 PHP shell_exec 函数运行 su 命令。起初我试过:
<?php
echo(shell_exec('echo \'password\' | su user -c \'whoami\' 2>&1;'));
?>
Run Code Online (Sandbox Code Playgroud)
我得到了:
su: must be run from a terminal
Run Code Online (Sandbox Code Playgroud)
然后我阅读了有关使用 python 的 pty 生成终端并将其放入 shell 代码的内容:
<?php
echo(shell_exec('echo "if [ -t 1 ] ; then echo "terminal found"; fi; echo \'password\' | su user -c \'whoami\'; exit" | python -c \'import pty; pty.spawn("/bin/bash")\' 2>&1;'));
?>
Run Code Online (Sandbox Code Playgroud)
这是输出:
if [ -t 1 ] ; then echo terminal found; fi; echo 'password' | su user -c 'whoami'; exit …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 SSH 连接到服务器,然后切换到名为“jenkins”的用户。从下面的命令中可以看出,运行后我su - jenkins仍然在 root 用户的主目录中,并whoami表明我仍然是 root,即使su没有返回错误
don@Don-MacBook-Air:~$ ssh root@perkins.corp.foo
root@perkins.corp.foo's password:
Last login: Thu Jan 8 03:02:23 2015 from 10.0.16.57
root@perkins.corp.foo:~ $ whoami
root
root@perkins.corp.foo:~ $ su - jenkins
root@perkins.corp.foo:~ $ whoami
root
root@perkins.corp.foo:~ $ pwd
/root
Run Code Online (Sandbox Code Playgroud)
我已经验证有一个名为的用户,jenkins所以我不明白为什么会失败。服务器运行的是 Red Hat 4.4.7-4。
森托斯 8.
有snowuser:
[snowuser@snowcannon-01 ~]$ cat /etc/passwd | grep snowuser
snowuser:x:1002:1002::/home/snowuser:/bin/bash
[snowuser@snowcannon-01 ~]$ groups
snowuser wheel
Run Code Online (Sandbox Code Playgroud)
有tomcat用户:
[snowuser@snowcannon-01 ~]$ cat /etc/passwd | grep tomcat
tomcat:x:1003:1003::/opt/tomcat:/bin/false
cat /etc/group | grep "tomcat\|snowuser"
wheel:x:10:ydyachuk,amsliusar,snowuser
snowuser:x:1002:
tomcat:x:1003:
Run Code Online (Sandbox Code Playgroud)
尝试在用户下运行Tomcat的启动脚本tomcat:
/bin/su tomcat -c /opt/tomcat/bin/startup.sh
但没有任何意义,既没有出现任何错误消息,也没有执行 Tomcat 进程。
我只有一个细节是该命令执行时出现错误:
[snowuser@snowcannon-01 ~]$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
似乎tomcat用户具有执行脚本的适当权限:
[snowuser@snowcannon-01 ~]$ ll /opt/tomcat/bin/startup.sh
-rwxr-xr-x. 1 tomcat tomcat 1904 Nov 11 15:14 /opt/tomcat/bin/startup.sh
Run Code Online (Sandbox Code Playgroud)
如何让 Tomcat 运行?
我的目标是通过 ssh 从另一台 Linux 主机以 root 用户身份执行命令。
问题是:环境不允许直接访问root用户。
有效的手动方式是首先通过 ssh-key 连接到非特权用户,然后 su 到 sudo 特权用户,然后 sudo -i/sudo su 到 root 帐户并执行命令。
一种对我来说非常方便的解决方案是使用Python 和 Paramiko
我的问题是,如果没有 Python,这样的事情是否也可能实现。最后,我想执行一个脚本,该脚本读取特权用户密码,然后以 root 用户身份在远程系统上执行命令。
我想到了这样的事情:
ssh -t user01@host su user02 -c 'sudo -S cat /etc/shadow'
Run Code Online (Sandbox Code Playgroud)
如果我直接在机器上执行此命令,它可以工作,但是一旦我通过 ssh 尝试它,就会出现错误:su: invalid option -- 'S'
在我看来,这是 ssh -t 和 sudo -S 组合的问题,但我不明白。
有什么建议么?感谢您的帮助!
问题:在 MacOS 中使用 su 命令访问帐户,更多信息请点击此处。我可以访问我的其他帐户,但不能访问根据说明创建的帐户。该命令不会更改用户:
su postgres
Run Code Online (Sandbox Code Playgroud)
问题:为什么我无法使用 su 命令访问帐户?
在 linux 中切换用户有什么区别:
su root
Run Code Online (Sandbox Code Playgroud)
和
su -
Run Code Online (Sandbox Code Playgroud) 下面我在 FreeBSD 上使用“su”命令:
FreeBSD rand.vstyle.local 9.0-RELEASE FreeBSD 9.0-RELEASE #0 amd64 这是服务器 RAND :) [svn@rand ~]$ su logostudiotest1 /bin/ls 密码: /bin/ls: /bin/ls: 无法执行二进制文件
为什么“su”不起作用?!
我在我们的环境中使用 rhel7.2。我不希望系统上的任何用户“su”到 2 个特定用户说“user3 和 user4”。但是“user3 和 user4”可以“su”到系统中的任何用户。
让我详细解释我的要求。假设我在服务器上有 4 个用户,比如 user1、user2、user3 和 user4。
假设我使用用户 1 或用户 2 登录到服务器。“我的要求是它不能将用户“su”切换到用户“user3”和“user4”。但是如果我使用“user3”或“user4”登录服务器,我可以将用户“su”切换到用户1或user2。
简而言之
在服务器上以 User1 身份登录> su - user3 -------这不应该工作
在服务器上以 User3 身份登录> su - user1 --------这应该可以工作