Linux账号与权限管理

239 阅读13分钟

一、Linux安全 3A认证

  • A认证(Authentication):验证用户的身份与可使用的[网络服务];

  • A授权(Authorization):依据认证结果开放网络服务给用户;

  • A计帐(Accounting):记录用户对各种网络服务的用量,并提供给计费系统。整个系统在网络管理与安全问题中十分有效。

二、用户的种类

Linux中每个用户是通过 User Id (UID)来唯一标识的 新建用户 1-60000 自动分配 0-65535 端口号

1.超级管理员:拥有最高权限的账户(默认root),可以正常使用。(root, 0)

2.普通用户:权限受限的用户,可以正常使用。(500+ CentOS6以前, 1000+ CentOS7以后 不指定 顺序)

3.程序用户:不可以正常登录,只给程序使用,人不可以使用。(1-499 CentOS 6以前, 1-999 CentOS 7以后)

查看用户的基本信息

格式:id 用户名

image.png 上面看到了四个内容uid,gid,用户所在组,附加组(有则显示,无则不显示)

三、组账号

基于某种特定联系将多个用户集合在一起,构成一个用户组,用于表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组。若该用户同时还包括在其他的组中,这个组称为该用户的附加组。

1、基本组(私有组)

  • 建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组默认只容纳了一个用户。
  • 在用户所属组中的第一个组称为基本组,基本组在 /etc/passwd 文件中指定

基本组:有且唯一

附加组:可有可无,可以有多个

默认新建用户时自动添加同名的组

2、附加组(公共组)

附加组:除了第一个组外的其他组为附加组或公共组,附加组在 /etc/group 文件中指定

四、ID

1、UID

系统用来识别用户的唯一身份标识

UID(User IDentity,用户标识号):Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(UserIDentity,用户标识号),对于操作系统核心来说,UID 是区分用户的基本依据,原则上每个用户的 UID 号应该是唯一的。root 用户账号的 UID 号为固定值 0,而程序用户账号的 UID号默认为1~499,500~60000 的 UID 号默认分配给普通用户使用。

centos7登录用户是从1000起到60000

centos6 500~60000

1-999 预留给系统,叫系统用户,某个程序比如数据库

给人使用的账户是从1000开始

UID范围定义文件

[root@localhost ~]#vim /etc/login.defs      #uid 的范围定义在此文件中

2、GID

系统用来识别组的唯一身份标识

GID(Group IDentify,组标识号):与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为 1~499,500~60000 的 GID 号默认分配给普通组使用。

五、用户账号文件位置及详细解释

与用户账号相关的配置文件主要有两个,分别是/etc/passwd、/etc/shadow。前者用于保存用户名称、宿主目录、登录shell等基本信息,后者用于保存用户的密码、账号有效期等信息。两个配置文件中,每一行对应一个用户账号,不同的配置项之间使用冒号“:”进行分隔。

1、passwd文件中的配置行格式

系统中所有用户的账号基本信息都保存在/etc/passwd文件中,该文件是文本文件,任何用户都可以读取文件中内容。

image.png

在passwd 文件开头的部分,包括超级用户root及各程序用户的账号信息,系统中新增加的用户账号信息将保存到passwd文件的末尾。passwd文件的每一行美容中,包含了七个用冒号“:”分隔的配置字段。

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

2、shadow 文件中的配置行格式

shadow文件被称为“影子文件”,其中保存有各用户账号的密码信息,因此对shadow文件的访问应该进行严格限制。默认只有root用户能够读取文件中的内容,而不允许直接编辑该文件中的内容。

image.png shadow文件的每一行内容中,包含了九个用冒号“:”分隔的配置字段。

  • 第1字段:用户账号名称。
  • 第2字段:使用MD5加密的密码字串信息,当为“*”或“!!”时表示此用户不能登录到系统。若该字段内容为空,则该用户无需密码即可登录系统。
  • 第3字段:上次修改密码的时间。
  • 第4字段:密码的最短有效天数。默认为0,表示不进行限制。
  • 第5字段:密码的最长有效天数。默认为99999,表示不进行限制。
  • 第6字段:提前多少天警告用户口令将过期,默认为7。
  • 第7字段:在密码过期之后多少天内禁用此用户。
  • 第8字段:账号失效时间,默认为空号,表示账号永久可用。
  • 第9字段:保留字段,目前没有特定用途。

六、添加、删除、修改用户账号命令汇总

1.useradd命令 添加用户账号

格式:useradd (选项) 用户名

useradd 指令指令作用
-u指定用户的UID号,要求该UID号未被其他用户使用
-d指定用户的宿主目录位置
-e指定用户的账号失效时间
-g指定用户的基本组名(或使用GID号)
-G指定用户的附加组名(或使用GID号)
-M不建立宿主目录,即使/etc/login.defs系统配置中已设定建立宿主目录
-s指定用户的登录shell

2.passwd命令 修改用户账号属性

passwd指令指令含义
-d清空指定用户的密码,仅仅使用用户名即可登录系统
-l锁定用户账号
-S查看用户账号的状态
-u解锁用户账号

3.usermod命令 修改用户账号属性

usermod指令指令含义
-u修改用户的UID号
-d修改用户的宿主目录位置
-e修改用户的账户失效时间
-g修改用户的基本组名(或使用GID号)
-G指定用户的附加组名(或使用GID号)
-s指定用户的登录shell
-l更改用户账户的登录名称
-L锁定用户账户
-U解锁用户账户

4.userdel命令 删除用户账户

