/etc/passwd文件格式
/etc/shadow文件格式
手工添加用户
系统在保存用户的时候,先在passwd文件中添加一行记录,密码也写在密码位,然后调用pwconv命令把密码转移到shadow中,使用pwunconv命令可以把密码转移到passwd中。
我们可以使用手工的方式添加用户,就是在passwd和shadow文件中添加记录即可,然后给他创建宿主目录并且分配权限。
然后还需要将/etc/skel目录中的文件拷贝到宿主目录中,登录才正常。
/etc/login.defs 是设置用户帐号限制的文件。该文件里的配置对root用户无效。
如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs
# *REQUIRED* required
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#创建用户时,要在目录/var/spool/mail中创建一个用户mail文件
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
#密码最大有效期
PASS_MIN_DAYS 0
#两次修改密码的最小间隔时间
PASS_MIN_LEN 5
#密码最小长度,对于root无效
PASS_WARN_AGE 7
#密码过期前多少天开始提示
#
# Min/max values for automatic uid selection in useradd
#创建用户时不指定UID的话自动UID的范围
UID_MIN 500
#用户ID的最小值
UID_MAX 60000
#用户ID的最大值
#
# Min/max values for automatic gid selection in groupadd
#自动组ID的范围
GID_MIN 500
#组ID的最小值
GID_MAX 60000
#组ID的最大值
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#当删除用户的时候执行的脚本
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes
#使用useradd的时候是够创建用户目录
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
/etc/default/useradd
主要是定义默认家目录、环境配置文件目录、登入执行首个程序等等。来个实例吧:
# useradd defaults file
GROUP=100 注:gid=100,表示可创建普通组
HOME=/home 注:把用户的家目录建在/home中;用户家目录的默认创建地
INACTIVE=-1 注:是否启用帐号过期停权,-1表示不启用;宽限天数,0及以下数皆为无效数字
EXPIRE= 注:帐号终止日期,不设置表示不启用;帐号失效日期(如:20081212)
SHELL=/bin/bash 注:所用SHELL的类型;登录后执行的程序
SKEL=/etc/skel 注: 用户家目录中的环境文件,默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的;
有人这里又会问:/etc/skel是干什么的?
用useradd username(或者adduser username)添加一个名为username的用户,然后用passwd username 指定口令。用户的信息记录在/etc/passwd文件里,由于每个用户都可以(而且必须能)读出这个文件然后就可以crack出其它用户的密码,为安全考虑现在都使用shadow。在/etc/passwd下用户的口令变为x 真正的口令密文记录在/etc/shadow里,而这个文件只有以root权限才能读出。Redhat 5.1以下版本没有直接使用shadow,需要用pwconv转换一下,如果要变回来,可以用pwunconv。
因此,在/etc/skel目录记录了一个用户应该有的基本文件(ls -a /etc/skel/看看都有什么,都是用户家目录中的环境文件),useradd会自动把这些文件复制到用户的家目录下并置上适当的权限(除非添加用户时用了-m参数: useradd -m xxx)。如果你在这个目录下键一个public_html的目录,则以后添加的用户在它的家目录下都会自动有个同名的目录,这样每个用户都有了“个人主页”。删除用户可以用userdel usrname或userdel -r username(有些发行版可能是deluser),-r参数会删除这个用户的宿主目录,但是在系统里别的地方还可能有此用户的信息,所以在删除用户之前最好还要用find / -user username等方式去找一找相关信息。 如果要临时禁止一个用户,可以在/etc/passwd文件中此用户的密码这一项第一个字符前添加一个*号。 如果把密码域改为空,则此用户不需要密码就可以进入系统,当你忘记root口令时,可以用软盘启动把原来的root安装上来,直接去改passwd文件。
useradd指令应用