用户账号文件—passwd
基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。在早期的UNIX操作系统中,用户帐号的密码信息是保存在passwd文件中的,不法用户可以很容易的获取密码字串并进行暴力破解,因此存在一定的安全隐患,后来经改进后,将密码转存入专门的shadow文件中(见下页)并严格控制全新,而passwd文件中仅保留密码占位符“x”。
passwd文件用于保存用户的账号基本信息,文件的保存位置位于/etc/passwd,在该文件中每一行对应一个账号的基本信息。
利用以下语句查看passwd的基本内容如下:
[root@localhost ~]# tail -2 /etc/passwd
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
benet:x:500:500:BENET Student User:/home/benet:/bin/bash
字段1:用户帐号的名称
字段2:用户密码字串或者密码占位符“x”
字段3:用户帐号的UID号
字段4:所属基本组帐号的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录Shell信息
用户帐号文件 ——shadow
shadow文件用于保存密码字串、密码有效期等信息,文件的保存位置位于/etc/shadow,在该文件中每一行对应一个用户的密码记录。
利用以下语句查看shadow的基本内容如下:
[root@localhost ~]# tail -2/etc/shadow
sabayon:!!:14495:0:99999:7:::
benet:$1$po/zD0XK$4HSh/Aeae/eJ6dNj1k7Oz1:14495:0:99999:7:3:2012-10-14:
字段1:用户帐号的名称
字段2:加密的密码字串信息
字段3:上次修改密码的时间
字段4:密码的最短有效天数,默认值为0
字段5:密码的最长有效天数,默认值为99999
字段6:提前多少天警告用户口令将过期,默认值为7
字段7:在密码过期之后多少天禁用此用户
字段8:帐号失效时间,默认值为空
字段9:保留字段(未使用)
默认只有root用户能够读取文件中的内容,并且不允许root直接编辑该文件中的内容,上次修改密码的时间,表示从1970年01月01日(可理解为Unix系统的诞生日)算起到最近一次修改密码时间隔的天数。
添加用户帐号
useradd命令
格式:useradd [选项]... 用户名
常用命令选项
-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名
-e:指定帐号失效时间
-g:指定用户的基本组名(或UID号)
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell
-r :系统用户
例:
创建名为st02的用户帐号,并将其UID号指定为504
[root@localhost ~]# useradd -u 504st02
[root@localhost ~]# tail -1/etc/passwd
st02:x:504:504::/home/st02:/bin/bash
创建一个考试测试用的帐号exam01,指定属于users组,该帐号于2009-07-30失效
[root@localhost ~]# useradd -gusers -e 2009-07-30 exam01
用户帐号的初始配置文件
文件来源
新建用户帐号时,从 /etc/skel 目录中复制而来
主要的用户初始配置文件
~/.bash_profile:用户每次登录时执行
~/.bashrc:每次进入新的Bash环境时执行
~/.bash_logout:用户每次退出登录时执行
充分理解这些文件的作用,便于我们安排一些自动运行的后台管理任务,例如:.bashrc文件中默认设置了一些命令别名,在后面学习完Shell脚本编写以后,将可以充分利用这些文件减轻系统管理员的负担,默认情况下,用户宿主目录下的初始配置文件只对当前用户有效,而全局配置文件对所有用户有效。
每个shell的启动,执行命令和程序的机制,如何处理命令和程序的输入输出,以及任何编程都受到某些环境变量设置的影响.每个系统都有一个初始的系统启动文件,通常是/etc/profile.这个文件包含了对shell和其他一些实用程序起作用的重要环境变量的初始设置.另外特定的shell还有一些隐藏的文件和点文件在你启动该shell的时候执行,这些文件也叫shell的启动文件,通常是一用户的主目录下的~/.profile,或者是一个特定shell的profile或login文件.例如bash的profile文件通常是~/.bash_profile与~/.bash_login。
当你登录并且登录Shell是Bash时,Bash首先执行/etc/profile文件中的命令(如果该文件存在),然后它顺序寻找~/.bash_profile,~/.bash_logi或~/.profile文件,并执行找到的第一个可读文件中的命令.当登录bash退出时,它将执行~/.bash_logout文件中的命令。
设置/更改用户口令
passwd命令
格式:passwd [选项]... 用户名
常用命令选项
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号
-S:查看用户帐号的状态(是否被锁定)
-u:解锁用户帐号
“未设置密码”的用户帐号尚未完成初始化,处于不可登录状态,这与“空密码”的情况(已经为用户设置密码,但密码字串为空)是不同的,“未设置密码”的用户将被禁止登录系统,而拥有“空密码”的用户是可以在本地终端登录的。普通用户也可以使用passwd命令,但只能更改自己的密码,密码要求有一定的复杂性(如不要直接使用英文单词,长度保持在6位以上),否则系统可能拒绝进行设置。被锁定的帐号也将无法登录系统。
修改用户帐号的属性
usermod命令
格式:usermod [选项]... 用户名
常用命令选项
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
以下选项与useradd命令中的含义相同
-u、-d、-e、-g、-G、-s
usermod有两个选项“-L”、“-U”,分别用于锁定、解锁用户帐号,这两个选项与passwd命令的“-l”、“-u”选项作用基本相同,只不过大小写存在区别。
删除用户帐号
userdel命令
格式:userdel [-r] 用户名
添加 -r 选项时,表示连用户的宿主目录一并删除
例:
[root@localhost ~]# useradd stu01
[root@localhost ~]# ls -ld/home/stu01/
drwx------ 2 stu01 stu01 409609-09 12:38 /home/stu01/
[root@localhost ~]# userdel -rstu01
[root@localhost ~]# ls -ld/home/stu01/
ls: /home/stu01/: 没有那个文件或目录
当系统中的某个用户帐号已经不再需要使用时(如该员工已经从公司离职等情况),可以使用userdel命令将该用户帐号删除。使用userdel命令需要指定帐号名称作为参数,添加“-r”选项时可以将该用户的宿主目录一并删除。