Eu preciso permitir que o usuário martin
mude para o usuário martin-test
sem senha
su - martin-test
Eu acho que isso pode ser configurado em /etc/pam.d/su
. Já existem algumas linhas nesse arquivo que podem ser descomentadas. No entanto, não gosto da ideia de adicionar usuário martin
ao grupo wheel
. Não quero dar martin
mais privilégios do que poder mudar martin-test
. Eu também não quero usar sudo
.
Qual seria a melhor maneira de fazer isso, mantendo os privilégios do usuário martin
mínimos?
users
password
authentication
pam
Martin Vegter
fonte
fonte
sudo
exemplosudo -u martin-test -i
. Existe uma razão pela qual você está perguntando especificamentesu
?sudo
apenas por causa disso (normalmente não usosudo
e não gosto particularmente). E eu acho que usarpam
é uma maneira mais limpa e transparente de fazer isso.sudo
se destina. Além de não usá-lo normalmente, quais são as objeções?pam
, eu preferiria issosudo
. Sesudo
é a única possibilidade, isso também é bom. Minhas objeçõessudo
são principalmente ideológicas: não gosto da ideia de usuário administrandosudo foo
. Quando preciso fazer administração, efetuo login como root. Caso contrário, eu entrarei como usuário. Essas duas funções distintas não devem ser misturadas. Além disso, eu já tenhopam
infraestrutura instalada. Não quero instalar outrosetuid
programa que possa introduzir bugs de segurança.sudo foo
comandos específicos. Sudo temsudo -s
que irá lançar um shell. sudo é um utilitário muito comum, o que significa que sua segurança foi completamente avaliada, muito mais do que alguns truques de pam. Eu também argumentaria que a obtenção de um shell raiz para tarefas é muito mais insegura do que o lançamento de comandos específicos. Quando você inicia um shell, você executa tudo como root. Se alguma dessas coisas (como uma simplesls
) tiver uma vulnerabilidade de segurança, você acabou de abrir uma brecha na segurança.Respostas:
Adicione as seguintes linhas logo abaixo da
pam_rootok.so
linha no seu/etc/pam.d/su
:Essas linhas executam verificações usando o
pam_succeed_if.so
módulo. Consulte também a sintaxe do arquivo de configuração Linux-PAM para saber mais sobre asauth
linhas.martin-test
. Se for, nada acontece (success=ignore
) e continuamos na próxima linha para verificar o usuário atual . Caso contrário, a próxima linha será ignorada (default=1
) e continuamos nas linhas subseqüentes com as etapas de autenticação usuais.martin
. Se for, o sistema considera o processo de autenticação como bem-sucedido e retorna (sufficient
). Caso contrário, nada acontece e continuamos nas linhas subseqüentes com as etapas de autenticação usuais.Você também pode restringir
su
a um grupo, aqui o grupoallowedpeople
podesu
sem uma senha:fonte
Se você não deseja alterar grupos ou usar
sudo
, use um módulo pam chamadopam_exec
para executar scripts externos em um estágio pam.Adicione uma linha no seu
/etc/pam.d/su
após apam_rootok.so
linha:/path/to/script
possui as permissões 755 (rwxr-xr-x) e o seguinte conteúdo:Portanto, este script existe com sucesso se
su
:martin
emartin-test
.Vejo:
fonte
/etc/pam.d/su
para fazer uso dapam_access
minha situação?pam_access
não posso fazer isso. Quandosu
está passando pela pilha de pam, está fazendo isso como o usuário para o qual você está mudando, e não o usuário do qual está mudando. Então, se você adicionar uma regra como+ : martin : ALL
, permitirá que qualquer mudança paramartin
. Mesmo se você mudarmartin
paramartin-test
, ainda permitirá que alguém faça isso. Você precisa analisar o usuário de quem você é e o usuário para quem está mudando. Realmente, este é exatamente o quesudo
é para ...Se você não tiver acesso à conta raiz, mas tiver a senha do usuário que deseja usar para executar um comando, faça o seguinte.
Apenas instale sua chave pública em allowed_keys do toto
fonte
Minha solução simples é:
Se você quiser evitar o sudo a todo custo, acho que deve ser possível colocar isso em um script:
No entanto, não consigo descobrir os bits
chown root
echmod +s ToTest.sh
, para fazer isso realmente funcionar:Eu ainda corro como meu usuário normal, como o eco me diz. E ainda requer senha sudo. Se estivesse rodando como root, poderia-se acabar com
sudo
a última linha ...fonte
bash
é, por que assume que sabe ondeenv
é ou se existe mesmo?). Mas no final, você não sabe exatamentebash
o que será. Pode vir do diretório do usuário que está chamando e ter sido compilado um minuto antes a partir do código-fonte. Você vê para onde estou indo? Ou o usuário pode substituirwhoami
...