Mudar o shell do usuário "definitivamente" muda o que é executado se ele tentar efetuar login e iniciar um shell. Por si só não invalida o acesso. Assim, alguém pode executar ssh host -t /bin/sh
para executar um comando ou ainda conseguir fazer login via ftp ou um aplicativo da web usando este repositório.
Você pode fazer isso funcionar, no entanto, verificando um shell de login válido antes de permitir o acesso. Você poderia fazer isso com um filtro LDAP. Ou, na maioria dos sistemas Linux (e várias outras variantes UNIX ativadas para PAM), você poderia usar algo como pam_shells, que verifica se o shell do usuário está listado em / etc / shells antes de permitir o acesso.
Tradicionalmente, o acesso de login baseado em shell é feito configurando o shell como / bin / false ou configurando-o como / bin / nologin (se existir). Usar pam_shells ou um filtro LDAP renderiza essas soluções "principalmente" sem sentido. No entanto, eu gosto de colocar / bin / true em / etc / shells para que eu possa desencorajar o acesso ao shell para alguns usuários, permitindo-lhes entrar com algo como scp; Eu então coloco / bin / false em para usuários que não devem obter nenhum desses, e uso pam_shells nos serviços onde eu quero usar o shell para mudar as coisas.
Na maioria das vezes, com o LDAP, você pode fornecer um atributo que controla o acesso. Com o Linux pam_ldap, a opção "pam_check_service_attr" permite que você liste serviços de pam específicos aos quais esse usuário pode se autenticar (usando o atributo "authorizedService"). Há também um atributo de acesso baseado em host.
Mas, na verdade, a resposta à sua pergunta depende muito dos recursos do software com o qual você está se conectando ao LDAP. :)