不得不会的linux账号与权限管理

文章目录

  • 一、管理用户账号
    • 1.1用户账号概述
      • 1.1.1用户账号的分类
      • 1.1.2用户标识UID (User IDentity ,用户标识号)
      • 1.1.3用户账号文件
    • 1.2用户账号管理
      • 1.2.1 添加用户账号 —useradd
      • 1.2.2用户账号的初始配置
      • 1.2.3设置/更改用户口令—passwd命令
      • 1.2.4修改用户账号属性—usermod命令
      • 1.2.5删除用户账号—userdel命令**
  • 二、管理组账号
    • 2.1组账号概述
      • 2.1.1组账号的分类
      • 2.1.2组标识GID( Group IDentifi,组标识号 )
      • 2.1.3组账号文件
    • 2.2组账号管理
      • **2.2.1添加组账号—groupadd**命令
      • 2.2.2添加、设置、删除组成员—groupwd命令
      • 2.2.3删除组账号—groupdel
    • 2.3查询账号信息
      • 2.3.1查询用户账号所属组—groups命令
      • 2.3.2查询用户账号身份标识—id命令
      • 2.3.3查询用户账号的登录属性—finger命令
      • 2.3.4查询当前主机的用户登录情况—w命令、who命令、
      • 2.3.4显示 当前登录系统的所有用户的用户列表 — users
  • 三.文件/目录的权限及归属
    • 3.1 查看文件/目录的权限和归属
    • 3.2 设置文件/目录的权限和归属
      • 3.2.1 设置文件/目录权限 — chmod
      • 3.2.2设置文件/目录归属 — chown/chgrp
    • 3.3unmask应用
      • 3.2.2设置文件/目录归属 — chown/chgrp
    • 3.3unmask应用

一、管理用户账号

1.1用户账号概述

1.1.1用户账号的分类

  1. 超级用户: root用户是Linux操作系统中默认的超级用户账号,对本主机拥有最高的权限,系统中超级用户是唯一的。
  2. 普通用户: 由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。
  3. 程序用户: 在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail等。

1.1.2用户标识UID (User IDentity ,用户标识号)

  • root用户账号的UID固定值0
  • 程序用户账号的UID默认为Centos5,6: 1~499,Centos7: 1~ 999
  • 普通用户的UID默认为Centos5, 6: 500~ 65535,Centos7: 1000~ 65535

1.1.3用户账号文件

  • 作用:保存用户名称、宿主自录、登录Sell等基本信息,每一行对应一个用户的帐号记录

  • 文件位置:

    • /etc/passwd :保存用户名称、宿主自录、登录Sell等基本信息
    • /etc/shadow:保存用户的账号、密码等有效信息
  • /etc/passwd

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

不得不会的linux账号与权限管理_第1张图片

  • 基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。在早期的UNIX操作系统中,用户帐号的密码信息是保存在passwd文件中的,不法用户可以很容易的获取密码字串并进行暴力破解,因此存在一 定的安全隐患。后来经改进后,将密码转存入专门的shadow文件中, 而passwd文件中仅保留密码占位符“x”

  • 某条记录格式:root:x:0:0:root:/root:/bin/bash
    
    1. 字段1:用户帐号的名称
    2. 字段2:用户密码占位符“x”
    3. 字段3:用户帐号的UID号
    4. 字段4:所属基本组帐号的GID号
    5. 字段5:用户全名
    6. 字段6:宿主目录
    7. 字段7:登录Shell信息( /bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁 用户登陆系统)
  • /etc/shadow

    • 每一行对应一个用户的密码记录。 默认只有root用户能够读取文件中的内容,而不允许直接编辑该文件中的内容。
      不得不会的linux账号与权限管理_第2张图片

    • 某条格式:

