Eu gostaria de criar um alias que faça algo assim:
alias userYYY='sudo su userYYY; cd /a/path/that/only/userYYY/has/access'
Então, na minha linha de comando, estou logado com um usuário sudo e gostaria de digitar o alias userYYY
para que meu shell agora esteja logado userYYY
e pwd
esteja /a/path/that/only/userYYY/has/access
.
Como eu posso fazer isso? Isso userYYY
é para executar alguns processos e deve haver qualquer coisa em sua casa. Por isso, tentei alterar seu $ HOME usando:
sudo usermod -m -d /a/path/that/only/userYYY/has/access userYYY
E então do meu shell com o meu arquivo sudoer eu fiz sudo su userYYY
. Mas isso não funcionou. O único que funcionou foi o sudo su -l userYYYY
que abriu uma nova festança dentro do meu shell original ( -bash-4.1$ ....
).
Em resumo, o que eu quero é simplesmente evitar ter que escrever 2 linhas no meu shell:
sudo su userYYY
cd /a/path/that/only/userYYY/has/access
Alguma ideia?
bash: cannot set terminal process group (13964): Inappropriate ioctl for device\nbash: no job control in this shell
.bashrc
arquivo parasudo
então,cd
onde ter duas linhas separadas simplesmente não estava funcionando.Uma opção seria editar
~/.bashrc
o usuário de destino e adicionarcd
lá:fonte
Resposta curta - você não pode. O
sudo su
inicia um novo shell que deve sair antes que ele chegue aocd
comando.fonte
Para mim, uma combinação
sudo
escreen
funcionou:Este comando muda primeiro para o
vagrant
usuário. Então, comovagrant
altera o diretório para/vagrant
e é executadonpm install
.fonte
Sei que isso é um pouco diferente da pergunta original, mas a idéia é executar o comando como um usuário diferente sem digitar uma senha quando a política o proíbe
sudo su <user> -c
.fonte