必须学会的账号和权限管理

1,950 阅读11分钟

1.用户账号和组账号的概述

Linux中每个用户总共有三类:超级用户,普通用户和程序用户,他们都是是通过 User Id (UID)来唯一标识的 新建用户 1-60000 自动分配 0-65535 端口号

  1. 管理员:root,0
  2. 普通用户:500+ (CentOS6以前), 1000+(CentOS7以后) 不指定 顺序给用户进行交互登录使用
  3. 程序用户:1-499 (CentOS 6以前), 1-999 (CentOS 7以后) 不登录的用户 系统默认的情况

/etc/passwd 里存放着用户名称、宿主目录、登录shell等信息

/etc/shadow 内存放着用户密码,不过都是进行加密过的

1.1用户账号

1.1.1超级用户

超级用户:root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有至高 无上的权限,类似于 Windows 操作系统中的 Administrator 用户。只有当进行系统 管理、维护任务时,才建议使用 root 用户登录系统,日常事务处理建议只使用普通用户账号。

1.1.2普通用户

普通用户:账号需要由 root 用户或其他管理员用户创建,拥有的权限受 到一定限制,处理问题受到限制,一般只在用户自己的宿主目录中拥有完整权限。

1.1.3程序账号

程序用户:在安装 Linux 操作系统及部分应用程序时,会添加一些特定的低权限用 户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运 行。

1.2组账号

linux中组账号分为基本组和附加组,他们都是用GID来进行识别,linux中的组就是将多个用户集合起来,统一分配某种相同的权限(开通或关闭)。

1.2.1基本组(私有组)

  • 建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组默认只容纳了一个用户。
  • 在用户所属组中的第一个组称为基本组,基本组在 /etc/passwd 文件中指定

基本组:有且唯一

附加组:可有可无,可以有多个

默认新建用户时自动添加同名的组

1.2.2附加组(公共组)

除了第一个组外的其他组为附加组或公共组,附加组在/etc/group文件中指定

image.png

1.3 ID

1.3.1 UID

UID(User IDentity,用户标识号):Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(UserIDentity,用户标识号),对于操作系统核心来说,UID 是区分用户的基本依据,原则上每个用户的 UID 号应该是唯一的。root 用户账号的 UID 号为固定值 0,而程序用户账号的 UID号默认为1~499,500~60000 的 UID 号默认分配给普通用户使用。

1-999预留给系统,叫系统用户,给人使用的账号是从1000开始的

image.png

1.3.2 GID

GID(Group IDentify,组标识号):与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为 1~499,500~60000 的 GID 号默认分配给普通组使用。

想查看组文件时可以去 cat /etc/gruop下查看

1.4 用户账号管理

1.4.1文件位置

/etc/passwd

存放保存用户名称、宿主目录、登录 Shell 等基本信息

