目录
一、与用户和用户组相关的文件
1、/etc/passwd
2、/etc/shadow
3、/etc/group
二、用户账号管理
1、增
2、改
3、删
三、用户组管理
0、初始用户组和有效用户组
1、增
2、改
3、删
Linux系统是一个多用户多任务的分时操作系统,因此我们可以在同一台主机上,创建多个用户。系统管理员通过用户账号,一方面可以跟踪用户和控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,提供安全性保护。在管理用户账户上,Linux也引用了用户组的概念,即对系统上的多用户进行分组管理。
当用户输入用户名和密码进行登录时,系统的工作流程:
/etc/passwd文件中每一行代表一个账号信息;而每一行又由分号(:)分成七列,来表示一个账户的七个信息
/etc/passwd文件中的部分内容:
第一列:账户名称。就是用来登录的用户名,它与第三列UID有一对一映射关系。比如root账户的uid是0.
第二列:密码。早期unix系统的用户密码就是放在这一列中的,但是由于该文件任何用户都有读取权限,因此,后来将密码移至另一个文件/etc/shadow里,而这一列则使用x来占位了。
第三列:UID(用户标识符)。0表示拥有最高权限的系统管理员的UID。而1-499则是预留给系统使用的uid。500以后,则是给普通用户分配的。(如果你想要某一用户拥有系统管理员的权限,其实可以直接将这一用户的uid修改为0,但是要慎重哦)
第四列:GID(有效用户组标识符)。用来维护与文件/etc/group中的某一组信息的映射关系。
第五列:注释说明。通常这一列用来解释这个账户的意义所在,不是非常重要的信息。
第六列:用户主目录。用户的主目录信息。因此,命令窗口登录后,都会直接进入该用户的主目录下。
第七列:Shell的bash位置。当用户登录后,就会取得该用户的shell脚本与内核进行通信了。而shell脚本引用的是哪个bash,就是由这一列来指定的
/etc/passwd权限为-rw-r--r--,除了用户主(root用户)外其他用户也能查看,所以将密码移至/etc/shadow文件内。/etc/shadow文件的权限为:-rw-------,并且加入了很多密码限制参数,只有root可以读写。
同样每一行对应一个账号的密码信息,同样使用分号(:)划成9列,来表示不同的密码信息。
第一列:账户名称。因为密码也要与账号名称一一对应,因此该账户要与/etc/passwd里的名称一致。
第二列:密码。这一列才是账号的密码,经过加密算法产生的一组特殊符号。查看加密算法可以使用以下命令:
# authconfig --test | grep hashing
第三列:最后一次更改密码的日期。单位是天,以距离1970年1月1日0时0分0秒这个纪元时间点的天数表示。
第四列:密码不可被更改的天数。0表示可以随时更改,如果是其他正整数n,则表示n天内不可再次修改。
第五列:密码过期的天数。表示下次修改密码最好是在过期前主动修改。99999(273年)则表示没有强制你修改密码的意思。
第六列:密码过期前的警告天数。7表示失效期的前七天就开始次次发送警告信息。
第七列:密码过期后的宽限天数。即在这个天数内,你依旧可以使用密码进行登录,但是登录后就强制你修改密码了。如果这个期限内你没有登录,那么你的密码就失效了,无法使用此密码登陆。(注意过期和失效不是一个意思)
第八列:账户失效日期。意义与第七列一样,表示方式则是与第三列一样,使用距离纪元时间点的天数来计数。通常用于"收费服务"中
第九列:保留字段
这个文件就是记录着组名与GID的一对一映射关系,以及用户组内的成员列表。权限为:-rw-r--r--。
第一列:用户组名。方便于人类使用的名称。与第三列的GID一一对应。
第二列:组密码。通常不需要设定,这个设定通常是给『群组管理员』使用的。同样的,密码也已移动到/etc/gshadow中,因此这一列只会存在一个x而已。
第三列:GID(用户组标识符)。文件/etc/passwd里的第四列就是与此GID进行对应关系的。
第四列:本组的附加用户列表。本组作为主组的用户不会再列表中显示。
用户账号的管理,大致分成用户账号的增删改
通过which命令可以查看useradd命令的路径
可以看到adduser命令文件是useradd命令文件的一个软链接,所以使用adduser命令实际上使用的是useradd命令。
添加用户账号其实就是系统管理员在Linux系统中创建一个新账号,为新账号分配用户名、用户组、主目录和登录Shell等资源。
我们可以使用useradd或adduser命令来添加账户
语法格式:useradd [选项] [用户名]
常用选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户ID号 指定用户的UID
当我们新增账号时,Linux系统会同时维护/etc/passwd,/etc/shadow,/etc/group等等文件的数据
例:
设定口令的命令为passwd,超级用户可以为自己和普通用户设定口令,普通用户只能修改自己的口令。
语法格式:passwd [选项] [用户名]
常用选项:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
超级用户为用户指定口令时,不需要校验原密码,而普通用户修改自己的口令时,会校验自己的原密码。
usermod命令可以用来修改用户账号的相关属性,如用户号、主目录、用户组、登录Shell等。常用的选项与useradd
命令中的选项一样,有-c, -d, -m, -g, -G, -s, -u等,用这些参数为用户指定新值。
语法格式与useradd相同:usermod [选项] [用户名]
另外,可以使用 -l 选项 来修改用户名(建议:如果修改用户名,最好也一起把主目录也一起修改了)。格式如下:
usermod -l newName -d /home/newName oldName
系统管理员可以将用户账户从系统中删除。在做删除操作时,/etc/passwd,/etc/shadow,/etc/group等相关系统文件中的该用户记录会同时删除,使用-r参数可以把原用户的宿主目录一并删除。
删除命令:userdel
语法格式:userdel [选项] [用户名]
常用的选项是 -r,它的作用是把用户的主目录一起删除。
Linux将系统内的多个用户规划到不同的用户组中,这样系统就可以通过管理用户组来统一管理多个用户了。默认情况下,系统在创建用户时,会同时创建一个与它同名的用户组,然后将此用户划分到这个用户组中。
用户组的单独管理,其实就是对/etc/group系统文件的管理,涉及到的操作可以是添删改
一个用户可以可以有多个组,这样就会涉及到两个概念:初始用户组和有效用户组。
初始用户组:该用户账户被创建时指定的用户组
有效组:当前所在组,创建文件时,文件所显示的用户组名。
通过groups命令可以查看用户所属组,同时排在第一个的组是该用户的有效组。切换有效组语法格式:newgrp [用户组名]
当切换有效组后,不影响用户在别组已创建完的文件的使用权限。不过,在重启后,用户默认切换会初始用户组工作。
语法格式如下:groupadd [选项] [用户组]
常用选项有:
-g 指定新用户组的组标识号(gid)。
-o 一般与-g选项同时使用,表示新用户组的gid可以与系统已有用户组的gid相同。
在系统中添加一个新组grp1,新组的gid是在当前已有的最大组标识号的基础上自动+1,当使用了-o选项:
语法格式:groupmod [选项] [用户组]
常用的选项有:
-g 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新gid可以与系统已有用户组的gid相同。
-n 将用户组的名字改为新名字
用于从系统中删除一个用户组
语法格式:groupdel [用户组]