我正在一台没有 root 权限的机器上工作,但有一个允许的sudo
命令列表。这些命令之一是/bin/su - foouser
. 所以我可以输入sudo su - foouser
,然后我得到一个交互式 shell 作为 foouser。然后我可以运行一些东西作为foouser
.
问题是这foouser
是一个共享的用户/外壳,用于产生某些重要的生产过程。我无法轻松自定义它或按照我想要的方式设置它。而且我不应该一直在其中工作,这会分割我的终端,以及我以自己身份登录的终端和我所在的终端之间的命令历史记录foouser
。
我真正想做的是有一种方法来运行单个命令foouser
,让它阻塞,像通常的命令一样将stdout和stderr打印到我的shell,然后返回我仍然以我自己的身份登录(并且不是foouser
)。例如,这可以封装在一个脚本中,以便as_foo bar
运行命令bar
as foouser
,打印 stdout 和 stderr,返回返回码bar
,然后将我放回我的 shell。
我可以要求系统管理员更改权限。例如,他们可以添加bar
到 sudo 列表中,然后我可以使用(我认为)su -c
以我描述的方式运行 bar。但是,如果第二天我想跑步bar2
,我必须再次与他们交谈。
有没有办法摆脱这种困境?这似乎很愚蠢,因为我显然可以成为foouser
并运行任意数量的命令,所以我可以看到在安全性方面没有区别。只是找不到任何明显方便的方法来实现这一点。