|
Adduser命令剖析
说到adduser命令,我就不由自主地想起我第一次使用该命令时,它就给我来了个下马威:
# adduser -r linuxboy -p 818
logout
login: linuxboy
password:
Login incorrect
后来,把参数"-r"去掉,还是Login incorrect,使我百思不得其解!我使用的是Red Hat Linux 5.1,每次登录时,我都是用root帐号,在网上听说,若对Linux系统不是很熟悉的话,最好不要用root帐号登录,否则很容易造成系统的崩溃,所以我想用普通的帐号来登录,正好那时手上有《Linux实用大全》。
《Linux实用大全》第二部分 Linux系统管理与中文环境污染 第5章 Linux系统管理 第六节 管理用户帐号中,有有关创建帐号的论述:
“创建一个用户帐号需要几个步骤:加一个记录到/etc/passwd,创建用户的主目录,在用户的主目录中设置用户的缺省配置文件(如.bashrc),幸运的是,我们不必手动执行这些步骤,几乎所有的Linux系统都包含了一个程序adduser来完成用户帐号的创建。
用root帐号运行adduser。只要在提示符后输入所要求的信息,很多提示都有合理的缺省值,简单地敲回车表示接受缺省值:
lark# adduser
Login name for new user(8 characters or less)[ ]:wang
User id for test [defaults to next available ]:
Initial group for test [ ]:
test's home directory [ /home/wang]:
test's shell [ /bin/bash]: /bin/tcsh
test's account expiry date(MM/DD/YY) [ ]:
OK,I 'am about make a new account. Here's what you entered so far:
New login name: wang
New UID: [Next available]
Initial group: users
Additional groups: [none]
Home directory: /home/wang
Shell: /bin/tcsh
Expiry date:[ no expiration ]
This is it... if you want to bail out,hit Control-C,Otherwise , press Enter to go ahead and
make the account.
Making new account...
Changing the user information for test
Enter the new value, or return for the default
Full Name [ ]: Wang Jun
Room Number [ ]:
Work Phone [ ]:
Other [ ]:
Changin password for wang
Enter the new password (minimum of 5,maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
New password:
Re-enter new password:
Password changed.
Done...
lark#
新帐号创建后,/etc/skel目录中的文件,被拷贝到用户的主目录中。/etc/skel目录中含有为新帐号准备的基本文件;它们是缺省的配置文件。系统管理员可把其他一些他认为新帐号必须拥有的文件拷贝到/etc/skel中。
现在新帐号可以使用了。用户wang可以用adduser设定的口令登录。为保证安全性,新帐号在第一次登录后应立即用passwd修改口令。”
以上论述是针对Slackware Linux的,不适用于Red Hat Linux,而国内的Linux初学者,安装的很有可能几乎都是Red Hat Linux,所以,我看了上面有关adduser 的论述后,在#下键入adduser,却没有出现上述所讲的那样,在提示符后输入所要求的信息,而是出现以下帮助信息:
usage: adduser [-u uid [-o] ] [-g group,...]
[-d home] [-s shell] [-c comment] [-m [-k template] ]
[-f inactive] [-e expire mm/dd/yy] [-p passwd] [-n] [-r] name
adduser -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire mm/dd/yy]
即使在Red Hat Linux下键入adduser 用户名 -p 口令,也不能用新帐号成功登录!
让我们再来看看《Linux大全》有关添加用户的论述吧。
在《Linux大全》第十章 管理用户帐号码 10.1.1 添加用户 中是这么说的:
“添加用户时,实际上是在口令文件/etc/passwd中为这个用户添加了一个条目。这种条目的格式是:
login_name:encrypted_password:user_ID:group_ID:user_information:login_directory:
login_shell(登录名:加密口令:用户ID号:组ID号:用户信息:登录目录:登录shell)
在这个语法中,各字段用冒号分开。
adduser命令用于把用户添加到你的Linux系统中。调用这个命令时,带上你要添加的用户的名字。
adduser会话的过程的例子:
# ./adduser jschmoe
Looking for first available UID...508
Looking for first available GID...508
Adding login:jschmoe...done
Greating home directory: /home/jschmoe...done
Greating mailbox: /var/spool/mail/jschmoe...done
Don't forget to set password.
#
adduser命令是一个处于/usr/sbin中的一个shell脚本(script)命令,这个命令使许多功能自动化了。这个脚本(实际上是一个ASCII码文件)创建这个新用户所必需的目录和文件,唯一未做的事情是在他或她首次登录时,用passwd命令设置用户口令。”
特别需要指出的是,该节最后一句话很容易给初学者造成误区!这句话是
“adduser命令不为帐号设置口令,为此,你必须使用passwd命令。”。
可是以上论述又是针对Red Hat Linux 4.0的,在5.1版本中,已经与上述情况不同了。那我们究竟该怎么在Red Hat Linux5.1中创建新用户呢?现在让我来举个例子吧:
在Red Hat Linux5.1创建一个名为listar的新用户
#adduser listar -p 818
#Alt-F3,跳到一个新的终端
login:listar
password:818回车
Login incorrect
Alt-F1,跳回root所在的终端
#less /etc/passwd 杳看口令文件
root:GK/axsxpUH/LY:0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
adm:*:3:4:adm:/var/adm:
lp:*:4:7:lp:/var/spool/lpd:
sync:*:5:0:sync:/sbin:/bin/sync
shutdown:*:6:0:shutdown:/sbin:/sbin/shutdown
halt:*:7:0:/sbin/:/sbin/halt
mail:*:8:12:mail:/var/spool/mail:
news:*:9:13:news:/var/spool/news:
uucp:*:10:14:uucp:/var/spool/uucp:
operator:*:11:0perator:/root:
games:*:12:100:games:/usr/games:
gopher:*:13:30:gopher:/usr/lib/gopher_data:
ftp:*:14:50:FTP User:/home/ftp:
nobody:*:99:99:Nobody:/:
listar:818:500:500::/home/listar:/bin/bash
/etc/passwd (END)
没错啊,在该口令文件中,listar帐号的口令是818,而我用listar帐号登录时,就已经正确输入口令了,怎么还是Login incorretc呢!
如果只输入adduser listar的话,那么passwd文件中会多加一个有关listar的条目:
listar:!!:500:500::/home/listar:/bin/bash
我不是没有为listar添加口令吗,怎么在该条目中会出现“!!”呢?
正当我想不出个所以然来时,网上的好心人——lazarus发了一封邮件给我了:
日期:7 Feb 1999 15:10:37 -0000
发件人:
收件人:
标题:你好
你好:
由于我近几天没有上网,所以未能看到你的email,抱歉。
Adduser的问题已经有位大虾来信告诉我了,谢谢你的美意。
Redhat和slackware其实都差不多。你在信中所说的“redhat需要许多设置”
更好的说法应该是“redhat支持许多设置”,包括用户名,到期时间,口令等,多数
选择都不是必需的。用户口令可以设置为空,例如在命令行中输入:
adduser -p "" fido
引号中间是空字符串,然后可以等用户自己login之后,再使用passwd来设置自己
的口令。(这是那位大虾告诉我的方法)。当然,使用adduser -pzz zz也设置了口令,
但这个口令只存在于etc/passwd处,而不能作为用户的真正口令,所以我在login时就
log不了.
请继续来信指教.谢谢.
祝:新年快乐!
弟:lararus
原来用户口令可以设置为空的,试试就知道了。
# userdel listar
# adduser listar -p ""
# Alt-F2
login: listar
password:直接回车
[listar@localhost /home/listar]$
哇噻,登录了!登录了!好高兴呀!正如lazarus所说的那样,关键是用“-p 后面加用引号引起来的空口令”呀!好感谢网友lazarus呀!谢谢你,是你帮我解决了燃眉之急! |
|