Como alternativa sux, para executar com segurança o comando gráfico ( firefox-esrno exemplo abaixo) como $AUTHUSER( guestno exemplo abaixo):
AUTHUSER=guest
AUTHSTRING=SI:localuser:${AUTHUSER}
xhost +${AUTHSTRING} > /dev/null
SUDO_ASKPASS=/usr/bin/ssh-askpass
export SUDO_ASKPASS
sudo -k --askpass -u ${AUTHUSER} /usr/bin/firefox-esr
xhost -${AUTHSTRING} > /dev/null
sudo -K
o código faz:
- dá ao
guestusuário acesso ao seu usuário atual $DISPLAYviaxhost +SI:localuser:guest
- usa
ssh-askpasspara solicitar graficamente sua senha (é claro, você pode sudoers(5) NOPASSWD:evitar isso, se sua política de segurança achar que está ok. Ou você pode usar outros askpassprogramas ou especificá-los nos arquivos de configuração (veja sudo(8)detalhes em --askpass)
- se a senha estiver correta (e você tiver permissões
sudoers(5)), executa o comando /usr/bin/firefox-esrcomo outro usuário ( guest)
- após a conclusão do programa, as permissões para outro usuário (
guest) para acessar o seu $DISPLAYsão revogadas viaxhost -SI:localuser:guest
finalmente, sudo -Kremove a senha em cache; portanto, a próxima chamada de ssh-askpasssolicitará a senha novamente (em vez de usar a senha em cache)
Embora seja um pouco mais trabalhoso do que o que gksu(8)ou o que sux(8)foi feito, ele pode ser script e é muito mais seguro do que:
xhost + (qualquer usuário terá acesso à sua exibição gráfica enquanto estiver em vigor)
- legível ~ / .xauth por outros usuários (acesso indefinido desse usuário ao seu monitor)
- what
gksu/ suxdid (cópia temporária de ~/.Xauthority, o que permitiu que o usuário especificado copiasse o seu MIT-MAGIC-COOKIE-1e continuasse usando o seu monitor mesmo após a conclusão do gksu / sux (desde que você não desligasse a máquina ou desconectasse o monitor - protetores de tela, hibernação etc. não alteraram a mágica biscoito).
pois permitirá apenas um usuário local acessar sua tela e somente enquanto o comando for executado (quando o comando for concluído, $AUTHUSERnão será mais possível acessar sua tela de nenhuma maneira).
Outra alternativa segura é ssh -X(sem -Yque realmente o torna menos seguro! Ver ForwardX11Trustedem ssh_config(5)para mais detalhes), como é mais fácil de usar se você não está scripting, mas induz sobrecarga additinal (por exemplo., É mais lento) e alguns programas podem não funcionar corretamente sem inseguro -Y .
$XAUTHORITYainda está definido como user1's~/.Xauthority, que o programa, eu acho, tentará ler, e falha porque esse arquivo normalmente tem o modo 0600 (-rw-------), o que significa que não está disponível para leitura por qualquer pessoa do grupo "outro", que inclui o usuário2. Ou seja, se vocêchmod o+r ~/.Xauthority(como usuário1), você terá invadido esse problema. Eu escrevi um script que demonstra isso.