【发布时间】: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 '~'
$
【问题讨论】: