账号和权限管理【useradd、passwd、usermod ;chmod、chown、umask】

209 阅读9分钟

本章总结

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

本章节重点

  • 学会用命令建用户  useradd  [选项]   用户名
  • 学会修改文件的属性

一 、用户账户与组账号

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

Linux基于用户身份对资源访问进行控制

1.1 用户的类型

  • 超级管理员 : 权限最高的用户 root
  • 普通用户 : 权限受到限制的用户 lisi
  • 程序用户 : 不是给人登录使用的,给程序使用的

1.2 组账号

一个用户必须有一个基本组,附加组可有可无,也可以有多个

  • 基本组(私有组) :一定要有,有且只有一个 id zhangsna 可查看
  • 附加组(公共组):可有可无,可以有多个

1.3 uid和gid

  • uid :用户的身份证号
  • gid :用户组的身份证号

系统是靠uid来区分用户身份的,用户的uid为0就是超级管理员 ,而不是因为他叫root

centos 7centos 6
超级管理员00
普通用户1000开始  1000-60000500开始
程序用户1-9991-499

centos7 的 uid范围为0 - 60000

2.  用户账号管理

2.1 用户相关文件存储位置

2.1.1 用户信息文件 /etc/passwd

保存用户名称、宿主目录、登录shell等基本信息 (虽然叫密码但是存的是用户信息!)

每一行对应一个用户的账号记录

  • root:x:0:0:root:/root:/bin/bash    (:隔开分为七段)
代码含义
root用户的名字
x密码占位符
0uid
0gid
root备注信息
/root家目录位置
/bin/bash登录时默认加载的shell类型

man 5  passwd 可以查询文件的信息

2.1.2 用户密码文件 /etc/shadow

保存用户的密码、密码策略文件、账号有效期等信息

每一行对应一个用户的密码记录

  • zhangsan:$6$3/06NuAjdnApLp2F$:19818:0:99999:7:::
代码含义
第一列 zhangsan用户名
第二列 663/06NuAjdnApLp2F$加密的密码 (如果第二列是!!或*代表该用户不可以登录到系统中;如果为空代表该用户密码可以直接登录)
第三列 19818上一次修改密码的时间 1970-1-1到修改密码那天一共过了19818天 (date  -d  ‘1970-1-1 19818 ’计算实际修改日期)
第四列 0不限制下次密码修改的时间  (如果该项为3,今天修改密码,想再次修改密码,需要3天以后)
第五列 99999密码有效期为99999天,约等于永久有效 (如果设置3,代表3天后需要修改,否则无法登录)
第六列 7密码到期前7天提醒你密码快到期了,请修改密码
第七列密码宽限时间 (如果为3,还可以再登录3天)
第八列用户的失效时间  1970-1-1到失效时间经过了多少天
第九列保留字段未启用

passwd shadow.png

2.2  添加用户账号  useradd

新建一个用户

  • 自动建立一个同名的基本组
  • 自动建立一个同名的家目录 ,在/home下

命令格式\color{red}{命令格式} : useradd [选项] 用户名

选项效果
-u指定uid
-s指定登录shell 类型
-M不建立家目录
例  :useradd  lisi  -u 111  -s /sbin/nologin  -M  cxk
-d指定家目录位置(可以是不存在的目录)
-e指定失效时间 格式是yy-mm-dd
-g指定基本组
-G指定附加组
-r随机生成一个uid  1-999的用户并且不建立家目录(了解)
-c添加备注信息

2.3 设置更改用户口令  passwd

命令格式\color{red}{命令格式} :passwd [选项] 用户名

不加用户名修改当前用户的密码

选项效果
不加修改密码
-d清空用户密码 (了解即可,市场环境中不用)
-l锁定用户
-u解锁用户    -uf 强制解锁
-S查看用户是否被锁定
  • 一条命令改密码,免交互设置密码 :echo “123123” | passwd lisi --stdin

useradd.png

2.4 对已有用户的属性进行修改 usermod

命令格式\color{red}{命令格式} : usermod [选项] 用户名

选项效果
-l更改用户的名称  先写新名字 再写旧的名字
-L锁定用户
-U解锁用户
-u指定uid
-s指定登录shell 类型
-d修改家目录位置(可以是不存在的目录)
-e修改失效时间 格式是yy-mm-dd
-g修改基本组
-G修改附加组
-r随机生成一个uid  1-999的用户并且不建立家目录(了解)
-c添加备注信息

2.5 删除用户 userdel

命令格式\color{red}{命令格式} : userdel [-r] 用户名

-r 连家目录一起删除

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

2.6.1 文件来源

  • 新建用户账号时,从 /etc/skel 目录中复制而来
  • cat / etc/default/useradd

2.6.2 主要的用户初始配置文件

用户宿主目录下的初始配置文件只对当前用户有效

  • ①~./bash_profile
    #此文件中的命令将在该用户每次登录时被执行,他会设置一些环境变量,并且会调用该用户的~/.bashrc文件
  • ②~./bashrc #此文件中的命令将在该用户每次打开新的bash shell时(包括登录系统)被执行(登录 切换 新的bash环境)
  • ③~./bash_logout #此文件中的命令将在该用户每次退出时bash shell时使用