[root@test1 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
省略多行
root   用户名称

:x     密码占位符   

:0     uid

:0     gid

:root  备注信息,描述

:/root  家目录路径

:/bin/bash shell环境

/etc/shadow 存放保存密码

[root@localhost ~]#cat /etc/shadow |tail -3
liqi:!!:19559:0:99999:7:::
test:!!:19559:0:99999:7:::
lzqq:$6$gDUC3.lc3m.JiOpD$q9NbZODJ0phlH7Df4pcSsChW.zpq2PP5tew8VFSr8PlHl0aKDLcMnMYXfYDOQdl0FAFBZEsiJQBc7pvQhF9J.1::0:99999:7:::

第一个:用户名
第二个;密码 加密过的
第三个:19559 最后一次修改密码的时间
第四个0:修改密码最小天数0不限制
第五9999:密码有效期
第六7:提前7天提醒
第七:宽限天数
第八:失效时间 永久
第九:保留

注意:当文件内容密码位为*、!!时表示用户不能登录到此系统,若该字段为空,则表示无密码即可登录。

1.4.2 添加用户

useradd 【选项】 用户名

添加用户:查看是否在 passwd和shadow文件中生成信息

  • 在/etc/passwd 文件和/etc/shadow 文件的末尾增加该用户账号的记录
  • 若未明确指定用户的宿主目录,则在/home 目录下自动创建与该用户账号同名的宿 主目录,并在该目录中建立用户的各种初始配置文件。
  • 若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账 号的记录信息将保存到/etc/group 和/etc/shadow 文件中。

选项

  • -u:指定用户的 UID 号,要求该 UID 号码未被其他用户使用。
  • -d:指定用户的宿主目录位置(当与-M 一起使用时,不生效)。
  • -e:指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
  • -g:指定用户的基本组名(或使用 GID 号)。
  • -G:指定用户的附加组名(或使用 GID 号)。
  • -M:不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录。
  • -s:指定用户的登录 Shell /sbin/nologin

image.png

1.4.3 密码管理

passwd [选项]... 用户名

为用户账号设置密码

[root@test1 /]# passwd lisi    修改lisi 用户密码输入两次密码
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

选项:

  • -d:清空指定用户的密码,仅使用用户名即可登录系统。
  • -l:锁定用户账户。
  • -S:查看用户账户的状态(是否被锁定)。
  • -u:解锁用户账户。

注意大小写

[root@test1 /]# passwd -l lisi
[root@test1 /]# tail -1 /etc/shadow
lisi:!!:18809:0:99999:7:::
[root@test1 /]# passwd -d lisi
清除用户的密码 lisi。
passwd: 操作成功
[root@test1 /]# passwd -S lisi
lisi NP 2021-07-01 0 99999 7 -1 (密码为空。)
[root@test1 /]# passwd -u lisi
解锁用户 lisi 的密码。
passwd: 警告:未锁定的密码将是空的。
passwd: 不安全的操作(使用 -f 参数强制进行该操作)
[root@test1 /]# passwd -fu lisi
解锁用户 lisi 的密码。
passwd: 操作成功
[root@test1 dnf]# echo "123123"|passwd --stdin lisi  
#免于交互
更改用户 lisi 的密码 。
passwd:所有的身份验证令牌已经成功更新。

1.4.4 修改用户账号属性

usermod [选项]... 用户名

选项

  • -l 更改用户账号的登录名称(Login Name)
  • -L 锁定用户账户
  • -u 修改用户的 UID 号
  • -U 解锁锁用户账户
  • -d:修改用户的宿主目录位置。
  • -e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
  • -g:修改用户的基本组名(或使用 GID 号)
  • -G:修改用户的附加组名(或使用 GID 号)
  • -s:指定用户的登录 Shell

跟useradd选项差不多,不过这个是对已有用户进行属性修改 passwd -S 用户名 查看用户状态

1.4.5 删除用户

userdel [选项] 用户

-r 将宿主目录一起删除

[root@test1 etc]# id zhou1            //验证
id: zhou1: no such user
[root@test1 etc]# cd /home/
[root@test1 home]# ls
lisi  zhangsan

1.4.6 用户账号的初始配置文件

/ .bash_profile #此文件中的命令将在该用户每次登录时被执行,他会设置一些环境变量,并且会调用该用户的/.bashrc文件

~/.bashrc

#此文件中的命令将在该用户每次打开新的bash shell时(包括登录系统)被执行(登录 切换 新的bash环境)

~/.bash_logout

#此文件中的命令将在该用户每次退出时bash shell时使用

1.5 组管理

1.5.1组账号文件

与用户帐号文件相类似

  1. /etc/group:保存组帐号基本信息
  2. /etc/gshadow:保存组帐号的密码信息基本不使用

image.png

1.5.2 添加组

groupadd [选项] 组账号名

-g指定组id

[root@test1 /]# groupadd zhou           //添加组账号
[root@test1 /]# tail -1 /etc/group
zhou:x:1002:
[root@test1 /]# groupadd -g 88 zhou    //-g指定组id
[root@test1 /]# tail -1 /etc/group
zhou:x:88:

1.5.3 组内管理

gpasswd命令---添加、设置、删除组成员

选项

  • -a:向组内添加一个用户
  • -d:从组内删除一个用户成员
  • -M:定义组成员列表,以逗号分隔

image.png

1.5.4 删除组账号

group 组账号名

[root@test1 /]# groupdel zhou
[root@test1 /]#

2.文件/目录权限和归属

程序访问文件时的权限,取决于此程序的发起者

  • 进程的发起者,同文 件的属主:则应用文件属主权限
  • 进程的发起者,属于文件属组;则应用文件属组权限
  • 应用文件“其它”权限

访问人群分为了三类

  1. 所属主(u)
  2. 所属组(g)
  3. 其他人 (o)
  4. 全部类别(a)

权限分为三种

  1. 读(r,4)
  2. 写(w,2)
  3. 执行(x,1程序,脚本)

对文件的权限

  1. r 可使用文件查看类工具,比如:cat,可以获取其内容
  2. w 可修改其内容
  3. x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)

