Linux如何管理用户和权限?

本文详细介绍了Linux系统中的用户管理,包括用户标识符(UID/GID)、passwd/shadow文件、权限类别(如读写执行)、文件所有者、组权限、普通权限管理(如ls、chmod)、ACL访问控制以及特殊权限如SetUid、SetGID和粘滞位。此外,还提到了chattr命令用于管理文件系统的隐藏属性。
摘要由CSDN通过智能技术生成

Linux用户管理

用户/组基本概念与特性

系统上的每个进程(正在运行的程序)都以特定用户的身份运行。
每个文件都由特定的用户拥有。
对文件和目录的访问受用户限制。
与正在运行的进程关联的用户确定该进程可访问的文件和目录。

1.查看用户的uid/gid

格式:id 用户名

2.用户基本信息文件

/etc/passwd

“用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell”
(1)用户名

用户名,就是一串代表用户身份的字符串。
前面讲过,用户名仅是为了方便用户记忆,Linux系统是通过UID来识别用户身份,分配用户权限的。/etc/passwd文件中就定义了用户名和UID之间的对应关系。

(2)密码

“x"表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件中。为了防止密码的泄露,现Linu系统把真正的加密密码串放置在/etc/shadow文件中,此文件只有root用户可以浏览和操作,这样就最大限度地保证了密码的安全。需要注意的是,虽然"x"并不表示真正的密码,但也不能删除,如果删除了"x”,那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆。

(3)UID

UID,也就是用户ID。每个用户都有唯一的一个UID,Linux系统通过UID来识别不同的用户。实际上,UID就是一个0~2^32之间的数,不同范围的数字表示不同的用户身份。
在CentOS7的Linux系统中UID:“0”为超管的uid;
“1~999”为系统自行创建的uid,保留给系统使用;
“1000~2^32”为普通用户的uid。

(4)GID

全称“Group ID”,简称“组ID”,表示用户初始组的组ID号。
初始组,指用户登陆时就拥有这个用户组的相关权限。每个用户的初始组只能有一个,通常就是将和此用户的用户名相同的组名作为该用户的初始组。比如说,我们手工添加用户user001,在建立用户user001的同时,就会建立user001组作为user001用户的初始组。
附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。
描述性信息
这个字段没有重要的意义,只用来添加解释。

(5)主目录

用户登录后有操作权限的访问目录,称为用户的主目录。

(6)Shell

Shell就是Linux的命令解释器,是用户和Linux内核之间沟通的桥梁。Linu系统默认使用的命令解释器bash(/bin/bash),如果我把lamp用户的Shell命令解释器修改为/sbin/nologin,那么,这个用户就不能登录了。

3.用户的密码文件

/etc/shadow文件,用于存储Linux系统中用户的密码信息

“用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段”

(1)用户名

同/etc/passwd文件的用户名有相同的含义。

(2)加密密码

这里保存的是由加密算法加密过的密码。(不能在文件中修改,否则系统会无法识别,使得密码失效)

(3)最后一次修改时间

此字段表示最后一次修改密码的时间,可是,为什么用户显示的是18467呢?这是因为Linux计算日期的时间是以1970年1月1日作为1不断累加得到的时间,到1971年1月1日,则为366天。这里显示18467天,也就是说,此账号在1970年1月1日之后的第18267天修改的用户密码。

(4)最小修改时间间隔

最小修改间隔时间,也就是说,该字段规定了从第3字段(最后一次修改密码的日期)起,多长时间之内不能修改密码。如果是0,则密码可以随时修改;如果是7,则代表密码修改后7天之内不能再次修改密码。

(5)密码有效期

为了强制要求用户变更密码,这个字段可以指定(最后一次更改密码)多长时间内需要再次变更密码,否则该账户密码进行过期阶段,该字段的默认值为99999。
密码需要变更前的警告天数
当账户密码有效期快到时,系统会发出警告信息给此账户,提醒用户"再过n天你的密码就要过期了,请尽快重新设置你的密码!"。

(6)账号失效时间

