Linux用户管理:用户与用户组

用户与组的基本概念

用户与组信息存储的文件

passwd文件

  1. 用户基本信息文件
    /etx/passwd(六个冒号分割成七列字段)
    Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。这个文件对所有用户都是可读的。

    字段: 用户名 : X : UID : GID : 注释性描述 : 主目录 : 登录Shell

    1. 用户名:用户自己创建的名字,不能重名。通常长度不超过8个字符,并且由大小写字母和/或数字组成(不建议使用数字)。

    2. X:密码占位符,具体的内容不在此处。这个字段存放的只是用户口令的加密串,不是明文

    3. UID:通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~499系统用户(机器使用的账号) ,作为管理账号。1000+ 为普通用户(人使用的账号),系统内部用它来标识用户

    4. GID:组号,将用户分为一组一组,每一个组都有自己的组号,记录的是用户所属的用户组

    5. 注释性描述:在这个字段里可增加对账号的描述

    6. 主目录:它是用户在登录到系统之后所处的目录。各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名,也就是用户的起始工作目录。例:root用户登录后在 根下的root文件夹

    7. Shell(壳):用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。功能是命令解释器,用来定义、接收、执行命令 。当前计算机使用的壳为bash,每个用户登录后都应该有一个解释器 将bash修改为nologin 可禁用该用户,使其不能登录。

shadow文件

  1. 用户密码信息文件:/etc/shadow(八个冒号分割为九列字段)
    由于/etc/passwd文件是所有用户都可读的,密码容易破解。因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中。有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

    登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

    1. 登录名”:是与/etc/passwd文件中的登录名相一致的用户账号

    2. 口令”:字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
      星号代表账号被锁定、双感叹号表示这个密码已经过期了。
      加密类型 看\ $中间字段$ 例:$1$MYG2NDG6$a1wtyr5GDM2esAPjug0YP0
      $6$:表示使用SHA-521加密的、
      $1$:表示是用MD5加密的、
      $2$:表示使用Blowfish加密的
      $5$:使用SHA-256加密的

    3. 最后一次修改时间”:表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。

    4. 最小时间间隔”:指的是两次修改口令之间所需的最小天数。

    5. 最大时间间隔”:指的是口令保持有效的最大天数。

    6. 警告时间”:字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。

    7. 不活动时间”:表示的是用户没有登录活动但账号仍能保持有效的最大天数。

    8. 失效时间”:字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

    9. 标志”:保留,这个字段没有功能

group文件

  1. 组信息文件:/etc/group(三个冒号四个字段)
    将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。
    每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。
    当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

    组名:组密码:ID:组成员

    1. 组名”:是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。

    2. 组密码”:字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。

    3. ID”:与用户标识号类似,也是一个整数,被系统内部用来标识组。

    4. 组内用户列表”:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

用户与组的管理

用户

创建用户

语法:useradd 选项 用户名

参数说明:
-c comment 指定一段注释性描述。
.
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
.
-g 用户组 指定用户所属的用户组。
.
-G 用户组,用户组 指定用户所属的附加组。
.
-s Shell文件 指定用户的登录Shell。
.
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

  • 未指定选项:
# useradd user01
创建一个用户名与登录名为user01的账号
  • 指定选项:
# useradd sam  –d  /home/sam -m
此命令创建了一个用户sam,
其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam(/home为默认的用户主目录所在的父目录)。

# useradd gem -s /bin/sh -g group –G adm,root
此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,
它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。

# useradd 用户名 -d 目录	 例:useradd user03 -d /user03  
创建目录并指定他的家目录为user03目录

# useradd user02 -u 503 	创建用户 usr02,指定 uid
# useradd user03 -d /aaa 	创建用户 user03 指定家目录
# useradd user05 -s /sbin/nologin 	创建用户并指定 shell
# useradd user07 -G hr,it,fd 		创建用户,指定附加组

如果创建一个用户时,未指定任何组(主组或附加组),系统会创建一个和用户名相同的组作为用户的
Primary Group(基本组).

删除用户

语法:userdel 选项 用户名

常用的选项是 -r,它的作用是把用户的主目录一起删除。

userdel -r sam

此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

# userdel user10 
删除用户 user10,但不删除用户家目录和 mail spool

