我有一台连接到 LDAP(FreeIPA)的 Ubuntu 16.04 客户端计算机。它从 IPA LDAP 获取用户。因此,我们在/etc/pam.d/common-session
文件中有一个 mkhomedir 指令,可自动创建主目录。
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
我为 Unity Desktop 的每个登录桌面的用户编写了一个小型自定义脚本。现在,我们希望每次用户/新用户登录时都运行此脚本。因为我们希望所有用户都能看到标准桌面。
我的配置如下:
要运行的登录脚本:
$ 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
我已更改的 LightDM 配置:
$ 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
在此配置下,LightDM 会在之前登录过的用户每次登录时运行脚本。但是,当没有主目录的新用户尝试登录时,会出现登录循环,引导新用户再次进入欢迎界面。
经过审计我们发现,新登录用户的自动创建的主目录的所有权为 root:root
drwx------ 6 root root 4096 Jun 7 12:10 newuser/
仅当用户以前从未登录过时才会发生这种情况。
我尝试将 session-setup-script/etc/lightdm/lightdm.conf
置于以下变体下:
$ 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
也尝试lightdm.conf
过/usr/share/lightdm/lightdm.conf.d/
这些方法都不起作用。行为相同!
因此,当我尝试运行此脚本时,没有主目录的新用户无法登录 Unity。但如果用户之前已登录(使用正确所有权创建的主目录),他们可以继续使用自定义的 Unity。
我搜索了 lightdm、pam 和 linux 登录脚本。但找不到这个问题的答案。有人能帮忙创建具有正确权限的新用户的主目录吗?