使用自1970年1月1日以来的总天数作为账户的失效时间。该字段表示,账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用!
保留
这个字段目前没有使用。ux系统权限

Linux权限管理

一、权限概述

1、什么是权限

在多用户计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权利。

在Linux 中分别有读、写、执行权限:

相同权限对于文件与目录所代表的含义会有不同

2、Linux中的权限类别

read 读取权限

对于一般文件 有此权限用户就可以读取文件内容(例如 cat命令)

对于目录 有此权限的用户就可以显示目录下的文件列表(例如 ls命令)

write 写入权限

对于一般文件 有此权限用户就可以编辑文件的内容(例如 vim命令)

对于目录 有此权限用户就可以在目录下新建、剪切、删除文件(例如touch、mv、rm等命令)

execute 执行权限

对于一般文件 有此权限用户就可以执行这个脚本文件(例如 . /脚本名 运行脚本)

对于目录 有此权限用户就能够进入到目录(例如cd命令 进入目录)

注意事项

W权限可以单独设置,只对文件进行写入操作 (通过重定向实现)

Linux系统权限的详细介绍:

3、Linux中文件所有者

所有者权限:

文件或目录的所有者可以读取、写入和执行该文件或目录。如果文件或目录的所有者是当前用户,那么用户可以使用chmod命令更改该文件或目录的权限。

所属组权限:

文件或目录的所属组成员可以读取、写入和执行该文件或目录。如果当前用户属于该文件或目录的所属组,那么用户可以使用chmod命令更改该文件或目录的权限。

其他人权限:

文件或目录的其他人可以读取、写入和执行该文件或目录。如果当前用户既不是该文件或目录的所有者,也不属于该文件或目录的所属组,那么用户可以使用chmod命令更改该文件或目录的权限。

所有者的表示方法
① u(the user who owns it)(属主权限)
用u表示,文件所有者,默认为文档的创建者
② g(other users in the file's group)(属组权限)
用g表示,在文件所属组(默认是创建文件的用户的主组)里的用户
③ o(other user not in the file's group)(其他权限)
用o表示,既不是文件的创建者,也不在文件属组里的用户,称为其他人

二、普通权限管理

1、ls查看文件权限

ls命令我们之前学过,用于查看文件信息,这里我们使用之前提到过的一个用法,ll ls -a

2、文件权限详解

Linux 中存在三类身份:

  • 属主(owner拥有者)
  • 属组(group用户组)
  • 其他用户(others)

linux一共有7种文件类型,分别如下:

  • -:普通文件
  • d:目录文件
  • l: 软链接
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如猫等串口设备)
  • s:套接口文件/数据接口文件

img

前10位字符表示含义:

  • 第1位:表示文件类型
  • 第2-4位:表示文件属主(所有者)的权限情况
  • 第5-7位:表示与文件属组(用户组)的用户的权限情况
  • 第8-10位:表示其他(除了属主和属组之外的其他用户)权限情况
3、设置文件/文件夹权限

命令:chmod
语法:# chmod [选项] 权限模式 文件

常用选项:-R:递归设置权限

① 字母形式

(对应前面提到的u g o,r w x的表示方法)

chmod -R u+x aaa.txt
#对于aaa.txt文件,给 属主 增加 执行 权限

chmod -R 多个要增加的权限 文件名

chmod -R g+x,o+x aaa.txt
#对于aaa.txt文件,给 属组 增加 执行 权限,给其他增加 执行权限。

chmod -R 要减少的权限 文件名

chmod -R o-x aaa.txt
对于aaa.txt文件,给 其他 减少 执行权限

chmod -R 要赋予的权限 文件名
示例代码:

chmod -R u=rwx,g=rwx,o=rwx aaa.txt
含义:对于aaa.txt文件,给属主,属组,其他,都 赋予 读,写,执行权限

chmod -R 要赋予的权限 文件夹

示例代码:

chmod -R a=rwx aaafolder
含义:对于aaafolder文件夹,给所有用户(属主,属组,其他),都 赋予 读,写,执行权限
② 数字形式
权限数字
r4
w2
x1
chmod -R 要赋予的权限(数字形式) 文件名
chmod -R 765 aaa.txt
含义:对于aaa.txt文件,给属主所有权限,属组读写权限,其他读和执行权限
  • 全部权限:7 = r+w+x = 4 + 2 + 1
  • 读写权限:6 = r+w = 4 + 2
  • 读和执行:5 = r+x = 4 + 1
  • 综上,u=7,g=6,o=5
ps:umask
1、什么是umask

umask表示创建文件时的默认权限(即创建文件时不需要设置而天生的权限)
例如:
root用户下,touch a ,文件a的默认权限是644
普通用户下,touch b ,文件b的默认权限是664
644和664我们并没有设置,其中的关键因素就是umask
最大默认权限:
文件666
文件夹777

2、umask值

可以使用命令umask来查看umask的值:
基本语法:# umask

默认权限=最高权限-umask

特殊情况仅出现在文件,因为文件[二进制文件除外]没有x执行权限), 所以,查看文件的umask时我们要特别注意是否有奇数位(x表示1)

