我在Cent 5.10
主机上。
我向该主机发出远程命令来启动服务,每个服务都读取为启动成功:
kkahn@host: /home/kkahn$ ssh -q -t host.example.com "sudo /etc/init.d/redacted-service start "
Starting service
Service started
Connection to host.example.com closed.
甚至在带有 PID 条目的情况下创建了 PID 文件/var/run
,但没有启动任何进程!如果我运行sleep 10
最后带有 a 的命令,它将在远程主机上运行该进程 10 秒,并在命令结束时停止。
答案1
在检查一台不工作的主机和一台工作的主机(Cent5 主机与 Cent6 主机相比)上sudo -i
的输出后,我注意到以下内容:set
[root@cent5-node ~]# set | grep -i sudo
SUDO_COMMAND=/bin/bash
SUDO_GID=100100017
SUDO_UID=100100017
SUDO_USER=kkahn
[root@cent6-node ~]# set | grep -i sudo
SUDO_COMMAND=/bin/bash
SUDO_GID=1001000173
SUDO_UID=1001000173
SUDO_USER=kkahn
[root@testcentsix(testcentsix) ~]#
我的SUDO_GID
和SUDO_UID
是正确的cent6-node
- 和缩短了在cent5-node
!在 Cent5 上,ID 已被3
删除。
事实证明,这是在后续版本中修补的内容sudo
:
https://gratisoft.us/sudo/changes.html
* plugins/sudoers/env.c, plugins/sudoers/ldap.c: Use MAX_UID_T_LEN + 1 for uid/gid buffers, not MAX_UID_T_LEN to prevent potential truncation. Bug #562. [29d9fc4e0c4e]
sudo
这些 Cent5 主机上运行的版本是1.7.2p1
,而我们的 Cent6 主机上运行的版本是1.8.6p3
.翻阅了源码1.7.2p1
,果然发现:
... char idbuf[MAX_UID_T_LEN]; ...
sudo
在Cent5节点上安装更高版本后,该问题已得到解决。