Linux用户账号和权限管理

1,313 阅读13分钟

用户与用户组

一、用户的概述

以某种身份登录,那么用户的权限就会受到限制,用户的身份决定了用户能干什么。Linux中每个用户是通过 User Id (UID)来唯一标识的 新建用户 1-60000 自动分配 0-65535 端口号。

二、用户的类型

  • 超级管理员:权限最高的用户;

  • 普通用户:权限受到限制的用户;

  • 程序用户:不是给人登录使用的,给程序使用的。

注意

操作系统需要用一些文件,这些文件是否可以被打开,和程序用户登录有关。

三、用户组的概述

linux系统中的用户组(group)就是具有相同特性的用户(user)集合。将多个用户集合起来,统一分配某种相同的权限(开通或关闭)。

四、用户组的类型

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

  • 基本组(私有组):一定要有,有且只有一个;

  • 附加组(公有组):可有可无,可以有多个。

五、UID和GID

UID:用户的身份证号

GID:用户组的身份证号

系统是靠uid来区分用户身份的;

用户的uid为0就是超级管理员,不是因为它叫root。

六、以uid识别用户身份

系统用户centos 6centos 7
uid范围0-600000-60000
超级管理员00
普通用户500-600001000-60000
程序用户1-4991-999

用户管理

一、用户信息文件:/etc/passwd

作用:保存文件名称,宿主目录登录shell基本信息

image.png

用户信息:root:x:0:0:root:/root:/bin/bash

  • root:用户名

  • x:密码占位符

  • 0:uid,0为超级管理员

  • 0:gid,0为超级管理员

  • root:备注信息

  • /root:家目录位置

  • /bin/bash:登录时默认加载的shell类型

二、用户密码文件:/etc/shadow

作用:存放密码及密码策略的文件

image.png

密码信息:root:66vUt1Ws1x1xbpPkx1$tRR/a/o1BNriWgOD2GgHmdSS/nXysdVDdmEV6SGbPwBXDvyf15u.wu70Hgi1aT6pbt1XmabYxTe4rnquTbyTS/::0:99999:7:::

  • 第一列:root 用户名

  • 第二列:66vUt1Ws1x1xbpPkx1$tRR 加密的密码

  • 第三列:17110 上次修改密码时间,最近一次修改密码的时间到1970年1月1日到修改密码那天的天数

  • 第四列:0 不限制下次修改密码的时间

  • 第五列:99999 密码有效期为99999天,约等于无限期 如果你设置3代表3天后需要修改,否则无法登录

  • 第六列:7 密码到期前7天提醒你修改密码

  • 第七列:密码宽限时间

  • 第八列:账户失效时间

  • 第九列:保留字段未启用

三、添加用户账号:useradd

useradd命令格式 :useradd [选项] 用户名

新建一个用户:

  • 自动建立一个同名的基本组

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

选项作用
-u指定UID
-s指定登录shell的类型
-M不建立家目录
-d指定家目录位置(可以不存在)
-e指定用户的账户失效时间,格式2024-04-05
-g指定基本组
-G指定附加组
-r随机生成一个uid1-999的用户,不建家目录
-c备注信息
-p密码,必须是加密后的密码

image.png

示例

1)-u 指定用户的UID

[root@localhost /]# useradd -u 2000 LRJ        //添加LRJ用户,并指定UID为2000
[root@localhost /]# cat /etc/passwd |grep LRJ  //查看passwd中LRJ的信息
LRJ:x:2000:2000::/home/LRJ:/bin/bash

image.png

2)-s 指定登录shell的类型

[root@localhost /]# useradd -s /sbin/nologin LHEY  //创建LHEY用户并指定登录shell为/sbin/nologin,该用户无法登录系统
[root@localhost /]# cat /etc/passwd |grep LHEY     //查看passwd中LHEY的信息
LHEY:x:2003:2003::/home/LHEY:/sbin/nologin

image.png 3)-M 不建立家目录

[root@localhost /]# useradd -M LAIL   //创建LAIL用户且不建立家目录
[root@localhost /]# ls /home          //查看/home下有没有LAIL的家目录
lhey  LRJ  test

image.png

四、设置/更改用户口令:passwd

root用户可以指定用户名作为参数,对指定账号的密码进行管理。不指定用户名时,修改当前账号的密码。

普通用户只能执行单独的passwd命令修改自己的密码

passwd命令格式:passwd [选项] 用户名

选项作用
-d清空用户密码
-l锁定用户无法登录
-u解锁用户
-S查看用户是否被锁定

1)设置或修改用户密码

[root@localhost ~]# passwd LHEY    //设置或修改LHEY用户的密码
更改用户 LHEY 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

image.png

2)-d 清除用户密码,使用用户名可直接登录