4、chown修改文件的属主

基本语法: chown [-R] 新文档拥有者名称 文档路径

5、chgrp修改文件的属组

基本语法: chgrp [-R] 新文档组名称 文档的路径
作用:更改文档的所属用户组(change group)

6、chown同时修改属主与属组

语法:chown [-R] username:groupname 文档路径

三、ACL访问控制

ACL,是 Access Control List(访问控制列表)的缩写,在 Linux 系统中, ACL 可实现对单一用户设定访问文件的权限。

基本命令

getfacl命令:查看文件的ACL策略及权限

setfacl命令: 给文件针对某个用户或者某个组来增加(设置)ACL策略

-m:设定ACL权限,u:用户名:权限、g:组名:权限
-x:删除指定的ACL权限
-b:删除所有的ACL权限
-d:设置目录的默认ACL权限,意思是这个命令之后所有新建的文件都具有此ACL权限
-k:删除默认ACL权限
-R:递归设定ACL权限,给目录下所有的文件设定ACL权限,包括命令之前的文件

四、特殊权限

1、设置位S

SetUid

作用:为了让一般使用者临时具有该文件所属主/组的执行权限。s权限只能应用在二进制的可执行文件上。

设置SetUID

chmod 4755 文件名 4代表SUID权限
chmod u+s 文件名

SetGID

#设定SetGID的方法
chmod 2755 文件名 2代表SGID权限
chmod g+s 文件名
#取消SetGID的方法
chmod 755 文件名
chmod g-s 文件名

2、粘滞位T (sticky bit)

语法:# chmod [选项] 文件夹

作用:只允许文件的创建者和root用户删除文件

常用选项:
o+t 添加粘滞位
o-t 去掉粘滞位

五、文件系统属性chattr权限

管理 Linux 系统中的文件和目录,除了可以设定普通权限和特殊权限外,还可以利用文件和目录具有的一些隐藏属性。

chattr 命令,专门用来修改文件或目录的隐藏属性,只有 root 用户可以使用。该命令的基本格式为:

chattr [±=] [属性] 文件或目录名

+ 表示给文件或目录添加属性,- 表示移除文件或目录拥有的某些属性,= 表示给文件或目录设定一些属性。

列出了常用的一些属性及功能。

属性选项功能
i如果对文件设置 i 属性,那么不允许对文件进行删除、改名,也不能添加和修改数据; 如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件;
a如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据; 如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件;
u设置此属性的文件或目录,在删除时,其内容会被保存,以保证后期能够恢复,常用来防止意外删除文件或目录。
s和 u 相反,删除文件或目录时,会被彻底删除(直接从硬盘上删除,然后用 0 填充所占用的区域),不可恢复。

一旦给目录设置 i 属性,即使是 root 用户,也无法在目录内部新建或删除文件,但可以修改文件内容。

查看:lsattr

lsattr [选项] 文件名
-a:显示所有文件和目录
-d:若目标是目录,仅列出目录本身的属性,而不是子文件的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值