在尝试解决问题时,我发现--session-command
了su
这里。我尝试在工作中的 Ubuntu 12.04 系统上使用它,但出现“无法识别的选项”错误。果然,它甚至没有出现在手册页上su
!
链接的手册页确实说--session-command
“不鼓励”,但没有说明原因。
出于好奇,我连接到了我工作上的 CentOS 6.2 服务器,并且--session-command
被识别了。
进一步的研究让我发现su
Ubuntu 使用的 来自 软件包login
,而 CentOS 使用的 来自coreutils
。Ubuntu 也coreutils
默认安装了一个软件包,但它不包含 FSF 的标准su
实现。详细比较显示,coreutils
两个发行版的 都包含 105 个可执行文件,但存在一些差异(其中大部分似乎只是文件的安装位置)。
我的问题是:--session-command
Ubuntu(或 Debian)的超级用户命令是否故意省略了它,还是 Ubuntu 的不同实现只是没有赶上 FSF?如果是故意的,省略的原因是什么?相关问题:为什么不使用全部FSF 的 GNU Utils 呢?
我确信这在某处有记录,但根据我的搜索条件,谷歌没有提供。
答案1
Ubuntu 和 Debian 自从开始使用 shadow-utils 包以来就一直使用(日志文件可追溯到 1996 年 1 月 1 日)。util-linuxsu
最近从 coreutils 移到了 util-linux 包,coreutils 中的版本需要专门用它构建(大多数发行版不需要)。显然,唯一的原因是 Debian 一直使用 shadow-util 自己的实现,而不是 coreutils su。
标题中你会看到一条消息,说还有另一个shadow-utils 提供的手册页与 Debian/Ubuntu 使用的软件包相同。如果您查看 Ubuntu 和 CentOS 的手册页底部,您也会注意到这一点。
总而言之,你读错了人。