linux用户和用户组管理

223 阅读3分钟

前言

每个用户在登陆的时候都会认证 不同用户具有不问的权限,毎个用户在权限允许的范围内完成不间的任务,Linux 正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。 验证用户的身份与可使用的网络服务被称为3A认证

账户的种类:

  • 如超级管理员:
  • 如何按要求添加用户(组)
  • 如何改密码
  • 如何对已有用户(组)修改基本信息
  • 用户权限

用户的种类:

  1. 超级管理员: 拥有最高权限的账户(默认叫做root)可以正常登录   人可以使用
  2. 普通用户:    权限受限的用户    可以正常登录  人可以使用
  3. 程序用户:    不可以正常登录,只给程序使用,人不能用

w命令看到当前登录的用户

[root@localhost data]#w

Snipaste_2022-07-31_14-51-01.png

14:49:56 up5:05 2usersload average:0.00, 0.01, 0.05
启动时间当前有两个用户登录cpu使用情况
USERTTYFROMLOGIN@IDLE JCPU PCPUWHAT
用户登录方式从哪里登录登录时间进程当前运行的进程
rootpst/0192.1687.213.109:372:29m 0.13s 0.13s-bash

组的种类

  • 基本组: 一个用户一定要有一个基本组 ,且只有一个
  • 附加组: 一个用户可以没有附加组,一个用户可以有多个附加组

如何区分基本组和附加组?

Snipaste_2022-07-31_15-13-49.png 用户排在第一个的组是基本组,后面的都是附加组  

  • uid :系统用来识别用户的唯一身份标识 整数(0-60000)
  • gid: 系统用来识别组的唯一身份标识 整数
  • 超级用户:(root), uid,gid=0,超级用户是系统管理员,具备系统最高权限
  • 程序用户 :每个程序在创建时会自动创建一个程序用户,uid, gid =1-999,一般这个用户只在维护这个程序时才会被使用,一般也是不允许此用户使用账户密码登录到系统中去。
  • 普通用户 :(系统账户,命令创建) uid,gid =1000+

修改uid 的范围(补充) [root@localhost data]#vim /etc/login.defs

存放位置

  • 存放用户信息

Snipaste_2022-07-31_15-41-05.png

/etc/passwd                 存放用户信息

root:(账号名称):x(:账号密码):0(:账号UID):0(:账号GID):root(:用户说明):/root(:用户家目录):/bin/bash(:shell解析)

每个字段用冒号隔开

ky22:x:1003:1003:nginx:/home/ky22:/sbin/nologin

ky22x10031003nginx/home/ky22/sbin/nologin
用户名密码占位符uid组id备注信息家目录位置默认shell程序
  • 存放密码信息

/etc/shadow                    存放密码信息

Snipaste_2022-07-31_15-40-56.png 每个字段用冒号隔开 gxl:663/O6NuAjdnApLp2F.V1n.::0:99999:7:::

第一字段第二字段第三字段第四字段第五字段第六字段第七字段第八字段第九字段
gxl$6~1n0999997
用户名加密后的密码上一次修改密码时间最小修改密码间隔时间密码有效期密码到期提醒时间密码过期后的宽限天数用户失效时间保留字段

gxl:663/O6NuAjdnApLp2F.V1n.::0:99999:7:::

  • 第一字段:用户名
  • 第二字段:加密后的密码  如果为  *     !!   无法登录
  • 第三字段:上一次修改密码时间,数字的含义为 从1970-1-1 到改密码的时间 一共经历多少天
  • 第四字段:最小修改密码间隔时间   如果是0 可以随意修改,   7代表7 天后才可以修改
  • 第五字段: 密码有效期  默认99999天 273年,设置为 7  代表7天要求你重新设置密码
  • 第六字段:密码到期提醒时间      设置为7  代表密码到期前7天会提示你
  • 第七字段:密码过期后的宽限天数     设置为10   表示密码到期后还可以使用10天
  • 第八字段:用户失效时间  同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间    到期后无法登录
  • 第九字段:保留字段            

添加用户

useradd    添加用户

通式:   useradd    [选项]....    用户名

当建立用户时不加选项

Snipaste_2022-07-31_16-09-06.png

  1. 会按顺序使用uid号    
  2. 会建立一个 和用户名同名的基本组
  3. 按顺序使用gid
  4. 会在/home 建立一个和用户名同名的家目录
  5. 会将用户信息保存在 /etc/passwd  文件中 

