账号和权限管理

126 阅读7分钟

一.用户帐号类型

用户分为三种类型,分别是超级用户、普通用户、程序用户。

超级用户:root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有至高 无上的权限,类似于 Windows 操作系统中的 Administrator 用户(uid和gid均为0)。

普通用户:账号需要由 root 用户或其他管理员用户创建,拥有的权限受 到一定限制,处理问题受到限制,一般只在用户自己的宿主目录中拥有完整权限。(500+ (CentOS6以前), 1000+(CentOS7以后) 不指定 顺序)。

程序用户:在安装 Linux 操作系统及部分应用程序时,会添加一些特定的低权限用 户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运 行,如 bin、daemon、ftp、mail 等,以后实验中会经常遇到,先了解下即可(1-499 (CentOS 6以前), 1-999 (CentOS 7以后) 不登录的用户 系统默认的情况对守护进程获取资源进行权限分配)。

二.用户组介绍

用户组分为基本组(私有组)和附加组(公共组)

1.基本组:有且唯一。

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

2.附加组:有很多个,可有可无。

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

微信截图_20230724192357.png

三.用户账号管理

1.文件位置:

/etc/passwd

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

微信截图_20230724192936.png

  • root 用户名称

  • :x 密码占位符

  • :0 uid

  • :0 gid

  • :root 备注信息,描述

  • :/root 家目录路径

  • :/bin/bash shell环境

2./etc/shadow 存放保存密码

用途:存储用户的密码信息,又称为“影子文件” 。/etc/shadow 文件只有 root 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性。

文件位置:/etc/shadow。

每行说明:每一行对应一个用户的密码信息。

查看文件内容:

微信截图_20230725182521.png

/etc/shadow文件也是以冒号(:)作为分隔符,将每行分成了9段,每个字段的含义如下:

  • 字段1:用户名。

  • 字段2:密码加密值。当此字段为*或!!时,表示用户不能登录到此系统。当为空时,表示用户无需密码即可登录。

  • 字段3:上次修改密码时间。从1970/1/1到上次修改密码的天数。 0 有特殊意思,表示用户应该在下次登录系统时更改密码。

  • 字段4:最小修改密码间隔天数,即两次修改口令之间所需的最小天数。若不设置,默认为0,表示当天即可修改。 空字段或 0 都表示当天即可修改。

  • 字段5:密码有效期。若为99999,表示永久有效。

  • 字段6:警告时间。表示从系统开始警告用户到用户密码正式失效之间的天数。空字段或者 0 表示没有密码警告期。

  • 字段7:密码过期后的宽限天数。

    密码过期后,仍然接受使用此密码进行登录的天数(在此期间,用户应该在下次登录时修改密码)。

  • 字段8:账户失效时间。从1970/1/1日起,到用户被禁用的天数。默认为空。

    账户过期不同于密码过期。账户过期后,用户将不被允许登录。密码过期后,用户将不被允许使用此密码登录。

  • 字段9:保留字段。此字段保留作将来使用。

3.添加用户账号useradd

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

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

微信截图_20230725183808.png

如图所示,创建新用户李五。

useradd配合一些指令,有着不同的意义。

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

举例说明:创建新用户liliu,指定uid为10086

微信截图_20230725184204.png

4.密码管理

passwd命令

为用户账号设置密码

passwd [选项]... 用户名

基本用法 不加选项 可以添加密码

选项

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

举例:

锁定用户lisi

如图

微信截图_20230725184452.png

5.修改用户账号属性

usermod命令

usermod [选项]... 用户名

常见选项:

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

举例说明: 锁定用户lisi 解锁用户lisi。

微信截图_20230725185151.png

6.删除用户

userdel [选项] 用户

  • -r 将宿主目录一起删除

微信截图_20230725185353.png

三.组管理

1.组账号文件

与用户帐号文件相类似 /etc/group:保存组帐号基本信息 /etc/gshadow:保存组帐号的密码信息基本不使用

微信截图_20230725185545.png

2.添加组

groupadd命令

groupadd [-g GID] 组账号名

微信截图_20230725185813.png

3.组内管理

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

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

举例:将用户赵三添加进李四组。

微信截图_20230725190131.png

4.删除组账号

groupdel 组帐号名

微信截图_20230725190407.png

5.查询finger

finger命令查询用户帐号的详细信息(finger [用户名])

举例说明:查询用户赵三信息。

微信截图_20230725190609.png

四.文件/目录的权限和归属

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

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

访问人群分为了三类

  1. 所属主(u)
  2. 所属组(g)
  3. 其他人 (o)

权限分为三种

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

1.chmod改变权限

微信截图_20230725191606.png

举例说明:

改变文件权限为777

微信截图_20230725191239.png

2.chown改变属组属主

改变目录tmp属主,属组为张三。

微信截图_20230725191913.png

3.umask

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

实现方式:

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

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

非特权用户umask默认是 002

root的umask 默认是 022