Eu faço logon no meu servidor como userA
, esse usuário tem um bash
shell, tudo funciona bem com ele.
Então, para os propósitos de um programa, eu tive que fazer sudo adduser --system --home=/home/userB --group userB
; este usuário aparentemente não tem senha, a julgar pelo conteúdo de /etc/passwd
e /etc/shadow
:
$ grep userB /etc/passwd
userB:x:Z08:WW9::/home/userB:/bin/false
$ sudo grep userB /etc/shadow
userB:*:16XXX:0:YYYYY:7:::
Além disso, não há arquivos /home/userB/.profile
nem /home/userB/.bash*
no diretório inicial userB
.
Agora, enquanto estou logado como userA
, gostaria de executar comandos como userB
, em particular inspecionar o $PATH
que userB
vê. Então, tentei editar via EDITOR=/usr/bin/nano sudo visudo
e adicionar uma das userA
lines:
...
# User privilege specification
root ALL=(ALL:ALL) ALL
#userA ALL=(userB) NOPASSWD: /bin/bash
userA ALL = (userB) NOPASSWD: ALL
...
... depois salve o arquivo, saia do shell remoto, faça o login novamente como userA
. Então eu tento rodar:
$ sudo -iu userB; echo $?
1
$ sudo -S -u userB -i /bin/bash -l -c 'echo $HOME'; echo $?
1
$ sudo -i -u userB echo \$HOME; echo $?
1
... e claramente, nada funciona - e não há erro também. Então pensei em strace
de um desses comandos e, de fato, recebi um erro:
$ strace sudo -iu userB
...
write(2, "sudo: effective uid is not 0, is"..., 140sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?
) = 140
exit_group(1) = ?
+++ exited with 1 +++
No entanto, nosuid
não é um problema nesta partição raiz, eu acho:
$ mount | grep '/ '
/dev/sdaX on / type ext4 (rw,errors=remount-ro)
Então, agora eu realmente não tenho ideia do que fazer. É possível ter userA
neste caso executando comandos (por exemplo, imprimir a variável de ambiente $HOME
) como userB
- e se sim, como posso fazê-lo funcionar?