root:$6$LOm1iAJRGPY5SRjO$GbpwoyzdV6Gqf6FX14R6vRosIqm.xHScEcGp80r5w3T19U3k.p6nH7B1YEy2LPYch.8XOF1ga3KcXOrHgKHX30::0:99999:7:::
  1. 字段1:用户帐号的名称;
  2. 字段2:使用SHA512加密的密码字串信息,当为“*” 或“! !”时表示此用户不能登录到系统。,若该字段内容为空,则该用户无须密码即可登录系统;
  3. 字段3:上次修改密码的时间,表示从1970年01月01日算起到最近一次修改密码时间隔的天数;
  4. 字段4:密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制;
  5. 字段5:密码的最长有效天数,自 本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999, 表示不进行限制;
  6. 字段6:提前多少天警告用户密码将过期,默认值为7;
  7. 字段7:在密码过期之后多少天禁用此用户;
  8. 字段8:帐号失效时间,此字段指定了用户作废的天数(从1970年01月01日起计算),默认值为空,表示账号永久可用;
  9. 字段9:**保留字段(未使用),**没有特定用用途。
普通用户忘记密码怎么办?passwd 用户名

1.2用户账号管理

1.2.1 添加用户账号 —useradd

  • 格式:useradd	[选项]... 用户名
    
    
  • 使用useradd添加账户完成以下任务:

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

    选项 作用
    -u 指定用户的UID号,要求该UID号码未被其他用户使用
    -d 指定用户的宿主目录位置(当与-M一起使用时,不生效)只能用绝对路径指定目录,且不需要事先创建目录
    -e 指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式
    -g 指定用户的基本组名(或使用GID号),对应的组名必须已存在
    -G 指定用户的附加组名(或使用GID号),对应的组名必须已存在
    -M 不建立宿主目录。(一般用于系统用户账号)
    -s 指定用户的登录Shell,(比如/bin/bash为可登陆系统,Isbin/nologin和/bin/false为禁止用户登陆系统)

示例:

[root@yxp ~]# useradd red  
//添加名为red的用户
[root@yxp ~]# tail -1 /etc/passwd    
red:x:1004:1004::/home/red:/bin/bash    
//显示/etc/passwd 末尾一行,看有没有添加成功
[root@yxp ~]# tail -1 /etc/shadow 
red:!!:18873:0:99999:7:::   
//显示/etc/shadow 末尾一行
[root@yxp home]# ls        
red  susan  test  test1  test2  yxp    
//可以看到red家目录在/home
[root@yxp home]# cd red  
[root@yxp red]# ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla  
//都是隐藏文件
[root@yxp red]# ls -A
.bash_logout  .bash_profile  .bashrc  .mozilla

[root@localhost ~]# useradd -u 2000 test1 
//添加名为test1,UID号为2000的普通用户
[root@localhost ~]# id test1 
uid=2000(test1) gid=2000(test1)=2000(test1)
//可以看到UID变成了2000,GID默认和UID一致


[root@localhost opt]# useradd -d /opt/rr test2
//添加名为test2,并指定宿主目录位置在/opt/rr下
[root@localhost opt]# tail -2 /etc/passwd
//显示/etc/passwd 末尾2行
test1:x:2000:2000::/home/test1:/bin/bash
test2:x:2001:2001::/opt/rr:/bin/bash  
//可以看到test2用户的宿主目录在/opt/rr下
[root@localhost opt]# useradd -e 2021-9-5 test3
//添加普通用户名称为test3
[root@localhost opt]# tail -1 /etc/shadow
test3:!!:18874:0:99999:7::18875:
//显示/etc/passwd 末尾2行,可以看到字段8:帐号失效时间是18875,从1970年后的18875天


[root@localhost opt]# useradd -g test1 kyky
//添加普通用户名称为kyky,指定用户的基本组名test1,指定的属组必须存在
[root@localhost opt]# id kyky
uid=2002(kyky) gid=2000(test1)=2000(test1)
//可以看到属组添加成功
[root@localhost opt]# tail -1 /etc/passwd
kyky:x:2003:2000::/home/kyky:/bin/bash
//GID组号变成2000,如果不指定,默认是和UID一样为2003
[root@localhost opt]# useradd -G test2 kyky1
//添加普通用户名称为kyky,指定用户的附加组名test2,指定的属组必须存在
[root@localhost opt]# id kyky1
uid=2003(kyky1) gid=2003(kyky1)=2003(kyky1),2001(test2)

[root@localhost opt]# cd /home/
[root@localhost home]# useradd -M test3
//添加名为test3的用户,但是不创建宿主目录
[root@localhost home]# ls
kyky  kyky1  test1  user1

1.2.2用户账号的初始配置

  • 文件来源

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

在这里插入图片描述

  • 主要的用户初始配置文件**(对用户有效)**

    • .bash_profile : 这个文件是为系统全局变量配置文件,可以通过重启系统或者执行source /etc/profile 命令使profile文件被读取
    • .bashrc: 这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本
    • .bash_logout: 每一个允许bash shell 的用户都会执行此文件,可通过执行bash命令打开一个新的bash shell时,使bashrc文件被读取
  • PS:

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

1.2.3设置/更改用户口令—passwd命令

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

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

  • 格式

    passwd 用户名
    例如:
    [root@yxp red]# passwd red
    更改用户 red 的密码 。
    新的 密码:
    重新输入新的 密码:
    passwd:所有的身份验证令牌已经成功更新。
    
    
    • 注意:密码不得小于8个字符,不设置密码,有两个“!!”,不可以正常登陆,设了密码才可以
      不得不会的linux账号与权限管理_第3张图片

在这里插入图片描述

  • 常用选项(只有超级用户可以使用选项):
选项 功能
-d 清空指定用户的密码,仅使用用户名即可登录系统
-l 锁定用户账户,锁定的用户账号将无法再登录系统。(一定要事先设好密码)
-S 查看用户账户的状态(是否被锁定)。
-u 解锁用户账户
[root@localhost home]# echo "123123" | passwd --stdin kyky5
更改用户 kyky5 的密码 。
passwd:所有的身份验证令牌已经成功更新。
//设置密码
[root@localhost home]# passwd -d kyky5
清除用户的密码 kyky5。
passwd: 操作成功
//清除用户密码
[root@localhost home]# passwd -l kyky5
锁定用户 kyky5 的密码 。
passwd: 操作成功
//锁定用户账户,锁定的用户账号将无法再登录系统。(一定要事先设好密码)
[root@localhost home]# passwd -S kyky5
kyky5 LK 2021-09-04 0 99999 7 -1 (密码已被锁定。)
//查看用户kyky5用户的状态
[root@localhost home]# passwd -uf kyky5
解锁用户 kyky5 的密码。
passwd: 操作成功

1.2.4修改用户账号属性—usermod命令

格式:usermod [选项]... 用户名
  • 常用选项:
选项 作用
-u 修改用户的UID号
-d 修改用户的宿主目录位置
-e 修改用户的账户失效时间,可使用YYYY–MM-DD的日期格式
-g 修改用户的基本组名(或使用GID号)
-G 修改用户的附加组名(或使用GID号)
-M 不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录
-s 指定用户的登录Shell
以上上面选项与useradd命令中的含义相同
-l 更改用户账号的登录名称 格式:usermod -l 新名称 旧名称
-L 锁定用户账户
-u 解锁用户账户
[root@localhost home]# usermod -l yxp1 test1
//修改用户名test1称改为yxp1
[root@localhost home]# id yxp1
uid=2000(yxp1) gid=2000(test1)=2000(test1)