-r 同时删除宿主目录

七、组管理

1.groupadd命令 添加组账号

-g 指定GID

2.gpasswd命令 添加,设置,删除组成员

格式:gpasswd 选项 组成员 -a 添加用户

-d 删除用户

-M:定义组成员列表,以逗号分隔

3.groupdel 删除组账号

4.groups命令 查询用户账号所属组

5.id 查询用户账号的身份识别

6.finger 查询用户账户的登录属性

7.w命令 查询当前主机的用户登录情况

-h 不显示输出信息的标题

-l 用长格式输出

-s 用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间

-V 显示版本信息

image.png

标题含义
USER登录到系统的用户。
TTY登录终端。
FROM表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。
LOGIN@用户登陆的日期和时间。
IDLE表示某个程序上次从终端开始执行到现在所持续的时间。
JCPU和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。
PCPU当前进程所占用的 CPU 运算时间。
WHAT当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。

8.who命令 查询当前登陆的用户信息

选项含义
-a列出所有信息,相当于所有选项。
-b列出系统最近启动的时间日期。
-l列出所有可登陆的终端信息。
-m仅列出关于当前终端的信息,who -m 命令等同于 who am i
-q列出在本地系统上的用户和用户数的清单。
-r显示当前系统的运行级别。
-s仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。
-u显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。
-T 或 -w显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。

finger/w/who三个查询指令的差别。

finger是查询指定用户的详细信息,不管对方是否登录,但也不能同时查询多个用户。 w与who指令是查询当前已登录到主机的所有用户信息,但who指令不能查看who指令正在执行什么命令。

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

程序访问文件时的权限,取决于此程序的发起者

  • 进程的发起者,同文件的属主:则应用文件属主权限
  • 进程的发起者,属于文件属组;则应用文件属组权限
  • 应用文件“其它”权限

访问人群分为了三类

  1. 所属主(u)
  2. 所属组(g)
  3. 其他人 (o)

权限分为三种

  1. 读(r,4)
  2. 写(w,2)
  3. 执行(x,1程序,脚本)

对文件的权限

  1. r 可使用文件查看类工具,比如:cat,可以获取其内容
  2. w 可修改其内容
  3. x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)

对目录的权限

  1. r 可以使用ls查看此目录中文件列表
  2. w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
  3. x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限

1、chomd命令

chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令。

chmod根据mode更改每个给定文件的文件模式位,mode可以是要进行更改的符号表示,也可以是表示新模式位的位模式的八进制数。

符号模式的格式为[ugoa…][±=][perms…][…],其中perms为集合rwxXst中的零个或多个字母,或集合ugo中的单个字母。可以给出多个符号模式,用逗号分隔。字母ugoa的组合控制哪些用户对文件的访问将被更改:

拥有该文件的用户(u)、文件组中的其他用户(g)、不在文件组中的其他用户(o)或所有用户(A)。如果这些都没有给出,效果就好像给出了a,但umask中设置的位不受影响。chmod从不更改符号链接的权限;chmod系统调用无法更改其权限。

image.png

权限符号名字说明
r设置为可读权限
w设置为可写权限
x执行权限设置为可执行权限
X特殊执行权限只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行
ssetuid/gid当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
t粘贴位设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位

格式:

chmod 权限 文件

chmod 参数 权限 文件

选项说明:

参数参数说明
-c若该文件权限确实已经更改,才显示其更改动作
-f若该文件权限无法被更改也不要显示错误讯息
-v显示权限变更的详细资料
-R对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
–help显示辅助说明
--version显示版本

操作符说明

Operator说明
+为指定的用户类型增加权限
-去除指定用户类型的权限
=设置指定用户权限的设置,即将用户类型的所有权限重新设置

用户符号

who用户类型说明
uuser文件所有者
ggroup文件所有者所在组
oothers所有其他用户
aall所用用户, 相当于 ugo

2、chown命令

Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令,chown 需要超级用户 root 的权限才能执行此命令。

chown更改每个给定文件的用户和/或组所有权。如果只提供了所有者(用户名或数字用户ID),则该用户将成为每个给定文件的所有者,并且不会更改文件组。如果所有者后跟冒号和组名(或数字组ID),且两者之间没有空格,则文件的组所有权也会更改。如果用户名后面有冒号,但没有组名,则该用户将成为文件的所有者,并且文件组将更改为该用户的登录组。如果给出了冒号和组,但省略了所有者,则只更改文件组;在这种情况下,chown执行与chgrp相同的功能。如果只给出一个冒号,或者如果整个操作数为空,则所有者或组已更改。

格式: chown [参数] user[:group] 文件

image.png

3、umask指令

umask 的值可以用来保留在创建文件权限

实现方式:

新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变

新建目录的默认权限: 777-umask

非特权用户umask默认是 002

root的umask 默认是 022

image.png

八、总结

  • 1)在给文件或目录设置特殊权限时,其文件对应位上必须拥有可执行权限,否则设置特殊权限无效。如果对应位上没有可执行权限,设置了特殊权限会在对应位上显示大写的字母,表示其特殊权限无效。

  • 2)SUID只能作用于可执行的二进制文件,对目录无效。SGID可作用于可执行二进制文件和目录。Sticky只能作用于目录,对文件无效。

  • 3)都是用chmod 进行授权。对于SUID和SGID都是+/-s,对于Sticky是+/-t;其中SUDI对应user位,SGID对应group位,Sticky对应other位。数字表示法,4表示SUID,2表示SGID,1表示Sticky。