Linux--账号和权限管理

文章目录

  • 前言
    • 用户账号和组账号概述
      • Linux基于用户身份对资源访问进行控制
      • 用户账号
      • 组账号概述
      • UID号和GID号
      • 用户账号文件/etc/passwd
      • 用户账号文件/etc/shadow
      • 组账号文件
    • 用户账号和组帐号管理
      • 用户账号管理
      • useradd命令–添加用户账号
      • usermod命令 – 修改用户账号
      • passwd命令 – 修改用户账户密码
      • finger命令 – 查询其他使用者的资料
    • 组帐号管理
      • groupadd命令 – 添加组账号
      • gpasswd命令–添加删除组成员
      • groupdel命令–删除组账号
    • 文件/目录的权限和归属
      • 查看文件/目录的权限和归属
      • chmod命令 – 改变文件或目录权限
      • chown命令 – 改变文件或目录用户和用户组
      • umask命令 – 设定权限掩码

前言

Linux作为一个多任务,多用户的服务器操作系统,Linux提供了严格的权限管理机制,主要从用户身份,文件权限两方面对资源访问进行控制。

用户账号和组账号概述

Linux系统中的用户账号和组账号的作用在本质上和Windows是一样的,都是基于用户身份来控制对资源的访问。但是在个别细节和表现形式方面还是有些许差异的。

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

Linux系统中,根据系统管理的需要,将用户账号分为不同的类型,其拥有的权限,担任的角色也各不相同。

用户账号

用户账号 功能
超级用户 root用户是Linux系统中默认的超级用户账号,对本级拥有最高的权限,类似于Windows系统中的administrator用户。
普通用户 普通用户账号需要有root用户或其他管理员用户创建,拥有的权限受到一定限制,-般只在用户自己的宿主目录中拥有完整权限。
程序用户 在安装Linux系统及 部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行。例如: bin, daemon, ftp, mai等。
匿名用户 Windows中的匿名用户时guest, Linux系统中匿名用户是nobody。

组账号概述

对于用户账号来说,对应的组账号可以分为基本组(私有组)和附加组(公共组)两种。每一个用户账号可以是多个组账号的成员,但是其基本组账号只有一个。在”/etc/passwd“文件中第四个字段记录的即为该用户的基本组GID号。而对于该用户还属于那些附加组,需要在对应组账号文件中才被体现。

账号 描述
基本组(私有组) 随着用户的建立而建立,与用户同名
附加组(共有组) 直接创建空组,可以自由添加已有用户。给组设置权限后,该组中的所有用户都具备此权限。

UID号和GID号

Linux系统中的每一个用户账号和组账号都有一个数字形式的身份标记,称为UID(User IDentity,用户标识号)和GID(Group IDentify,组标识号)。对于系统核心来说,UID是作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的。

用户 UID号
root用户 固定值UID=0
程序用户 UID 1- -999
普通翻户 UID 1000- 6万

用户账号文件/etc/passwd

  • 保存用户名称、宿主目录、登录ShelIl等基本信息
  • 文件位置: /etc/passwd
  • 每一行对应一个用户的帐号记录
  • passwd文件的每一行内容中,包含了七个用冒号“:”分隔的配置字段,我们需要了解其含义。
    Linux--账号和权限管理_第1张图片