[root@localhost home]# usermod -u 11000 yxp1
//修改用户UID[root@localhost home]# id yxp1
uid=11000(yxp1) gid=2000(test1)=2000(test1)
[root@localhost home]# usermod -L yxp1
//锁定账户yxp1
[root@localhost home]# passwd -S yxp1
yxp1 LK 2021-09-04 0 99999 7 -1 (密码已被锁定。)
//查看用户状态
[root@localhost home]# passwd -S yxp1
yxp1 LK 2021-09-04 0 99999 7 -1 (密码已被锁定。)
[root@localhost home]# passwd -uf yxp1
解锁用户 yxp1 的密码。
passwd: 操作成功
[root@localhost home]# 

[root@localhost home]# usermod -g test2 -G wheel yxp1
//修改用户yxp1基本组为test2和附加组为wheel
[root@localhost home]# id yxp1
uid=11000(yxp1) gid=2001(test2)=2001(test2),10(wheel) 
//wheel比root权限小,比用户权限大
[root@localhost home]# 

[root@localhost home]# cat /etc/passwd |grep yxp1
yxp1:x:11000:2001::/opt/yxp1:/bin/bash
[root@localhost home]# usermod -s /sbin/nologin yxp1
//修改用户yxp1登录shell
[root@localhost home]# cat /etc/passwd |grep yxp1
yxp1:x:11000:2001::/opt/yxp1:/sbin/nologin
//从/bin/bash变为/sbin/nologin

1.2.5删除用户账号—userdel命令**

格式: userdel [-r] 用户名  //结合-r可以删除宿主目录
[root@yxp red]# userdel test1
//删除用户,此时家目录里的宿主目录不会被删除,结合-r可以一次性删除
[root@yxp red]# ls -a /home
.  ..  red  susan  test  test1  test2  yxp
[root@yxp red]# rm -rf test1
[root@yxp red]# ls -a /home
.  ..  red  susan  test  test1  test2  yxp
[root@yxp red]# 

[root@localhost home]# cd /home/
[root@localhost home]# ls
kyky  kyky1  kyky5  test1  user1
[root@localhost home]# userdel -r kyky5
//结合-r可以一次性删除家目录下的宿主目录
[root@localhost home]# ls
kyky  kyky1  test1  user1

二、管理组账号

2.1组账号概述

2.1.1组账号的分类

  • 基本组(私有组): 基本组账号只有一个,一般为创建用户时指定的组。在/etc/passwd文件中第4段记录的即为该用户的基本组GID号。
  • 附加组(公共组): 用户除了基本组以外,额外添加指定的组。

2.1.2组标识GID( Group IDentifi,组标识号 )

  • root用户账号的GID固定值0
  • 程序用户账号的GID默认为Centos5,6: 1~499,Centos7: 1~ 999
  • 普通用户的GID默认为Centos5, 6: 500~ 65535,Centos7: 1000~ 65535

2.1.3组账号文件

  • 文件位置:

    • /etc/group:保存组帐号基本信息
    • /etc/gshadow:保存组帐号的密码信息
格式:
[root@yxp red]# head /etc/group
root:x:0:
bin:x:1:

  • 字段1:组帐号的名称
  • 字段2: 占位符“x”
  • 字段3:组账号的GID号
  • 字段4:组账号包含的用户成员(一般不包括基本组对应的用户帐号),多个成员之间以逗号“,"分隔

示例:
不得不会的linux账号与权限管理_第4张图片

2.2组账号管理

2.2.1添加组账号—groupadd命令

  • 格式:

    groudadd [-g GID] 组账号名
    
  • 示例:

    [root@yxp ~]# groupadd -g 1800 admin   //添加一个组号1800名称为admin的组
    [root@yxp ~]# tail -2 /etc/group  //查看末尾两行组号信息
    red:x:1004:
    admin:x:1800:   //添加成功	
    
    

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

==设置组账号密码,但是该功能极少使用,实际上更多的管理用户成员、添加/删除组成员

  • - 格式: gpasswd [选项]...组账号名 
    
    
    
  • 常用选项:

    选项 作用
    -a 向组内添加一个用户
    -d 从组内删除一个用户成员
    -M 定义组成员列表,以逗号分隔**(重新定义,不是追加)**

