【问题标题】:sudo to different user and run commands immediately post sudo, passively (non interactively )sudo 到不同的用户并立即运行命令发布 sudo,被动(非交互式)
【发布时间】:2014-02-28 23:00:55
【问题描述】:

考虑这个 sudo - 我以 johnnd 身份登录并通过具有以下命令的脚本 run1st.ksh 运行它

sudo -iu bigadmin 

这将我的凭据提升为 bigadmin 一个通用用户,但该用户是“共享”用户,意思是 - 我真的没有任何余地来自定义他的个人资料 在他登录后,我看到他的 PATH 变量非常瘦,只添加了几条路径

echo $PATH 
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/opt/dell/srvadmin/bin

所以密码不在路径中,也不是可执行的。 $PATH 中的这些目录都不是可写的,就像我说的那样,修改 bigadmin 的任何个人文件都不是一种选择。我有一个启动脚本,我以该用户身份执行我的会话,我必须强制执行它

. ./myscript 

会有用的

myscript 
. myscript 

给出 myscript not found 错误是可以理解的,因为上面提到的路径限制。 我想要做的是在 run1st.ksh 中运行 sudo 和 myscript 以便当我输入 bigadmin 提示时 myscript 已经运行 @barmar 谢谢你的帮助。 这是运行它的 o/p(在 set -x 上设置详细)

++ sudo -iu bigadmin ksh -c '. ./run1st.ksh'
Usage: . [ options ] name [arg ...]

@Barmar

sudo -iu bigadmin ksh -c '/home/bigadmin/run1st.ksh'
ksh: line 1: /home/bigadmin/run1st.ksh: not found

sudo -iu bigadmin ksh -c '. /home/biadmin/run1st.ksh'


age: . [ options ] name [arg ...]


$ sudo -iu bigadmin  ksh -c '. /home/bigadmin; run1st.ksh'
+ sudo -iu bigadmin ksh -c '. /home/bigadmin; run1st.ksh'
Usage: . [ options ] name [arg ...]

$ sudo -iu bigadmin  ksh -c '. /home/bigadmin/run1st.ksh ; run1st.ksh'
+ sudo -iu bigadmin ksh -c '. /home/bigadmin/run1st.ksh ; run1st.ksh'
Usage: . [ options ] name [arg ...]

没有用

$ sudo -iu bigadmin  /home/bigadmin/run1st.ksh
+ sudo -iu bigadmin /home/bigadmin/run1st.ksh
-nologin: line 1: /home/bigadmin/run1st.ksh: not found

它实际上是在 johnd 的目录中查找 run1st.ksh

$ sudo -iu bigadmin  echo `pwd`
++ pwd
+ sudo -iu bigadmin echo /home/johnd

甚至在将其复制到 johnd 的家之后 - 我得到了 SAME File not found 命令。所以它在特定的 PATH 中寻找文件,而不是在您提出的目录中。也许在那个 sudo 命令中调整 PATH ?

文件名xxx. ksh 中有一个我没有注意到的空格。修复了这个问题,现在它不会给出文件未找到错误但它会执行它并返回到 johnd 提示符。

$ sudo -iu bigadmin /home/bigadmin/run1st.ksh
+ sudo -iu bigadmin /home/bigadmin/run1st.ksh
++ printf '\033]0;%s@%s:%s\007' johnd server400 '~'
$

【问题讨论】:

    标签: bash shell path ksh sudo


    【解决方案1】:

    你可以这样做:

    sudo -iu bigadmin /path/to/myscript
    

    【讨论】:

    • 这将使我正确地进入 bash shell。我如何做同样的事情并以 bigadmin 身份潜入 ksh ( bourne ) shell
    • 使用ksh 而不是bash
    • 不适用于 ksh 。我将在几分钟内更新问题中的 o/p
    • 我不确定为什么它不起作用。 ksh 采用 -c 选项,就像其他 shell 一样。
    • -i 选项将当前目录设置为bigadmin 的主目录。所以你需要把脚本的完整路径放在他的homedir中。
    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 2017-11-05
    • 2015-12-26
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2018-06-09
    • 2014-04-30
    相关资源
    最近更新 更多