Linux用户与权限管理

编程知识 更新时间:2023-05-02 02:46:34

Linux用户与权限管理

  • 前言
  • 一、管理用户账号
    • (1)用户账号概述
      • ①用户标识UID (User IDentity,用户标识号)
      • ②用户账号文件
    • (2)用户账号管理
      • ①添加用户账号(useradd)
      • ②设置/更改用户口令(passwd)
      • ③修改用户账号属性(usermod)
      • ④删除用户账号(userdel)
  • 二、管理组账号
    • (1)管理组账号概述
      • ①组账号的分类
      • ②组标识GID (Group IDentifi)
      • ③组账号文件位置
    • (2)组账号管理
      • ①添加组账号(groupadd)
      • ②添加删除组成员(gpasswd)
      • ③删除组账号(groupdel)
    • (3)查询账号信息
      • ①查询用户账户所属组(groups)
      • ②查询用户账号身份标识(id)
      • ③查询当前主机的用户登录信息(w、who、users)
      • ④查询用户账号的登录属性(finger)
    • (4)文件与目录的归属和权限
      • ①查看文件与目录的权限和归属
  • 三、设置文件与目录权限和归属
    • (1)设置文件与目录权限(chmod)
    • (2)设置文件与目录归属(chown)
    • (3)设置权限掩码创建文件与目录(umask)
  • 总结

前言

在Linux中会有不同的用户,我们可以给不同的用户以不同的权限,来实现不同的需求。在企业中也是通过创建不同用户分配不同的权限,来实现企业中的不同的职位分工权限大小。

一、管理用户账号

(1)用户账号概述

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

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

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

②用户账号文件

作用:保存用户名称、宿主目录、登录Shell 等基本信息
位置:文件位置:/etc/passwd

  • 每一字段对应一个用户的账户记录:

     字段1:用户账号的名称,也是登录系统时使用的识别名称。
     字段2:经过加密的用户密码字串,或者密码占位符“x”。
     字段3:用户账号的 UID 号。
     字段4:所属基本组账号的 GID 号。
     字段5:用户全名,可填写与用户相关的说明信息。
     字段6:宿主目录,即该用户登录后所在的默认工作目录。
     字段7:登录 Shell 等信息,用户完成登录后使用的 Shell
    

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

第一列:账户名
第二列:存放真正加密的密码,采用SHA512散列算法,更加安全
第三列:上一次修改密码的时间,从1970年1月1日开始算的,因为1970年是linux的诞生日,date -d "1970-01-01 15775 days"可以查看哪一天改过
第四列:多久之后才可以修改密码,如果是 0,则密码可以随时修改
第五列:密码有效期,默认99999,表示永久生效
第六列:密码到期前的第几天发出告警信息,默认是7天,每次登录系统都会向该账户发出 "修改密码" 的警告信息
第七列:密码过期的宽限天数,过期后的几天还是可以登陆的,如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用
第八列:账号失效时间,使用自  1970 年 1 月 1 日以来的总天数作为账户的失效时间
第九列:保留,未使用

这里要注意的是第二列!!和*表示没有密码不能登陆,新创建用户也是!!,如果密码前面显示双感叹号表示该账户被锁定了

  • 如果在环境生产中程序升级程序失败,出现账号已过期的报错,可以将账号设置为永不过期,即将第五个字段更改为99999,表示不进行限制,即可
  • shadow的权限是非常高的,不能进行读取编辑与执行

(2)用户账号管理

①添加用户账号(useradd)

格式:useradd [选项] 用户名

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

②设置/更改用户口令(passwd)

  • root用户可以指定用户名作为参数,对指定账号的密码进行管理;不指定用户名时,修改当前账号的密码。
  • 普通用户只能执行单独的“passwd"命令修改自己的密码。
    基本格式:passwd [选项] 用户名
选项作用
-d清空指定用户的密码,仅使用用户名即可登录系统
-l锁定用户账户,锁定的用户账号将无法再登录系统
-S查看用户账户的状态(是否被锁定)
-u解锁用户账户
示例:

③修改用户账号属性(usermod)

  • 对于系统中已存在的用户账号,可以使用 usermod 命令重新设置各种属性
  • 使用 usermod 命令时,其大部分的选项与 useradd 命令的选项是相对应的,作用也相似

格式:usermod [选项] 参数 用户名