示例1:

不得不会的linux账号与权限管理_第5张图片

示例2:
不得不会的linux账号与权限管理_第6张图片

2.2.3删除组账号—groupdel

格式:groupdel 组账号名

示例:
不得不会的linux账号与权限管理_第7张图片

2.3查询账号信息

2.3.1查询用户账号所属组—groups命令

格式:groups [用户名]
示例:
[root@yxp ~]# groups user1
user1 : user1 mask


2.3.2查询用户账号身份标识—id命令

格式:id [用户名]
示例:[root@yxp ~]# id user2
uid=1007(user2) gid=1007(user2)=1007(user2),2000(mask)

2.3.3查询用户账号的登录属性—finger命令

PS:需要先安装finger安装包
格式:finger	[用户名]
示例:
[root@yxp ~]# finger yxp
Login: yxp            			Name: yxp
Directory: /home/yxp                	Shell: /bin/bash
Last login 五 93 11:12 (CST) on pts/0
No mail.
No Plan.

不得不会的linux账号与权限管理_第8张图片

2.3.4查询当前主机的用户登录情况—w命令、who命令、

w [选项] 用户名

不得不会的linux账号与权限管理_第9张图片

  • 第一行信息输出内容包含的信息说明如下:

    • 23:16:26 ——当前系统时间.
    • up 1 day——系统运行时长.
    • 4 users ——登录用户数.
    • load average: 0.00 0.01, 0.05 ——系统过去1,5,15分钟的平均负载信息。平均系统负载是对当前正在运行或正在等待磁盘I/O的作业数的度量。 它基本上告诉您系统在给定间隔内的繁忙程度。
  • 第二行信息包括如下字段说明:

    • USER ——登录用户名.
    • TTY ——登录用户使用的终端名.
    • FROM ——登录用户来源的主机名或IP地址.
    • LOGIN@ ——用户登录时长.
    • IDLE —— 自用户上一次与终端进行交互以来的空闲时间.
    • JCPU ——附加到tty的所有进程使用的时间.
    • PCPU ——用户当前进程所用的时间。 显示在“ WHAT”字段中的那个.
    • WHAT —— 用户当前的进程及选项/参数。

不得不会的linux账号与权限管理_第10张图片

在这里插入图片描述

2.3.4显示 当前登录系统的所有用户的用户列表 — users

在这里插入图片描述

三.文件/目录的权限及归属

​ 在Linux文件系统的安全模型中,为系统中的文件赋予了两个属性:访问权限和文件所有者,简称**“权限”和“归属”**。其中访问权限包括读取、写入、可执行三种基本类型,归属包括属主(拥有该文件的用于账号)、属组(拥有该文件的组账号)。Linux系统根据文件和目录的访问权限、归属来对用户访问数据的过程进行控制。

3.1 查看文件/目录的权限和归属

[yxp@yxp root]$ ll /etc/passwd
-rw-r--r--. 1 root root 2387 93 22:57 /etc/passwd

  • 在上述输出信息中,第3、4个字段的数据分别表示该文件的属主、属组,上面的"/etc/passwd"文件都属于root用户,root组:而第1个字段的数据表示该文件的访问权限,如:"-rw-r–r–"。权限字段由四部分组成,各自的含义如下:
    • 第一个字符:表示该文件的类型,可以是d(目录)、b(块设备文件)、c(字符设备文件)、“-”(普通文件)、字母“ l ”(链接文件)等;
    • 第2~4个字符:表示该文件的属主用户(User)对该文件的访问权限;
    • 第5~7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限;
    • 第8~10个字符:表示其他任何用户(Other)对该文件的访问权限;
    • 第11个字符:这里的“ . ”与SELinux有关,目前不需要关注。

3.2 设置文件/目录的权限和归属