[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
字段 解释
用户账号 用户账号的名称,也是登录系统时使用的识别名称
密码占位符 表示自己有密码
用户账号D (UID) 用户账号的UID号
组账号ID (GID) 所属基本组账号的GID号
用户说明 用户全名,可以填写与用户相关的说明信息
宿主目录(家目录) 该用户登录后所在的默认工作目录
登录Shell 登录hel等信息,用户完成登录后使用的shell

用户账号文件/etc/shadow

  • 保存用户的密码、账号有效期等信息
    • 文件位置: /etc/shadow
    • 每一行对应一个用户的密码记录
    • shadow文件又被称为“影子文件”,其中保存有各种用户账号的密码信息,因此默认只有root用户能够读取文件中的内容,而不允许直接编辑改文件中的内容。
查看头两行shadow文件内容
[root@localhost ~]# head -2 /etc/shadow
root:$6$mH8hzgaq7mY/pNmy$L.P3c2kw1EYGn7upTEcckuVE88wOb4XdGqf0qxMq3cml.W0ewoF0m6fGmXnGWn3jCkPRNGEo6xXCcPjtKmKSo0::0:99999:7:::
bin:*:17110:0:99999:7:::
  • shadow文件的每一行内容中,包含了九个用冒号“:”分隔的配置字段,我们需要了解其含义。
    Linux--账号和权限管理_第2张图片
字段 解释
第一字段(root) 户账号名称
第二字段(红色字体部分) 使用MD5加密的密码字串信息,当为“”或者“! !”时表示此用户不能登录到信息,若该字段内容为空,则该用户无需密码即可正常登陆系统
第三字段(14374) 上次修改密码的时间,示从1970年1 月1日起到最近-次修改密码时间隔的天数
第四字段(0) 密码的最短有效天数。自本次修改密码后,必须至少经过该天数才能再次修改密码,默认值为0,表示不进行限制。
第五字段(99999) 密码的最长有效天数,自本次修改后,经过该天数以后必须再次修改密码。默认值为99999, 表示示不进行限制。
第六字段(7) 提前多少天警告用户口令将过期,默认值为7
第七字段 在密码过期后多少天内禁用此用户
第八字段 账号失效时间,此字段制定了用户作废的天数(从1970年1月1日算起),默认值为空,表示账号永久可用
第九字段 保留字段,目前没有特定用途

组账号文件

  • /etc/group 和 /etc/gshadow
  • 组账号文件也有两个,分别是/etc/group, /etc/gshadow。与用户账号文件非常类似。前者用于保存组账号名称,GID号,组成员等基本信息,后者用于保存组账号的加密密码字符串等信息(但是很少使用到)。
  • 某一个组账号包含哪些用户成员,将会在group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用逗号“,”分隔。
  • 例如:查看root组包括哪些用户成员,哪些组中包含root用户。
检索root组包括哪些用户
[root@localhost ~]# grep "^root" /etc/group
root:x:0:
检索哪些组包括root用户
[root@localhost ~]# grep "root" /etc/group
root:x:0:

Linux--账号和权限管理_第3张图片

用户账号和组帐号管理

用户账号管理

  • 切换用户:su 用户,保持路径不变
  • su - 用户,切换到当前用户的家目录
  • grep “bash$” /etc/passwd 查看当前可用用户
  • 用户被锁定后,可以从高权限用户切换到普通用户,但是不可以用普通用户登录

useradd命令–添加用户账号

  • seradd命令用来创建新的用户或更改用户的信息。

  • useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

语法格式:useradd [选项] [用户名]
常用选项有
-D	改变新建用户的预设值
-c	添加备注文字
-d	新用户每次登陆时所使用的家目录
-e	用户终止日期,日期的格式为YYYY-MM-DD
-f	用户过期几日后永久停权。当值为0时用户立即被停权,而值为-1时则关闭此功能,预设值为-1
-g	指定用户对应的用户组
-G	定义此用户为多个不同组的成员
-m	用户目录不存在时则自动创建
-M	不建立用户家目录,优先于/etc/login.defs文件设定
-n	取消建立以用户名称为名的群组
-r	建立系统帐号
-u	指定用户id

usermod命令 – 修改用户账号

  • usermod命令用于修改用户账号 。usermod可用来修改用户账号的各项设定,修改系统账号文件来反映通过命令行指定的变化。
  • 语法格式:usermod [选项]
-c<备注>			修改用户账号的备注文字
-d <登入目录>	修改用户登入时的目录
-e <有效期限>	修改账号的有效期限
-f<缓冲天数>		修改在密码过期后多少天即关闭该账号
-g<群组>			修改用户所属的群组
-G<群组>			修改用户所属的附加群组
-l<账号名称>		修改用户账号名称
-L				锁定用户密码,使密码无效
-s		修改用户登入后所使用的shell
-u			修改用户ID
-U				解除密码锁定
  • 删除用户账号userdel
userdel [-r] 用户名

添加-r选项时,表示连用户的宿主目录一并删除

[root@localhost ~]# useradd stu01
[root@localhost ~]# Is -Id /home/stu01/
drw----- 2 stu01 stu01 4096 09-09 12:38 /home/stu01/
[root@localhost ~]# userdel -r stu01
[root@localhost ~]# Is -Id /home/stu01/
Is: /home/stu01/:没有那个文件或目录

passwd命令 – 修改用户账户密码

  • passwd命令用于设置用户的认证信息,包括用户密码、账户锁定、密码失效等。直接运行passwd命令修改当前的用户密码,对其他用户的密码操作需要管理员权限。
常用格式:passwd [选项]
常用选项:
-d	删除密码
-l	锁定用户密码,无法被用户自行修改
-u	解开已锁定用户密码,允许用户自行修改
-e	密码立即过期,下次登陆强制修改密码
-k	保留即将过期的用户在期满后能仍能使用
-S	查询密码状态

finger命令 – 查询其他使用者的资料

  • finger命令会去寻找并显示指定账号的用户相关信息,包括本地与远程主机的用户皆可,账号名称名优大小写的差别。单独执行 finger 命令,它会显示本地主机现在所有用户的登录信息,包括账号名称,真实名称、登录终端,空闲时间、登录时间,以及地址和电话。
语法格式:finger [选项]
常用选项:
-l	列出该用户的账号名称、真实姓名、用户根目录、登录所用的 shell、登录时间、邮件地址、电子邮件状态等
-m	排除查找用户的真实姓名
-s	列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话
-p	列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容

组帐号管理

groupadd命令 – 添加组账号

  • 需要指定GID号时,可以使用’-g’选项
命令执行基本格式
groupadd [-g GID] 组账号名
[root@33 ~]# groupadd -g 1000 market

gpasswd命令–添加删除组成员

  • 设置组账号密码(极少用),添加/删除组成员
命令使用基本格式
gpasswd [选项] 组账号名

常用选项
-a		向组内添加一个用户
-d		从组中删除一个用户成员
-M		定义组成员列表,以逗号分隔
例如:向组内添加一个用户
[root@33 ~]# gpasswd -a 12
例如:从组内删除一个用户
[root@33 ~]# gpasswd -d 12
例如:添加多个用户
[root@33 ~]# gpasswd -M a,b,c,d

groupdel命令–删除组账号

使用命令基本格式
groupdel 组账号名
例如
[root@33 ~]# groupdel  market

文件/目录的权限和归属

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

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

Linux--账号和权限管理_第4张图片

  • 理解权限字段-rw-r–r–的含义
第一个字符“-”		表示文件类型。可以是d(目录),b(块设备文件),c(字符设备文件),“-”普通文件,字母“l”(链接文件)等
第2-4个字符“rw-”	表示该文件的属主用户(User)对该文件的访问权限。
第5-7个字符“r–”	表示该文件的属组内每个成员用户(Group)对该文件的访问权限
第8–10个字符“r–”	表示其他任何用户(Other)对该文件的访问权限
  • 其他字段含义
1				子文件数量
root			属主
root			属组
34298			大小,单位:字节
04-02 00:23		创建时间

Linux--账号和权限管理_第5张图片

chmod命令 – 改变文件或目录权限

  • hmod命令的英文原意是“change the permissions mode of a file”,我们简称为“change mode”,意为用来改变文件或目录权限的命令,但是只有文件的属主和超级用户root才能执行这个命令。有两种模式,一种是采用权限字母和操作符表达式;另一种是采用数字
语法格式: chmod [选项] [文件]
常用选项:
-c	若该文件权限确实已经更改,才显示其更改动作
-f	若该文件权限无法被更改也不显示错误讯息
-v	显示权限变更的详细资料
-R	对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

chown命令 – 改变文件或目录用户和用户组

  • Linux/Unix 属于多用户多任务操作系统,所有的文件皆有拥有者。利用 chown 命令可以将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID,组可以是组名或者组ID,文件是以空格分开的要改变权限的文件列表,支持通配符。 一般来说,这个指令仅限系统管理者(root)所使用,普通用户没有权限改变文件所属者及所属组。
语法格式:chown [选项]
常用选项:
-R	对目前目录下的所有文件与子目录进行相同的拥有者变更
-c	若该文件拥有者确实已经更改,才显示其更改动作
-f	若该文件拥有者无法被更改也不要显示错误讯息
-h	只对于连结(link)进行变更,而非该 link 真正指向的文件
-v	显示拥有者变更的详细资料

umask命令 – 设定权限掩码

  • umask命令可用来设定权限掩码。权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
语法格式:umask [选项] [权限掩码]
常用选项:
-S	以文字的方式来表示权限掩码
-p	输出的权限掩码可直接作为指令来执行

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