-
用户和组的相关概念
账号:是一种用来记录单个用户或是多个用户的数据。在Linux 上的账号可以分成两类:
用户账号 用来储存单一用户的数据,你可以使用一个用户账号,来储存某一个用户的数据。群组账号 用来储存多个用户的信息,每一个群组账号可以用来记录一组用户的数据。
依照账号的位置
本机账号: 储存于本机硬盘中的账号数据,我们称为本机账号。本机账号使用范围局限在账号建立的 Linux 系统上,如果超出范围时,本机账号将无法使用。比如你在自己电脑上登录用的账号和密码,正常是无法在其它的电脑上使用的。
本机账号的优点是简单易用,你无须作额外的设置,就可以直接建立本机账号;但缺点则是无法具备延展性(Scalability)。比如你在一个拥有很多主机的环境中,想拥有一个在每台主机都可以登录的账号时,你就需要在所有的主机上都建立相关的用户
网域账号: 你也可以把大量的计算机组织成为一个网域,然后在网域中的某一台 Linux 上建立账号数据,并且通过某些通信协议,将账号数据分享出来。当其他计算机需要取得账号数据时,再通过网络调用这些分享的账号即可。这种账号我们称为网域账号 (Domain Account)。
网域账号的优点在于具备延展性。在大规模的环境中,使用网域账号往往能节省管理账号的时间;但网域账号也有缺点,其最大的缺点就是要配置网域账号前,你必须先建立“域”的环境才行。
依照账号的功能
用户账号部分:包含了超级用户、普通用户;而普通用户中还可细分为系统用户、真实用户两种。
群组账号部分:包含了超级用户群组、系统群组以及用户自定义组三大类。
-
用户账号管理
- 本机的用户账号数据储存于/etc/passwd文件中。与其他的配置文件一样,passwd 也是一个文本文件,因此,你可以直接使用文字处理程序,例如 cat 或 less 浏览其中的内容。
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
/etc/passwd 权限必须是0644,每一行代表一个用户的账号数据,每一行又使用冒号(:)分隔为几个部分
USERNAME:PASSWORD:UID:GID:COMMENT:HOMEDIR:SHELL
USERNAME: 用户识别名称,也是登录的名称
PASSWORD: 密码位,用于存储用户的密码,为了安全起见,密码放在另一个文件中,这里统一用x
UID: 用户识别号,0表示为管理员,非0为普通用户
GID: 组识别号,用来识别用户组的身份,同样0为管理员组,非0为系统群组或者自定义组
COMMENT: 描述信息
HOMEDIR: 家目录位置
SHELL: shell类型
这个文件我们就介绍完了,现在我们来看下用户管理的相关命令
useradd
-u UID 用来指定账号的 UID,如果省略这个参数,useradd会自动以最后一个可用的 UID 作为新账号的 UID。 如果你指定的 UID 已经使用过,useradd 将会显示错误信息,此时你可以配合 -o 参数,告诉 useradd 允许重复的 UID。
-g GROUP 定义用户的主要群组。使用 -g 参数前,GROUP 必须已经存在。
-d HOME 指定用户的主目录。默认的主目录是建立在 /home/ 目录下,而且目录名称与用户名称相同。
-s SHELL 指定用户登录执行的程序。
-c COMMENT 指定用户的批注说明。如果批注文字包含空白,请记得使用双引号 (") 包起来。
-r 这个参数用来指出建立一个系统用户的账号。
这些参数大多数可以同时使用,可以根据自己的需求指定,如:
useradd -u 1500 -g hello -d /home/hello -s /bin/bash -c "this is a test user" hello- usermod 是用来修改用户相关信息的,和useradd使用的参数很多是相同的,用法也是一样的,除此之外usermod命令还有一些额外的参数
-l NEWNAME 修改账号的用户名称,NEWNAME 即是新的账号名称。
-L 锁定账号,一经锁定的账号将无法用来登录系统。
-U 解除锁定。
userdel 删除用户,有一个常用参数-r,含义是删除用户的相关数据,包括家目录,邮箱。
id
[root@manage01 ~]# id hello
uid=1000(hello) gid=1000(hello) 组=1000(hello)
[root@manage01 ~]# id -u hello
1000
whoami
[root@manage01 ~]# whoami
root
- 本机的用户账号数据储存于/etc/passwd文件中。与其他的配置文件一样,passwd 也是一个文本文件,因此,你可以直接使用文字处理程序,例如 cat 或 less 浏览其中的内容。
-
组账号管理
本机的群组账号数据被储存在 /etc/group 文件中,权限也必须为0644,与 /etc/passwd 一样,这也是一个文本文件。root:x:0: bin:x:1: daemon:x:2:
这与/etc/passwd文件的格式类似
GROUPNAME:PASSWORD:GID:MEMBERS
GROUPNAME: 组名
PASSWORD: 组密码,这里也和passwd文件一样是个x
GID: 群组识别号
MEMBERS: 组成员
groupadd 建立组
-g GID 指定群组账号的标识符
-r 指定添加的群组成为系统群组
-f 强制执行。 在一般的情况下,groupadd 不允许建立一个与使用过的 GID 相同的群组账号,而使用这个参数时,groupadd 将会建立相同 GID 的 群组账号。
groupmod 修改群组信息
-g GID 修改群组账号的标识符。GID 就是新的标识符。
-n NEWNAME 用来修改群组的名称。NEWNAME 就是新的组名。groupdel 删除群组账号
-
密码管理
passwd 修改用户密码
-d 删除用户密码,亦即把文件中的密码字段清空。
-l 这个参数用来锁定账号,账号一经锁定,用户再怎样输入密码,都会被判断为错误。这个参数只能由 root 使用,普通用户无法用来锁定自己的账号。
gpasswd 修改组密码
-r 用来删除群组的密码。
-R 锁定 GROUP 的群组密码。
群组管理员
群组管理员可以
指派群组管理员,如果有多个管理员用“,”分隔,如果想删除群组管理员,保持位置为空
gpasswd -A USER GROUP
gpasswd -A hello test#将test组的管理员设置为hello
gpasswd -A '' test #删除test组的管理员
加入与删除群组成员
gpasswd -a USER GROUP
gpasswd -d USER GROUP
管理密码的有效期限
最近一次密码修改时间 :从不
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
chage
-m 设置密码修改的最小天数
-M 设置密码修改的最大天数
-d 设置密码最后修改日期
-I 设置密码过期后,锁定账号的天数
-E 设置账号过期日期,0=立即过期,-1=永不过期
-W 设置密码过期前的警告天数
-l 查看指定用户的相关信息
-h 帮助