尽管我已经使用 Linux 多年,但我仍无法弄清楚以下问题。
我正在使用以下 Docker 映像:
amazoncorretto:11.0.6
当进入该图像时
docker run -ti amazoncorretto:11.0.6
并执行
sudo
我最终
bash-4.2# sudo
bash: sudo: command not found
bash-4.2#
所以我当然安装了sudo
bash-4.2# yum install sudo
现在我得到了以下结果
bash-4.2# sudo
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...
bash-4.2#
这样做很好,但是
bash-4.2# su
bash: su: command not found
bash-4.2#
这就是问题所在。我必须切换用户并尝试类似
sudo -E -u user /bin/sh -c "..."
确实不太令人满意。
我想使用
su -c "..." user
我找不到任何相关的帖子,我很困惑为什么sudo
找不到su
。
我甚至试图找到这个文件,以为它是关于PATH
我最终得到了
bash-4.2# find / -name "sudo"
/var/db/sudo
/usr/libexec/sudo
/usr/bin/sudo
/etc/pam.d/sudo
bash-4.2#
但
bash-4.2# find / -name "su"
/usr/share/locale/su
bash-4.2#
我们正在讨论亚马逊Linux 2这里。
我将非常感激任何对此提供帮助的!
答案1
起初我尝试替代su
:
sudo "PATH=$PATH" -E -u user /bin/sh -c "..."
但最终却引发了另一个问题。
这就是为什么我进一步调查为什么su
不可用,最后发现我必须安装以下软件包
yum install -y util-linux
此后su
即可使用。