一个文件是否可以被删除和本身没有关系,和所在文件夹有关

对目录的权限

  1. r 可以使用ls查看此目录中文件列表
  2. w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
  3. x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限

执行权限是文件夹的最小权限,如果没有x,文件夹r,w用不了

2.1chmod

数字法 r w x:对应的数字为4 2 1、 chmod 数字(权限大小) 文件或文件夹

image.png

2.2chown

用来修改属主、属组

chown 用户名'.'或者':'组名 文件名

-R递归修改

[root@localhost aa]#chown -R zhangsan:zhangsan /opt/aa/
#递归修改
[root@localhost aa]#ll
总用量 0
-rw-r--r--. 1 zhangsan zhangsan 0 9月  17 21:53 1
-rw-r--r--. 1 zhangsan zhangsan 0 9月  17 21:53 10
-rw-r--r--. 1 zhangsan zhangsan 0 9月  17 21:53 2
-rw-r--r--. 1 zhangsan zhangsan 0 9月  17 21:53 3
-rw-r--r--. 1 zhangsan zhangsan 0 9月  17 21:53 4
-rw-r--r--. 1 zhangsan zhangsan 0 9月  17 21:53 5
-rw-r--r--. 1 zhangsan zhangsan 0 9月  17 21:53 6
-rw-r--r--. 1 zhangsan zhangsan 0 9月  17 21:53 7
-rw-r--r--. 1 zhangsan zhangsan 0 9月  17 21:53 8
-rw-r--r--. 1 zhangsan zhangsan 0 9月  17 21:53 9

##注意
[root@localhost aa]#chown zhangsan:zhangsan /
#此命令效果不亚于删除根目录

2.3umask

umask 的值可以用来保留在创建文件权限

实现方式:

新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变

新建目录的默认权限: 777-umask

非特权用户umask默认是 002

root的umask 默认是 022

2.4三种特殊权限

2.4.1suid 属主

[root@localhost aa]#ll /usr/bin/passwd 
#此处s表示当使用这个命令程序时,把当前用户当成文件的所属主
-rwsr-xr-x. 1 root root 27832 610 2014 /usr/bin/passwd
[root@localhost aa]#which vim
/usr/bin/vim
[root@localhost aa]#chmod u+s /usr/bin/vim
#给vim加上suid权限,代表所有用户可以使用vim打开并编辑所有文件
[root@localhost aa]#ll /usr/bin/vim
-rwsr-xr-x. 1 root root 2289640 82 2017 /usr/bin/vim

2.4.2 SGID 属组

同上理,给属组上加上s权限所有同组类别都可以使用

[root@localhost aa]#chmod g+s /usr/bin/vim
[root@localhost aa]#ll /usr/bin/vim
-rwxr-sr-x. 1 root root 2289640 82 2017 /usr/bin/vim

2.4.3 Sticky位

只对文件夹有效,对文件无效,

chmod o+t /文件夹

chmod o-t /文件夹 减少sticky位 只有文件的所有者或root可以删除该文件

image.png