3.2.1 设置文件/目录权限 — chmod

格式:
字符形式:	chmod [ugoa···][+-=][rwx] 文件...
数字形式:	chmod nnn 文件/目录...
权限项 执行 执行 执行
字符表示 r w x r w x r w x
数字表示 4 2 1 4 2 1 4 2 1
权限分配 文件所有者 文件所属组 其他用户
八进制数表示 7 7 7
  • 在表示属主、属组用户或者其他用户对该文件的访问权限时,主要使用了三种不同的权限字符,权限字符也可以分别表示为八进制数字4、2、1,表示一个权限组合时需要将数字进行累加。
    各自含义如下:

    • 读取 r :允许查看文件的内容、显示目录列表
      写入 w :允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
    • 可执行 x :允许运行程序、切换目录。
  • 常用选项: -R:递归修改指定目录下所有子项的权限(包括目录中的文件

  • 字符组合“[ugoa···][+ - =][rwx]”或者数字组合“nnn”的形式表示要设置的权限模式,其中“nnn”为需要设置的具体权限值,如“755”、“644”等,而“[guoa···][+ - =][rwx]”的形式中,三个组成部分的含义及用法如下所述:

    • “ugoa”表示该权限设置所针对的用户类别。“u”代表文件属主,“g”代表文件组内的用户,“o”代表其他任何用户长度有用户(ugo的总和);
    • “+ - =”表示设置权限的操作动作。“+”号代表增加权限,“-”号代表减少相应权限,“=”号代表仅设置对应的权限;
    • “rwx”是权限的字符组合形式,也可以拆分使用,如“r”、“rx”等。

    示例:不指定ago,默认所有都设置

不得不会的linux账号与权限管理_第11张图片

示例:

不得不会的linux账号与权限管理_第12张图片

3.2.2设置文件/目录归属 — chown/chgrp

格式:
chown/chgrp 属主 文件或目录
chown/chgrp :属组 文件或目录
chown/chgrp 属主:属组 文件或目录
  • 常用选项: -R:递归修改指定目录下所有子项的权限(包括目录中的文件)

  • 示例:

不得不会的linux账号与权限管理_第13张图片
不得不会的linux账号与权限管理_第14张图片

不得不会的linux账号与权限管理_第15张图片

3.3unmask应用

​ 我们新建一个新的文件或者目录时,它的默认权限时什么呢,这个与umask有关。

1 .unmask作用:

  • 设置目录和文件的默认权限;
  • 指定目前用户在新建文件或目录时的权限默认值;
  • 新建的文件或者目录的权限为默认最大权限减去umask(普通文件的最大默认权限为6,目录的最大默认权限为7)
格式:
umask查看:	umask
umask设置:	umask 000

mg-PvQ2G6ku-1630747401616)]

示例:

[外链图片转存中…(img-JaKE7YDT-1630747401617)]

3.2.2设置文件/目录归属 — chown/chgrp

格式:
chown/chgrp 属主 文件或目录
chown/chgrp :属组 文件或目录
chown/chgrp 属主:属组 文件或目录
  • 常用选项: -R:递归修改指定目录下所有子项的权限(包括目录中的文件)

  • 示例:

    [外链图片转存中…(img-l9WuoXBE-1630747401617)]

    [外链图片转存中…(img-TxDR7h1j-1630747401618)]

    [外链图片转存中…(img-juJdMd97-1630747401618)]

3.3unmask应用

​ 我们新建一个新的文件或者目录时,它的默认权限时什么呢,这个与umask有关。

1 .unmask作用:

  • 设置目录和文件的默认权限;
  • 指定目前用户在新建文件或目录时的权限默认值;
  • 新建的文件或者目录的权限为默认最大权限减去umask(普通文件的最大默认权限为6,目录的最大默认权限为7)
格式:
umask查看:	umask
umask设置:	umask 000

你可能感兴趣的:(Linux,VMware,linux,运维)