[root@localhost ~]# passwd -d LHEY    //清除LHEY用户的密码
清除用户的密码 LHEY。
passwd: 操作成功

image.png

3)锁定和解锁用户

[root@localhost ~]# passwd -l LHEY      //锁定LHEY用户密码,锁定后LHEY用户无法登陆
锁定用户 LHEY 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -u LHEY      //解锁LHEY用户密码
解锁用户 LHEY 的密码。
passwd: 操作成功

image.png

注意:因LHEY无密码,系统提示不安全,必须使用-f才能解锁。

[root@localhost ~]# passwd -l LHEY       //锁定LHEY用户密码,锁定后用户无法登陆
锁定用户 LHEY 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -u LHEY       //解锁LHEY用户,因LHEY用户无密码,系统提示不安全,必须使用-f才
解锁用户 LHEY 的密码。
passwd: 警告:未锁定的密码将是空的。
passwd: 不安全的操作(使用 -f 参数强制进行该操作)

image.png

五、修改用户账号的属性:usermod

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

usermod命令格式:usermod [选项] 用户名

选项作用
-l更改用户的名称
-u指定UID
-s指定登录shell的类型
-d指定家目录位置(可以不存在)
-e指定用户的账户失效时间,格式2024-04-05
-g指定基本组
-G指定附加组
-r随机生成一个uid1-999的用户,不建家目录
-c备注信息
-p密码,必须是加密后的密码
-L锁定用户账户
-U解锁用户账户

示例

[root@localhost ~]# usermod -l LHEY LRJ    //将LRJ的用户名改成LHEY
[root@localhost ~]# usermod -L LHEY        //锁定LHEY用户
[root@localhost ~]# passwd -S LHEY         //查看LHEY用户状态
LHEY LK 2024-04-05 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# usermod -U LHEY        //解锁LHEY用户
[root@localhost ~]# passwd -S LHEY         //查看LHEY用户状态
LHEY PS 2024-04-05 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

image.png

六、删除用户:userdel

userdel命令格式:userdel [选项] 用户名

  • -r:连家目录一起删

示例

[root@localhost ~]# userdel number01
[root@localhost ~]# ls /home
number01  number02
[root@localhost ~]# userdel -r number02
[root@localhost ~]# ls /home
number01

image.png

用户组管理

一、组账号文件

组账号文件的位置

  • /etc/group:保存组账号基本信息。

  • /etc/gshadow:保存组账号的密码信息。

group文件每行分成了4段,每个字段含义如下:

  • 字段1:组账号名称。
  • 字段2:密码占位符x;通常不需要设置组密码。由于安全原因,该密码被记录在/etc/gshadow中,因此显示为'x'。类似/etc/shadow文件。
  • 字段3:组编号GID。
  • 字段4:本组的成员用户列表 (一般不包括基本组对应的用户帐号),多个成员之间以逗号“,"分隔 。

示例

[root@localhost ~]# head -3 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:

image.png

二、添加组账号:groupadd

groupadd命令格式:groudadd [-g GID] 组账号名

示例

[root@localhost ~]# groupadd -g 1025 LRJ   //添加LRJ用户组,指定GID为1025
[root@localhost ~]# tail -1 /etc/group     //查看group文件
LRJ:x:1025:

image.png

三、删除组账号:groupdel

groupdel命令格式:groupdel 组账号名

示例

[root@localhost ~]# groupdel LRJ  //删除LRJ用户组
[root@localhost ~]# tail -4 /etc/group  //查看group文件
sshd:x:74:
tcpdump:x:72:
lhey:x:1000:lhey
apache:x:48:

image.png

用户帐号的初始配置文件

一、初始配置文件的来源

新建用户账号时,从 /etc/skel 目录中复制而来, 比如默认bin/bash,默认家目录。

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

二、主要的用户初始配置文件

  • ~/.bash_profile : 这个文件是为系统全局变量配置文件,可以通过重启系统或者执行 ”source /etc/profile“ 命令使profile文件被读取。

  • ~/.bashrc: 这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本。

  • ~/.bash_logout: 每一个允许bash shell 的用户都会执行此文件。可通过执行bash命令打开一个新的bash,使bashrc文件被读取。

备注

  • 修改/etc/profile文件中相关配置,切换bash或者用户后都需要source /etc/profile才生效;

  • 修改/etc/bashrc文件中相关配置,切换bash或者用户后直接生效

三、文件/目录的权限和权属

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

属组:文件的拥有组

rw- r-- r--

  1. r:读

文件:可以看里面的内容

文件夹:可以用ls看文件夹的文件列表

  1. w:写

文件:可以修改文件的内容

