Estou trabalhando em uma máquina onde não tenho root, mas existe uma lista de sudo
comandos permitidos. Um desses comandos é /bin/su - foouser
. Assim, posso digitar sudo su - foouser
e obtenho um shell interativo como foouser. Então eu posso executar algumas coisas como arquivos foouser
.
O problema é que foouser
é um usuário/shell compartilhado usado para gerar certos processos de produção importantes. Não posso personalizá-lo facilmente ou configurá-lo da maneira que desejo. E eu não deveria estar trabalhando nele de forma consistente, o que divide meus terminais e o histórico de comandos entre aqueles em que estou conectado como eu mesmo e aqueles em que estou foouser
.
O que eu realmente gostaria de fazer é ter uma maneira de executar um único comando como foouser
, bloqueá-lo, imprimir stdout e stderr no meu shell como um comando normalmente faria e, em seguida, retornar comigo ainda conectado como eu mesmo (e não foouser
). Isso poderia, por exemplo, ser encapsulado em um script para que as_foo bar
execute o comando bar
, como foouser
, imprima stdout e stderr, retorne o código de retorno de bar
, e então me coloque de volta em meu shell.
Posso pedir aos administradores do sistema para alterar as permissões. Por exemplo, eles poderiam adicionar bar
à lista sudo e eu poderia usar (eu acho) su -c
para executar a barra da maneira que descrevi. Mas aí se no dia seguinte eu quiser correr bar2
, tenho que falar com eles de novo.
Existe alguma saída para esse dilema? Parece um tanto bobo porque obviamente posso me tornar foouser
e executar quantos comandos quiser, então não há diferença em termos de segurança que eu possa ver. Simplesmente não consigo encontrar nenhuma maneira óbvia e conveniente de tornar isso possível.