建立用户的时候加选项含义

  • -u  指定uid
  • -g  指定基本组(组名和gid都可以)
  • -G  指定附加组(组名和gid都可以)
  • -d  指定家目录
  • -M 不建立家目录
  • -s  指定默认登录shel
  • -e  指定用户失效时间    可使用 YYYY-MM-DD 的日期格式。
  • -r   建立系统用户

Snipaste_2022-07-31_16-39-37.png

Snipaste_2022-07-31_16-37-17.png

修改密码 

passwd 修改密码

passwd 用户

Snipaste_2022-07-31_16-59-27.png

passwd  [选项]    用户名

  • -l    锁定用户 不让登录
  • -u   解锁
  • -d   清空密码   无需使用密码直接登录
  • -S(大写) 查看锁定状态   

Snipaste_2022-07-31_17-01-31.png

usermod  修改已有用户的属性

  • -l(小写L)    修改用户登录名
  • -L (大写)    锁定用户
  • -U (大写)     解锁用户    
  • -u(小写)  指定uid
  • -g  指定基本组(组名和gid都可以)
  • -G  指定附加组(组名和gid都可以)
  • -d  指定家目录
  • -M 不建立家目录
  • -s  指定默认登录shel
  • -e  指定用户失效时间    可使用 YYYY-MM-DD 的日期格式。

Snipaste_2022-07-31_17-12-57.png

删除用户    

删除用户 userdel

-r    连家目录一起删除

Snipaste_2022-07-31_17-14-59.png

drwx------
文件的主人文件所属的组其他人
属主属组

注意:

文件夹的最小权限 是 x   一定要带上否则无法 进行任何操作,超级管理员不受影响

删除一个文件和所在文件夹权限有关和自身没关系。注意超级管理员  

修改文件或目录权限

Linux 系统中,文件的基本权限由 9 个字符组成,以 rwxrw-r-x 为例,我们可以使用数字来代表各个权限,各个权限与数字的对应关系如下:r --> 4\w --> 2\x --> 1

由于这 9 个字符分属 3 类用户,因此每种用户身份包含 3 个权限(r、w、x),通过将 3 个权限对应的数字累加,最终得到的值即可作为每种用户所具有的权限。

拿 rwxrw-r-x 来说,所有者、所属组和其他人分别对应的权限值为:

所有者 = rwx = 4+2+1 = 7
所属组 = rw- = 4+2 = 6
其他人 = r-x = 4+1 = 5

所以,此权限对应的权限值就是 765。

chmod

chmod 修改权限

chmod -R 权限值 文件名

Snipaste_2022-08-02_20-47-26.png

chown

chown 修改文件属主属组

chown -R 所有者:所属组 文件或目录 (注意修改所属组主和所属组时要用“:”隔开)

Snipaste_2022-08-02_20-52-09.png

Snipaste_2022-08-02_20-58-47.png

可以看到,原本表示文件所有者权限中的 x 权限位,却出现了 s 权限,此种权限通常称为 SetUID,简称 SUID 特殊权限。 SUID 特殊权限仅适用于可执行文件,所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失。

[root@localhost ~]# chmod u-s /usr/bin/passwd
#属主取消SetUID权限
[root@localhost ~]# ll /usr/bin/passwd
-rwxr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd
[root@localhost ~]# su gxl
[lamp@localhost ~]$ passwd
Changing password for user gxl.
Changing password for user.
(current) UNIX password:
#看起来没有什么问题
New passwor:
Retype new password:
password:Authentication token manipulation error  <--鉴定令牌操作错误
#最后密码没有生效

虽然用户有执行 passwd 命令的权限,但无修改 /etc/shadow 文件的权限,因此最终密码修改失败。

SUID 特殊权限具有如下特点:

  • 只有可执行文件才能设定 SetUID 权限,对目录设定 SUID,是无效的。
  • 用户要对该文件拥有 x(执行)权限。
  • 用户在执行该文件时,会以文件所有者的身份执行。
  • SetUID 权限只在文件执行过程中有效,一旦执行完毕,身份的切换也随之消失。

Sticky 位

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权 在目录设置Sticky 位,只有文件的所有者或root可以删除该文件 sticky 设置在文件上无意义

Sticky权限设定:

  • chmod o+t DIR...
  • chmod o-t DIR..

[root@localhost aa]#chmod o+t /opt/aa (添加Sticky 位)

[root@localhost opt]#chmod o-t /opt/aa (减少Sticky 位)

总结:学会创建多个用户并修改权限