对于我正在做的 Solaris 11 服务器配置审查,我的 /etc/passwd 文件中有以下几行:
root:x:0:0:Super-User:/root:/usr/bin/bash
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
.....
每行最后一个字代表他们登录的shell。如果没有提到,默认是/usr/bin/bash吗?从上面,我可以确认daemon,bin,sys,adm,lp,uucp这些账户是否可以登录?
请注意,我已将此作为我团队运行的脚本之一的输出收到,因此,我可能无法查找您要求的脚本之外的任何信息。但非常感谢您的帮助。
谢谢
答案1
我认为您迄今为止得到的答案有些不准确或至少不完整。
您特别提到该问题与 Solaris 11 相关,这对于答案很重要。
如果没有明确提及 shell,/etc/passwd
那么它是正确的,因为手册页说/usr/bin/sh
将使用 shell,但这是指向 Korn 93 Shell 的逻辑链接。换句话说:对于那些没有提及 shell 的帐户, shell 是 Korn 93,而不是您可能认为的 Bourne Shell。Solaris 曾经与 Korn shell 有亲和力(很久以前),所以这就是指向 Korn Shell 的/etc/passwd
原因。/usr/bin/sh
以下是 Oracle 链接,其中包含更多信息:Oracle Solaris 11 中的新 shell。
额外信息:那么这是否意味着 Korn shell 是 Solaris 11 上的“默认 shell”?不!当您使用命令在 Solaris 11 上创建帐户useradd
并且未明确指定 shell 时,/usr/bin/bash
将使用 Bash shell ()。因此,我会说 Bash 是 Solaris 上的默认 shell。
希望这可以帮助。
答案2
# man -s 4 passwd
[...]
login-shell is the user's initial shell program. If this
field is empty, the default shell is
/usr/bin/sh.
[...]
# man -s 4 shadow
[...]
password An encrypted password for the user generated by
crypt(3C), a lock string to indicate that the
login is not accessible, or no string, which
shows that there is no password for the login.
The lock string is defined as *LK* in the first
four characters of the password field.
[...]
答案3
不,从上面你无法判断列出的帐户是否能够登录。为此,你必须检查 /etc/shadow 文件中每个帐户的条目。特别是你应该查看密码字段,并且可能查看有效期字段。
至于默认 shell,这对您来说很容易测试。只需创建一个用户帐户并检查您是否可以登录。编辑 /etc/passwd 文件以删除测试帐户的 shell,然后再次登录并查看它是什么 shell。
因此我启动了 Solaris 11 Vm,结果证明是sh
。