linux账号和权限管理

63 阅读7分钟

用户账号类型

用户账号

  1. 超级用户
  2. 普通用户
  3. 程序用户

超级用户

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

普通用户

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

程序用户

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

案例

image.png 第一列是用户名,以nologin结尾的是系统用户,系统用户是为了防止黑客攻击

组账号

  1. 基本组(私有组)
  2. 附加组(公共组)
  • 基本组:有且唯一
  • 附加组:可有可无,可以有多个

基本组(私有组)

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

附加组(公共组)

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

案例

image.png

ID

  1. UID
  2. GID

UID用户标识号

Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID

UID 新建用户1-60000自动分配

  1. 超级管理uid必定是0
  2. 程序用户uid:1-999(centos7),1-499(centos6)
  3. 普通用户uid:1000-60000(centos7),500+(centos6)

案例

image.png超级管理员的uid为0

image.png image.png普通用户uid是1000-60000

GID组标识号

与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID

  1. 超级管理gid必定是0
  2. 程序用户gid:1-499
  3. 普通用户uid: 500-60000

用户账户管理

存放的文件位置

/etc/passwd

存放保存用户名称、宿主目录、登录 Shell 等基本信息,每一行对应一个用户的账号记录

案例

image.png

root:x:0:0:root:/root:/bin/bash
  1. root 用户名称
  2. :x 密码占位符
  3. :0 uid
  4. :0 gid
  5. :root 备注信息,描述
  6. :/root 家目录路径
  7. :/bin/bash shell环境

/etc/shadow

保存用户的密码、账号有效期等信息,每一行对应一个用户的密码记录

案例

image.png

  1. root 用户名
  2. 6gArMpsgsnu6IVQF$i5npQMX1vnSM2rz.BlbBJkGIoL9LLB195ZnrpMtjvfcMsEvXGTak2spIjGJZtsrjxYjmAL1BXZCXslgLHN6aF1:加密的密码
  3. :最后一次修改密码时间,1970 年 01 月 01 日这是linux诞生的第一年已他作为元年开始计算,到今天一共经历了多少天
  4. :0修改密码最小天数 0 不限制
  5. :99999密码有效期
  6. :7提前7天提醒
  7. :宽限天数
  8. :失效时间 永久
  9. :保留

添加用户

useradd

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

useradd 【选项】 用户名
  • 在/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

useradd -s /sbin/nologin -M -e 2022-10-12 -u 10000 lisi

建立一个shell类型为不允许登录,不指定家目录,失效时间是2022年10月12日,指定uid号为10000,叫lisi的用户

密码管理

passwd

  • 为用户账号设置密码

  • 不指定用户名时,修改当前账户的密码

    passwd [选项]... 用户名
    
选项作用
-d清空指定用户的密码,仅使用用户名即可登录系统
-l锁定用户账户
-u解锁用户账户

案例

image.png

修改用户账号属性

usermod

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

案例

image.png

删除用户

userdel

-r 将宿主目录一起删除

案例

image.png

用户账号的初始配置文件

文件来源

  • 新建用户账号时,从/etc/skel目录中复制而来
  • cat etc/default/useradd,新建用户时,基本信息是从这里获得的

案例

image.png

主要用户账号的初始配置文件

  • ~/ .bash_profile
  • ~/.bashrc
  • ~/.bash_logout

这几个文件都是从/etc/skel目录中复制而来,是家目录的基本配置

组管理

与用户帐号文件相类似

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

groupadd

添加组

  • 用法:groupadd -g GID号 组账号名

案例

image.png

gpasswd

添加、设置、删除组成员

  • 用法:gpasswd +[选项] +用户+组名
选项作用
-a向组内添加一个用户
-d从组内删除一个用户成员
-M定义组成员列表,以逗号分隔

案例

image.png

groupdel

删除组

  • 用法:groupdel +组名

案例

image.png

文件/目录的权限和归属

访问权限

  • 读取r:允许查看文件内容
  • 写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
  • 可执行x:允许运行程序、切换目录

归属(所有权)

  • 属主:拥有该文件或目录的用户账号
  • 属组:拥有该文件或目录的组账号

image.png

chmod

设置文件目录的权限

一般会使用数字法对文件或目录的权限

  • 用法:chmod+3位数字+文件名

案例

image.png

chown

设置目录与文件归属

  • 用法:chown+属主:属组+文件

案例

image.png

umask

  • umask 的值可以用来保留在创建文件权限
  • 新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
  • 新建目录的默认权限: 777-umask
  • 非特权用户umask默认是 002
  • root的umask 默认是 022

image.png

总结

  • 用户账号管理:useradd、passwd、usermod、userdel
  • 组账号管理:groupadd、gpasswd、groupdel
  • 用户账号文件与组账号文件
  • 查询账号相关信息的命令:groups、id、finger、w
  • 设置目录与文件权限:chmod
  • 设置目录与文件归属:chown