选项格式
-u修改用户的UID号
-d修改用户的宿主目录位置
-e修改用户的账户失效时间,可使用YYYY–MM-DD的日期格式
-g修改用户的基本组名(或使用GID号)
-G修改用户的附加组名(或使用GID号)
-M不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录
-s指定用户的登录Shell
-l更改用户账号的登录名称 格式:usermod -l 新名称 旧名称
-L锁定用户账户
-u解锁用户账户
这里值得注意的是,usermod和passwd命令都有锁定和解锁功能,不同的是usermod会在密码占位符前加“!”而passwd则是加“!!”,但是他们都可以互相解锁。
示例:

④删除用户账号(userdel)

格式:userdel [-r] 用户名
示例:

这里值得一提的是,当我们因为忘记使用-r删除用户账号,再创建同名账号时,会出现报错信息,提示我们用户已存在,或被占用进程。虽然在虚拟机中,我们可以直接重启解决,但是实际工作当中当然不能随意重启。
这时候,我们只需要进入宿主目录使用rm -rf删除宿主目录
接着,用userdel -f强制删除即可
如果此时依旧提示占用进程,则用ps -u 加用户名查看进程
再用kill +进程号关闭进程即可

二、管理组账号

(1)管理组账号概述

①组账号的分类

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

②组标识GID (Group IDentifi)

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

③组账号文件位置

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

  • /etc/gshadow:保存组帐号的密码信息
    与用户账号相同,每一字段对应一个记录

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

(2)组账号管理

①添加组账号(groupadd)

格式:groupadd [-g GID] 组账号
示例:

②添加删除组成员(gpasswd)

格式:gpassdw [选项] 组账号名

选项作用
-a向组内添加一个用户
-d从组内删除一个用户成员
-M定义组成员列表,以逗号分隔
需要注意的是“-M”是重新定义,而不是追加
“-M”使用后,追加用户只能使用“-a”
示例:

③删除组账号(groupdel)

格式:groupdel 组账号名
示例:

(3)查询账号信息

①查询用户账户所属组(groups)

格式:groups 用户名
示例

②查询用户账号身份标识(id)

格式:id 用户名
示例

③查询当前主机的用户登录信息(w、who、users)

④查询用户账号的登录属性(finger)

格式:finger 用户名

(4)文件与目录的归属和权限

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

①查看文件与目录的权限和归属

  • 最前的"-"表示该文件的类型,可以是d(目录)、b(块设备文件)、c(字符设备文件)、“-”(普通文件)、字母“ l ”(链接文件)等
  • 第二段的“rw-”表示该文件的属主用户(User)对该文件的访问权限
  • 第三段的“r–”表示该文件的属组内各成员用户(Group)对该文件的访问权限
  • 表示其他任何用户(Other)对该文件的访问权限
  • 后面的两个root分别表示属主与属组

访问权限
读取r:允许查看文件内容、显示目录列表
写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
可执行x:允许运行程序、切换目录
归属(所有权)
属主:拥有该文件或目录的用户账号
属组:拥有该文件或目录的组账

三、设置文件与目录权限和归属

(1)设置文件与目录权限(chmod)

格式
数字方式:chmod nnn 文件/目录名
字母方式:chmod [ugoa···][±=][rwx] 文件名
示例一:

示例二:“-R”可以设置当前目录下所有的文件与子目录的权限

(2)设置文件与目录归属(chown)

格式
chown:属主 文件或目录
chown: 属组 文件或目录
chown:属主:属组 文件或目录
示例一:

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

(3)设置权限掩码创建文件与目录(umask)

在我们创建一个新的文件或者目录时,他的权限是由默认权限的,而我们可以用umask来设置这个默认权限。
格式:umask nnn (nnn是权限掩码)
这里的权限掩码与正常的权限设置相反,可以理解为,正常的设置是从0到7权限增加,需求什么权限就用0+n,而权限掩码则是从7到0权限增加,需求什么权限就用7-n。
示例:

总结

文件与目录的权限和归属在Linux中是很重要的知识点,其相关的命令也会比较多。当然虽然多,但都不能理解,多花点精力熟练掌握便好。

更多推荐

Linux用户与权限管理

本文发布于:2023-04-25 08:32:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/1a3e9efc6443dccd6e6f43e64b5eca9d.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:权限   用户   Linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 102678文章数
  • 26165阅读数
  • 0评论数