文件夹:新建文件(文件夹),删除文件(文件夹,移动文件(文件夹

  1. x:执行

文件:可以运行(命令,脚本),颜色是绿色

文件夹:执行是最小的权限,没有执行,读写无法使用

四、数字法表示文件的权限

rwx

100-----------4

010-----------2

001-----------1

111-----------7

二进制转化成十进制

最高权限为7

五、修改文件权限:chmod

chmod命令格式:chmod 【选项】 指明属主,属组,其他人+权限 文件

常用选项

选项作用
-R递归
u属主
g属组
o其他人
a所有人
+加上
-减去
=赋予

字符形式:chmod   对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x)   文件/目录

“+”号代表增加权限,“-”号代表减少相应权限,“=”号代表覆盖对应的权限

数字形式:chmod nnn 文件/目录

选项

  • -R:递归修改知道目录下所有子项的权限

1.使用字符形式设置权限

示例

[root@localhost data]# ls -l number01              //显示number01的权限
-rw-r--r--. 1 root root 0 4月   8 13:46 number01
[root@localhost data]# chmod u+x number01          //为属主增加执行权限
[root@localhost data]# ls -l number01
-rwxr--r--. 1 root root 0 4月   8 13:46 number01
[root@localhost data]# chmod g=rw number01         //为属组覆盖读写权限
[root@localhost data]# ls -l number01
-rwxrw-r--. 1 root root 0 4月   8 13:46 number01
[root@localhost data]# chmod o-r number01          //为其他人减去阅读权限
[root@localhost data]# ls -l number01
-rwxrw----. 1 root root 0 4月   8 13:46 number01
[root@localhost data]# chmod a+r number01          //为所有人增加阅读权限
[root@localhost data]# ls -l number01
-rwxrw-r--. 1 root root 0 4月   8 13:46 number01

image.png

2.使用数字形式设置权限

示例

[root@localhost data]# ls -l number02               //显示number02的权限
-rw-r--r--. 1 root root 0 4月   8 14:02 number02
[root@localhost data]# chmod 666 number02           //设置属主、属组、其他人的权限都为读和写
[root@localhost data]# ls -l number02
-rw-rw-rw-. 1 root root 0 4月   8 14:02 number02

image.png

六、设置文件和目录的归属:chown

chown命令格式

  • 修改属主:chown 属主 文件或目录        

  • 修改属组:chown :属组 文件或目录      

  • 修改属主和属组:chown 属主:属组 文件或目录  

选项

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

示例:

[root@localhost test]# ls -l 1.test              //查看文件1.txt的归属
-rw-r--r--. 1 root root 0 4月   8 14:26 1.test
[root@localhost test]# chown lhey:lhey 1.test    //将属主修改为lhey,属组修改为lhey
[root@localhost test]# ls -l 1.test              //查看文件1.txt的归属
-rw-r--r--. 1 lhey lhey 0 4月   8 14:26 1.test

image.png

七、权限掩码:umask

umask在Linux中规定了新建文件夹和新建文件的权限

默认umask为022,是你没有的权限

拿最高权限减去umask就是你的最终权限

文件夹的最高权限为777

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

文件的最高权限为666 执行权限对于文件而言非常危险

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

直接使用umask看到当前umask的设置

umask后面跟上数值可以设置umask的值

umask 123

文件夹一样

文件权限,用666-umask结果有奇数自动加一,偶数不变

666-123=543,奇数加一,偶数不变

示例

[root@localhost test]# umask          //查看umask,为0022
0022
[root@localhost test]# umask 0000     //将umask设置为0000
[root@localhost test]# umask          //查看umask,为0000
0000
[root@localhost test]# mkdir A1       //创建Al目录
[root@localhost test]# ls -l A1
总用量 0
[root@localhost test]# ls -dl A1      //查看A1目录权限,所有人都拥有读写执行权限
drwxrwxrwx. 2 root root 6 4月   8 14:43 A1
[root@localhost test]# touch B1       //创建B1文件
[root@localhost test]# ls -l B1       //查看B1目录权限,所有人都只拥有读写权限
-rw-rw-rw-. 1 root root 0 4月   8 14:45 B1
[root@localhost test]# umask 0011     //将umask设置为0011
[root@localhost test]# umask          //查看umask,为0011
0011
[root@localhost test]# mkdir a1       //创建al目录
[root@localhost test]# ls -dl a1      //查看a1目录权限,属主拥有读写执行权限,属组和其他人拥有读写权限
drwxrw-rw-. 2 root root 6 4月   8 14:46 a1
[root@localhost test]# touch b1       //创建b1文件
[root@localhost test]# ls -l b1       //查看b1目录权限,所有人都只拥有读写权限
-rw-rw-rw-. 1 root root 0 4月   8 14:46 b1

image.png

八、三种特殊权限

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

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

  • sticky:粘贴位,拥有该权限的文件夹,该文件夹内的文件,只有超级管理员和属主可以删除