3. 组管理

3.1 组账号文件

3.1.1 组账户 /etc/group

保存组帐号基本信息

3.1.2组密码 /etc/gshadow

保存组帐号的密码信息,基本不使用

3.2 添加组 groupadd

命令格式\color{red}{命令格式} : groupadd [-g GID] 组账号名

3.3 组内管理 gpasswd

添加、设置、删除组成员

命令格式\color{red}{命令格式} :gpasswd [选项] [用户名] 组账号名

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

3.4 删除组账号 groupdel

命令格式\color{red}{命令格式} : groupdel 组帐号名

4.查询账号信息

  • groups [用户名] 查询用户所属的组

  • id [用户名] 查询用户身份标识

  • finger [用户名] 查询账号的详细信息 (看的内容比id多) 需要安装 yum install finger -y

  • w 、who 、users 查询已登录到主机的用户信息

二 、文件/目录的权限和归属

1. 访问权限

r读

  • 对于文件而言:可以看文件里面的内容
  • 文件夹:可以用ls看文件夹中的文件列表 ls -l

w写

  • 文件:可以修改文件的内容
  • 文件夹:新建文件(文件夹),删除文件(文件夹),移动文件(文件夹)

x执行

  • 文件:可以运行(命令,脚本)颜色是绿色
  • 文件夹:执行是最小的权限,没有执行 读写无法使用

补充1\color{red}{补充1} :对文件而言:如果大家都没有执行权限,超级管理员也没有执行权限。只要有一个人有执行权限,那么超级管理员也有

补充2\color{red}{补充2} :删除一个文件和文件本身权限有关系嘛? 和文件本身没关系,和文件所在文件夹有关

2. 归属(所有权)

属主:文件的主人:文件的拥有者

属组:文件的拥有组

其他人:除了上面两种外的用户

3. 修改文件权限  chmod

3.1 非数字法

命令格式\color{red}{命令格式} :chmod [-R] 指明属主/属组/其他人+权限 文件 ( -R 递归 )

属主:u

属组:g

其他人:o

所有人:a

加上 +

减去 -

赋予 =

chmod  u+r  文件名    #属主加上读权限
chmod  u=r  文件名    #不管原来是什么,现在只有读权限

3.2 数字法表示

读 4

写 2

执行 1

权限.png

chmod  777 文件名   #三个数字写全

阿里面试题:执行 cp  /etc/issue  /data/dir/ 所需要的最小权限?
/bin/cp 需要x权限
/etc/ 需要x权限
/etc/issue 需要r权限
/data 需要x权限
/data/dir 需要w,x权限

4. 修改属主属组  chown

命令效果
chown  属主  文件名/目录只改变文件的属主
chown  :属组  文件名/目录只改变文件的属组
chown  .属组  文件名/目录只改变文件的属组
chown  属主:属组  文件名/目录属主属组都改变
chown  属主.属组  文件名/目录属主属组都改变

常用选项:-R递归修改指定目录下所有文件、子目录的归属

chown.png

5. 权限掩码 umask

5.1 umask 作用

在linux中规定了新建文件夹和新建文件的落地权限

5.2 创建新文件和目录时,落地权限计算

默认umask 为0022 (第一个0与特殊权限有关,目前只需要看后三位),是你没有的权限。拿最高权限减去umask就是你的最终权限

文件夹\color{red}{文件夹}的最高权限为777

777-022=755 所以文件夹落地的权限为755 rwx r-x r-x

文件\color{red}{文件}的最高权限为666 (执行权限对于文件而言非常危险,为了安全考虑,所有文件默认没有x权限,如果想要执行权限需要手动添加)

666-022=644 所以文件落地的权限为644 rw- r-- r--

默认umask.png

5.3 umask的使用

  • 直接使用umask 可以看到当前的umask 设置
  • umask 后面跟上数值,可以设置umask的值。例如umask 123
设置umask 123
文件夹权限与计算结果一样
777-123=654

文件权限,用666-umask  所得结果有奇数自动加一,偶数不变
666-123= 543          出现奇数再加1 ,偶数不变    即权限为644

注意:umask 123的设置是临时性的,想要永久修改需要把umask 123写进vim /etc/profile (所有用户生效)
umask123.png

6. 三种特殊权限

6.1 suid

SUID(Set owner User ID up on execution) 是针对文件所设置的一个特殊权限。只作用于二进制文件中。

功能:如果拥有该权限,把当前用户当成文件的属主

suid.png

6.2 sgid

SGID属性和SUID一样,只是SUID作用于属主,而SGID作用于属组。

功能:如果拥有该权限,把当前用户当成文件的属组

sgid.png

6.3 sticky 粘贴位

拥有该权限的文件夹,该文件夹中的文件,只有自己和超级管理员可以删除,其他人不可以删除

sticky.png

三 、 acl 访问控制列表

ACL:Access Control List,实现灵活的权限管理。除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

作用:可以单独控制某一个用户的权限

用法: setfacl  [-bkndRLP]  { -m|-M|-x|-X ... }  file ...

例子:给lisi用户添加读写权限
setfacl  -m  u:lisi:rw   passwd