Eu tenho um computador cliente Ubuntu 16.04 que está conectado ao LDAP (FreeIPA). Leva seus usuários do IPA LDAP. Assim, temos uma diretiva mkhomedir no arquivo /etc/pam.d/common-session
que cria automaticamente o diretório home.
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
Eu escrevi um pequeno script de personalização para o Unity Desktop para todos os usuários que fazem login no Desktop. Agora, queremos executar esse script sempre que um usuário / novo usuário fizer login. Como queremos que todos os usuários vejam um Desktop padrão.
Minha configuração é a seguinte:
Script de login a ser executado:
$ cat /usr/bin/login.sh
#!/bin/bash
dconf reset -f /
xdg-settings set default-web-browser google-chrome.desktop
gsettings set org.gnome.desktop.session idle-delay 0
gsettings set org.gnome.desktop.screensaver lock-enabled false
gsettings set com.canonical.Unity.Launcher launcher-position Bottom
dconf write /org/compiz/profiles/unity/plugins/unityshell/icon-size 24
Configuração do LightDM que mudei:
$ cat /usr/share/lightdm/lightdm.conf.d/50-unity-greeter.conf
[Seat:*]
greeter-session=unity-greeter
greeter-show-manual-login=true
greeter-setup-script=/usr/bin/numlockx on
session-setup-script=/usr/bin/login.sh
O LightDM sob essa configuração executa o script toda vez que um usuário que efetuou login antes efetua o login. Porém, quando um novo usuário sem o diretório home tenta efetuar login, existe um loop de login que direciona o novo usuário para receber novamente.
Após a auditoria, percebemos que o diretório pessoal criado automaticamente do usuário recém-logado é criado com a propriedade root: root
drwx------ 6 root root 4096 Jun 7 12:10 newuser/
Isso só acontece se o usuário nunca tiver feito login antes.
Eu tentei colocar o script de configuração de sessão em /etc/lightdm/lightdm.conf
com as variações abaixo:
$ cat /etc/lightdm/lightdm.conf
[Seat:*]
user-session=ubuntu
greeter-session=unity-greeter
session-setup-script=/usr/bin/login.sh
$ cat /etc/lightdm/lightdm.conf
[SeatDefaults]
user-session=ubuntu
greeter-session=unity-greeter
session-setup-script=/usr/bin/login.sh
$ cat /etc/lightdm/lightdm.conf
[LightDM]
user-session=ubuntu
greeter-session=unity-greeter
session-setup-script=/usr/bin/login.sh
Também tentou colocar lightdm.conf
em /usr/share/lightdm/lightdm.conf.d/
Nenhuma dessas abordagens funcionou. O mesmo comportamento!
Como resultado, quando tento executar esse script, novos usuários sem diretórios de usuário não podem fazer login no Unity. Mas se o usuário tiver efetuado login antes (diretório pessoal criado com propriedade correta), ele poderá continuar usando o Unity com a personalização.
Eu fiz pesquisas sobre o script de logon lightdm, pam e linux. Mas não consegui encontrar e responder a este problema. Alguém pode ajudar o que fazer para criar o diretório inicial de novos usuários com as permissões corretas?