Por algumas razões, eu PRECISO que o diretório inicial de algum usuário em particular seja gravável em grupo. No entanto, ao tentar fazer login nesse usuário com a chave ssh, o sshd recusa a autenticação, pois exige que o diretório inicial seja gravável por ninguém além do proprietário. Caso seja gravável em grupo ou em todo o mundo, o sshd rejeita a autenticação com a (in)famosa mensagem "Autenticação recusada: propriedade ruim ou modos para o diretório /home/usuário".
Existe alguma maneira (exceto recompilar sshd) para forçá -lo a aceitar a autenticação de chave mesmo quando o diretório inicial é gravável em grupo? Talvez coloque as chaves ssh em um diretório diferente, fora do diretório inicial do usuário, e diga ao sshd para usar essas chaves?
Encontrei uma solução por mim mesmo :) Existem de fato duas possibilidades diferentes.
A primeira é definir a opção
StrictModes
parano
(o padrão éyes
) no/etc/ssh/sshd_config
arquivo. Com essa configuração, o sshd não impõe permissões no diretório inicial dos usuários. A desvantagem desse método é que ele é global para todos os usuários.O segundo método é usar a
AuthorizedKeysCommand
opção. Precisamos escrever um script simples, que para esse nome de usuário específico (é passado para o script como um primeiro parâmetro) gerará o arquivo de chaves autorizadas desse usuário - sempre que estiver localizado - e para outros valores do primeiro parâmetro ele simplesmente fazer nada. Algo como:Se o script for colocado, por exemplo, em
/usr/local/libexec/listkeys
, precisamos colocar a seguinte linha no/etc/ssh/sshd_config
arquivo:Com essa solução, o
/home/user
diretório pode ser gravável em grupo, enquanto para outros usuários as permissões para o diretório inicial ainda são aplicadas.