下列说法有何错误?
[cloudera@localhost zookeeper]$ sudo su - zookeeper
[cloudera@localhost zookeeper]$ whoami
cloudera
回应其中一条评论:
[cloudera@localhost zookeeper]$ cat /etc/passwd | grep zook
zookeeper:x:492:488:ZooKeeper:/var/run/zookeeper:/bin/false
[cloudera@localhost zookeeper]$ cat /etc/passwd | grep cloudera
cloudera-scm:x:497:498:Cloudera Manager:/var/run/cloudera-scm-server:/sbin/nologin
cloudera:x:500:500::/home/cloudera:/bin/bash
答案1
您正在尝试su
访问一个用户的 shell 是/bin/false
./bin/false
总是以代码 1 退出,所以你永远不是那个用户:
$ sudo su - dnsmasq
$ echo $?
1
如果要使用此类已禁用的用户启动 shell,请使用sudo
:
$ sudo -u dnsmasq /bin/bash
$ whoami
dnsmasq
注意dnsmasq
通常有/sbin/nologin
(的更礼貌版本false
)作为 shell,因此适用相同的原则。
答案2
嗯,sudo su - [user]
似乎在这里有效,
$ sudo su - jerk
jerk ~ $ whoami
jerk
尽管 su 手册页说这-
应该是最后一个选项
When - is used, it must be specified as the last su option. The other forms (-l
and --login) do not have this restriction.
如果我尝试这样做,我会收到这些错误,但是仍然可以以 [用户] 身份登录:
$ sudo su [user] -
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
sudo 能正常工作吗?也许它不起作用……?