我发现 Ubuntu 18.04 和 Ubuntu 20.04 之间用户“nobody”的行为存在差异。
在两个版本(18.04 和 20.04)中,用户 nobody 都配置为:
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
在 18.04 中,对于 crontab 应用程序,nobody 的主目录将被定义为HOME=/
。在 20.04 中,crontab 应用程序将报告 nobody 的主目录不存在,例如
Failed to create secure directory (/nonexistent/.config/pulse): No such file or directory.
这是另一个例子:
Ubuntu 18.04:
su - nobody
No directory, logging in with HOME=/
This account is currently not available.
Ubuntu 20.04:
su - nobody
su: warning: cannot change directory to /nonexistent: No such file or directory
This account is currently not available.
我猜想在 20.04 中没有为未定义有效主目录的用户提供默认定义。我们如何修复 Ubuntu 20.04,使其行为类似于 18.04(无目录,使用 HOME=/ 登录)。
答案1
我不知道如何让 Ubuntu 20.04su
表现得像 Ubuntu 18.04 su
。
不同之处在于,在 Ubuntu 20.04/Focal 中,它su
由软件包提供util-linux
。在 Ubuntu 18.04/Bionic 中,su
它由软件包提供login
(从源软件包构建shadow
)。
root@ubuntu:~# lsb_release -r
Release: 18.04
root@ubuntu:~# dpkg -S /bin/su
login: /bin/su
root@ubuntu:~# lsb_release -r
Release: 20.04
root@ubuntu:~# dpkg -S /bin/su
util-linux: /bin/su
一个关键的实现差异似乎是对 的DEFAULT_HOME
支持/etc/login.defs
。Bionic 的手册页su
在其配置部分
DEFAULT_HOME (boolean)
Indicate if login is allowed if we can't cd to the home directory. Default is no.
If set to yes, the user will login in the root (/) directory if it is not possible to
cd to her home directory.
这Focal 版本的手册页su
没有提到DEFAULT_HOME
。
我在变更日志对于shadow
包
* Use explicit --without-su configure flag
-- Balint Reczey <[email protected]> Fri, 20 Dec 2019 16:39:40 +0100
...
* Drop Lintian override for su, it is not shipped in login anymore
-- Balint Reczey <[email protected]> Mon, 08 Jul 2019 15:58:46 +0200
...
* Stop shipping su and break old util-linux version. (See #833256)
-- Andreas Henriksson <[email protected]> Fri, 27 Jul 2018 10:07:37 +0200
看起来这一变化是在 Debian 上游进行的,并由https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833256。文中提到了缺乏DEFAULT_HOME
支持,但并未将其视为阻碍因素。