# userdel -r user2 
删除用户 user2,同时删除用户家目录和 mail spool

修改密码

选项:

-l 锁定口令,即禁用账号。
.
-u 口令解锁。
.
-d 使账号无口令。
.
-f 强迫用户下次登录时修改口令。

  • 超级用户

语法:passwd 用户名 (不填写用户名修改的则是当前用户密码)

root用户可以直接修改任何用户修改密码

# passwd alice 
root 可以给任何用户设置密码
  • 普通用户

语法:passwd

普通用户登录后在终端中修改用户密码

$ passwd 
普通用户只能给自己修改密码,而且必须提供原密码
  • 添加选项:
# passwd -d 用户
此命令将用户 sam 的口令删除,这样用户 sam 下一次登录时,系统就不再允许该用户登录了。

# passwd -l 用户
锁定某一用户,使其不能登录

修改用户

语法:usermod 选项 用户

-u|g|G: 修改UID|GID|附加组(直接覆盖之前的附加组)
.
-a -G: 加附加组,不覆盖之前的附加组
.
-c:修改注释信息
.
-d:为用户指定新家目录(原来的家目录无法再访问)
.
-d -m:指定家目录,又移动此前家目录的文件至新的家目录内
.
-s:修改shell
.
-l:修改用户名
.
-L:锁定用户账号
.
-U:解锁用户账号

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
例:

# usermod -s /bin/ksh -d /home/z –g developer sam
将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。

将登录Shell修改为/sbin/nologin(标准),原则上修改任何路径都可使用户被禁

# usermod niuniu2 -G hr 
# usermod -G niuniu2 fd,it
覆盖原有的附加组

# usermod niuniu2 -aG hr
增加新的附加组

用户组

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
用户组在创建用户时同时创建。

添加组

语法:groupadd 选项 组名

选项:

-g GID 指定新用户组的组标识号(GID)。
.
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

例:

# groupadd wen
此命令向系统中增加了一个新组wen,新组的组标识号是在当前已有的最大组标识号(GID)的基础上加1# groupadd wen2 -g 1777
此命令向系统中增加了一个新组wen2,同时指定新组的组标识号(GID)1777

删除组

语法:groupdel 组名

例:

# groupdel wen
从系统中删除组wen

修改组

语法:groupmod 选项 组名

选项:

-g GID 为用户组指定新的组标识号。
.
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
.
-n新用户组 将用户组的名字改为新名字

# groupmod wen -g 1777
将组wen的组标识号修改为1777

# groupmod wen -n wen3
组名修改为wen3

基本组与附加组

基本组:随用户创建而创建的组,组名同用户名

附加组:将用户1加入到用户2的基本组,那么用户1会得到两个不同类型的组,用户2的组对于用户1来说就是附加组 ,一个用户可以是同属于多个组的

不管是基本与附加 都是相对于用户来说的,加入组的都是用户

基本组只有一个,附加组可以有多个

提权

  1. Switching users with su(永久提权)
    语法:su - root
    普通用户登录后可在终端中登录root获取永久权限
    普通用户执行超级用户的权限,使用完后使用 exit退出

例:

$ useradd u1
-bash: /usr/sbin/useradd: 权限不够
$ su - root
password:
# useradd u
  1. Running commands as root with sudo(临时提权)

    将用户放入wheel组里,可使用部分超管权限。
    可以查看/etc/sudoers了解相关内容。
    将用户放入wheel组后登录,需要使用超管权限。
    语法:sudo 命令
    例:

# useradd yangyang -G wheel
# id yangyang
uid=504(yangyang) gid=504(yangyang)=504(yangyang),10(wheel)

$ useradd gougou10
-bash: /usr/sbin/useradd: 权限不够
$ sudo useradd gougou10
$ id gougou10
uid=505(gougou10) gid=505(gougou10)=505(gougou10)

其他

no Shell

/sbin/nologin 用户无法登录系统,实现管理。仅作为运行进程的用户,访问 FTP 的用户。
/bin/bash 登录系统,实现管理,shell 是用户登录后运行的第一个程序。

命令

id:查看用户ID信息
grep :查找文件 语法:grep 关键字 路径(在哪找) ,会找出含有关键字的文件

参考文章:菜鸟教程