【Linux】Linux权限管理

目录

一、Linux中权限的概念

二、 Linux下的用户

2.1 用户的类型

2.2 用户创建、切换和删除

2.2.1 'useradd'或'adduser'命令创建用户

2.2.2 'passwd'命令设置用户密码

2.2.3 'userdel'命令删除用户

2.2.4 'su'命令切换用户身份等来管理和操作用户

2.3 注意事项

三、权限的管理

3.1 文件类型和基本权限

3.2 文件访问者的分类

3.3 文件权限值的表示方法

3.4 文件访问权限的相关设置方法

3.4.1 chmod命令来设置文件的访问权限

3.4.2 chown修改文件或目录的所有者

3.4.3 chgrp修改文件或目录的所属组

3.4.4 umask查看或修改文件掩码

3.5 目录的权限

3.6 粘滞位

3.7 普通用户使用sudo提权 


一、Linux中权限的概念

Linux权限是保证系统安全性的重要手段,也是Linux系统的基础之一。

  • Linux权限是指对文件和目录所具有的操作权限,涉及到文件和目录的读(r)、写(w)和执行(x)权限。
  • Linux文件访问者有三种,分别是所有者(User)、所属组(Group)和其他用户(Others)
  • 文件的访问者可以根据其角色和权限的不同进行分类每个类别的访问者拥有不同的权限来访问或操作文件。这种分类和权限设置机制有助于提高文件的安全性和保护用户的隐私。 

下面来详细介绍以上信息。


二、 Linux下的用户

2.1 用户的类型

在Linux系统中,每个用户都有一个唯一的用户名和用户ID(UID),用于标识和管理用户。Linux下的用户可以分为以下几种类型:

1. 超级用户(root):超级用户拥有系统中最高权限,并可以执行系统级别的管理任务。超级用户可以访问和修改系统的所有文件和设置。

2.  普通用户:普通用户是指一般的系统用户,它们是由管理员创建并分配给系统的普通用户账户。普通用户具有较低的权限,只能访问和修改自己的文件和一些共享的资源。

除了上述类型的用户之外,还可以有其他用户类型,如系统用户、组用户、FTP用户等,以满足特定的需求。

设置不同类型用户的好处:

通过为不同用户分配适当的权限,可以控制他们对系统资源的访问和操作范围,从而提高系统的安全性和管理效率。

注: 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。输入命令时要注意。

2.2 用户创建、切换和删除

在Linux系统中,可以使用'useradd'命令创建用户,'userdel'命令删除用户,'passwd'命令设置用户密码,'su'命令切换用户身份等来管理和操作用户。每个用户都有自己的家目录(Home Directory),用于存储其个人文件和配置信息。

2.2.1 'useradd'或'adduser'命令创建用户

'adduser'和 'useradd'的区别

root 用户执行: adduser user1 或 useradd -m user2

普通用户执行:sudo adduser user1sudo useradd -m user2

useradd选项:

  • -d: 指定用户的主目录
  • -m: 如果目录存在不再创建,但是此目录并不属于新创建用户;
             如果主目录不存在,则强制创建;
  • -M: 不创建主目录

执行 # sudo useradd -m user2 时需要输入普通用户的密码。 

 

2.2.2 'passwd'命令设置用户密码

在root用户输入:passwd 用户名 

接着会让你输入密码和确认密码,此时密码是不显示的,输入时要注意密码的正确。

2.2.3 'userdel'命令删除用户

在root用户输入:userdel [选项] 用户名 

常用的选项是 -r,它的作用是把用户的主目录一起删除。

# userdel -r user1

 此命令删除用户user1在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

2.2.4 'su'命令切换用户身份等来管理和操作用户

su是switch user的缩写,表示用户切换

例如,要从root用户切换到普通用户user1使用 su user1。
从普通用户user1切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码

2.3 注意事项

  1. 创建用户时要指定合适的用户名和密码,并设置适当的用户组和权限。通常情况下,应该为每个用户创建一个单独的帐户,并设置强密码以保证安全。
  2. 切换用户时要确保已经正确退出当前用户的所有进程和程序。否则,可能会导致权限问题或数据损坏等问题。使用su命令进行用户切换,在完成操作后应及时退出当前用户。
  3. 删除用户时要谨慎操作,并确保备份了该用户的数据和配置文件。一旦删除用户,其所有的数据和文件都将被永久删除,无法恢复。因此,在删除用户之前应该先备份重要数据和文件,并仔细考虑是否真的需要删除该用户。
  4. 用户密码的管理也是非常重要的。管理员应该鼓励用户使用强密码,并定期更换密码。同时,还可以设置密码策略来限制密码的长度、复杂度和有效期等,以提高系统的安全性
  5. 定期清理:定期审查系统中的用户账户,删除已经不再需要的账户,以防止废弃账户被滥用。

三、权限的管理

3.1 文件类型和基本权限

在之前的练习中,不知道大家有没有注意到,.c文件编译生成可执行程序时,不用或者写错可执行程序的后缀也可以执行该程序。可执行程序改后缀名后仍可运行

这是因为Linux区分文件类型,与后缀无关,用文件属性中第一列的第一个字符来区分文件的类型,加上后缀是为了让用户区分。

文件的权限由一串符号表示,如drwxr-xr-x,其中第一个字符表示文件类型,后面的三组字符分别表示所有者、所属组和其他人的权限。

文件类型:

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

基本权限

  • 读 -r:Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • 写 -w:Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 执行 -x:execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • “-”表示不具有该项权限

 

 注:

  1. Linux区分文件类型与后缀无关,不代表gcc不根据后缀区分文件,为了保持一致性和便于区分文件类型,命名时推荐加上后缀。
  2. 需要注意的是,对于目录来说,执行权限有特殊含义。执行权限(x)对于目录来说表示能否进入该目录和访问其中的文件。因此,如果想要在一个目录下创建或删除文件,必须具有该目录的执行权限。

3.2 文件访问者的分类

前面讲到:

  • Linux文件访问者有三种,分别是所有者(User)、所属组(Group)和其他用户(Others)
  • 文件的访问者可以根据其角色和权限的不同进行分类每个类别的访问者拥有不同的权限来访问或操作文件。这种分类和权限设置机制有助于提高文件的安全性和保护用户的隐私。
  1. 所有者 -u(User):所有者是创建文件的用户或进程,拥有对文件的完全控制权(root用户拥有完全控制权)。所有者可以读取(r)、写入(w)和执行(x)文件,也可以更改文件的权限和属性。
  2. 所属组 -g(Group):所属组是指与文件相关联的用户组。所有属于该组的用户都被称为文件的所属组成员。所属组具有一定的权限来访问文件,权限可以是读取(r)、写入(w)或执行(x),具体权限由文件的权限设置决定。
  3. 其他用户 -o(Others):其他用户指的是既不是文件的所有者也不是文件的所属组成员的用户。其他人的权限也受到文件的权限设置的限制。同样,权限可以是读取(r)、写入(w)或执行(x)。

为什么要有所属组:

①方便共享资源。将多个用户归为一个组,可以方便地共享资源,如文件、目录等,避免重复创建和管理。

②方便管理和控制。将多个用户归为一个组,可以方便地管理和控制他们对某些文件或目录的访问权限,避免不必要的混乱和冲突。

③提高安全性。通过设置所属组的权限,可以限制某些用户对关键文件或目录的访问,提高系统的安全性。

注:

  1. 只有文件的所有者才能修改文件的权限和所有者
  2. 一个组内可以只有一个人也可以有很多人,用组长的名字来对组的命名。
  3. 每个文件都有一个所有者和一个所属组,同时还有一组权限控制了不同类别的访问者对文件的访问权限。所有者可以设置文件和目录的读、写、执行权限,用来控制其他用户对这些文件和目录的访问。

总之,在Linux中,文件的访问者可以根据其角色和权限的不同进行分类,每个类别的访问者拥有不同的权限来访问文件。这种分类和权限设置机制有助于提高文件的安全性和保护用户的隐私。

3.3 文件权限值的表示方法

1、字符表示方法

Linux表示

说明Linux表示说明
r--只读-w-仅可写
--x仅可执行rw-可读可写
-wx可写和可执行r--可读可执行
rwx可读可写可执行---无权限

2、8进制数值表示方法

权限符号(读写执行)八进制二进制
r4100
w2010
x1001
rw6110
rx4101
wx3011
rwx7111
---0000

3.4 文件访问权限的相关设置方法

3.4.1 chmod命令来设置文件的访问权限

chmod命令可以通过数字模式或符号模式来设置权限。

1、数字模式(三位8进制数字):

命令格式:chmod [XYZ] fileName,其中XYZ是三个8进制数字,分别表示所有者、所属组和其他人的权限。

每个权限有一个对应的数字值,r(读取)= 4,w(写入)= 2,x(执行)= 1。
使用数字模式时,将各个权限的数字值相加即可得到所需的权限组合

例如,将文件example.txt的所有者权限设置为读写(rw),所属组权限设置为读取(r),其他人权限设置为无(---),可以使用命令:chmod 640 example.txt


2、符号模式(+、-、=):

使用符号模式时,可以使用加号(+)和减号(-)来添加或移除权限,同时使用字母表示权限。

符号表示法由3部分组成:谁(u、g、o、a)做什么(+、-、=)和(权限字符)。
u表示所有者,g表示所属组,o表示其他人,a表示所有人。

+表示添加权限,-表示移除权限,=表示设置权限为指定值。

例如,要将文件example.txt设置为所有者具有写权限,所属组和其他人具有执行权限,可以使用命令:chmod u+w,go+x example.txt


其中,u+w表示给所有者添加写权限,go+x表示给所属组和其他人添加执行权限。

3.4.2 chown修改文件或目录的所有者

功能:修改文件或目录的所有者。
格式:chown [参数] <用户名> <文件或目录>
使用-R选项来递归修改目录及其子目录中的所有文件的所有者

例如,要将文件file.txt的所有者修改为user2:

sudo chown -R user2 file.txt

 还可以通过指定用户和组的组合来修改所有者,使用冒号(:)分隔:
例如  chown zzx:root file.txt
拥有者为zzx,所属组为root

3.4.3 chgrp修改文件或目录的所属组

功能:修改文件或目录的所属组。
格式:chgrp [参数] <所属组> <文件或目录>

使用-R选项来递归修改目录及其子目录中的所有文件的所属组

要将文件file.txt的所属组修改为group:

chgrp group file.txt

同样地,可以通过指定用户和组的组合来修改所属组:

chgrp user:group file.txt

递归修改目录及其子目录中的所有文件的所属组:

chgrp -R group directory/

注:只有root用户或文件的所有者才能使用chown和chgrp命令修改文件的所有者和所属组。此外,修改文件的所有者和所属组可能需要管理员权限。所以上面命令不能执行时要加上sudo。

3.4.4 umask查看或修改文件掩码

新建文件默认权限=0666,新建目录默认权限=0777 


但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。
原因就是创建文件或目录的时候权限还要受到umask的影响

权限掩码(umask)是一个用来设置新创建文件或目录默认权限的参数(三位八进制数)。
它决定了在创建新文件或目录时要屏蔽掉的权限位。
umask中的每一位对应一个权限位,如果对应位设置为1,则表示对应权限位被屏蔽,不会出现在新创建文件或目录的默认权限中。

假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask 

例如,如果umask值为022,则表示屏蔽掉组和其他用户的写权限
那么,在创建新文件时,默认权限就会去掉写权限,即644(rw-r--r--);
在创建新目录时,默认权限会去掉写和执行权限,即755(rwxr-xr-x)。

 注意:

  1. umask值只影响新创建的文件和目录的默认权限,不会影响已经存在的文件和目录的权限。
  2. 通过合理设置umask值,可以控制新创建文件和目录的默认权限,从而提高系统的安全性。

umask的使用

使用umask命令可以查看当前的umask值:

umask

使用umask命令可以设置新的umask值,例如将umask设置为022:

umask 022

 最终权限值 = 默认权限值 & (~umask)

3.5 目录的权限

  • -x 可执行权限: 目录没有可执行权限, 则无法cd到目录中.
  • -r 可读权限: 目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • -w 可写权限: 目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

注意: 

  1. 目录的可执行权限是表示你可否在目录下执行命令。
  2. 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  3. 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
  4. 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

一个文件一定是属于一个目录的,
一个文件属性能不能查看,是由目录是否具有r权限决定的.
一个文件能不能被创建或删除,由文件所属目录是否有w权限决定,与文件本身的权限无关。

一般而言,不同的账号是不会在同一个目录的,但是如果我们多个账号想互相协同,共享一些数据呢?那他们就有了目录的w权限,岂不是他们就可以随意在该目录里面新建和删除了吗?
答案是可以的。

[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld 
drwxrwxrwx. 3 root root 4096 11月 23 15:58 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r--r--. 1 root root 0 11月 23 15:58 abc.c
drwxr-xr-x. 27 user1 user1 4096 11月 23 15:53 user1
-rw-r--r--. 1 root root 0 11月 23 15:59 root.c
[root@localhost ~]# su - litao
[user1@localhost ~]$ rm /home/root.c #user1可以删除root创建的文件
rm:是否删除有写保护的普通空文件 "/home/root.c"?y
[user1@localhost ~]$ exit 
logout

 为了解决这个不科学的问题, Linux引入了粘滞位的概念

3.6 粘滞位

功能:限制对目录的删除操作。

格式:chmod -t <目录>

当一个目录被设置为"粘滞位",则该目录下的文件只能由

  1. 超级管理员删除
  2. 该目录的所有者删除
  3. 该文件的所有者删除
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 11月 23 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作

注意:

  1. 粘滞位只对目录起作用,对文件没有影响。因此,不能将粘滞位应用于文件。
  2. 粘滞位常常用于公共目录,如/tmp目录,以防止其他用户删除其他用户的文件。

3.7 普通用户使用sudo提权 

前面在创建用户和修改文件时用到了sudo指令,下面来详细介绍。

sudo是linux系统管理指令,允许系统管理员让普通用户执行一些或者全部的root命令。

格式:sudo [命令]

实例:

$ sudo useradd -m user2
$ sudo chown -R user2 file.txt
  • 当我们使用非root用户,且不在信任列表中,sudo命令进行提权,输入的是用户的密码,而不是root的密码。当没有添加用户到信任列表中,用户就无法进行sudo

添加用户到信任列表的步骤:

  1. 切换为root用户(需要知道root用户的密码)
  2. 执行命令vim /etc/sudoers
  3. 然后在一个配置文件目录下的信任列表文件里进行修改
  4. 按照相同格式添加用户,wq!强制保存退出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/218270.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

了解抽象思维的应用与实践

目录 一、快速了解抽象思维 &#xff08;一&#xff09;抽象思维的本质理解 &#xff08;二&#xff09;系统架构中的重要性 &#xff08;三&#xff09;软件开发中抽象的基本过程思考 意识和手段 抽象的方式 抽象层次的权衡 二、业务中的应用实践 &#xff08;一&…

5.3每日一题(不确定正负号的级数敛散性:和一个正项级数比较判定)

比较判别法和比较判别法的极限形式是对正项级数而言的&#xff0c;若一个级数和p级数比较&#xff0c;结果>0&#xff0c;则同敛散&#xff1b;若结果<0&#xff0c;则结果乘以-1 结果又同敛散了&#xff1b;所以只要比值不等于0&#xff0c;则同敛散&#xff1b; 所以当…

【测试开发工程师】TestNG测试框架零基础入门(上)

哈喽大家好&#xff0c;我是小浪。那么今天是一期基于JavaTestNG测试框架的入门教学的博客&#xff0c;从只会手工测试提升到自动化测试&#xff0c;这将对你的测试技术提升是非常大的&#xff0c;有助于我们以后在找工作、面试的时候具备更大的竞争力~ 文章目录 一、什么是T…

Lombok新版超全面使用教程

一、Lombok介绍 Lombok是一个Java库&#xff0c;可以通过注解来简化Java类的编写&#xff0c;减少冗余的样板代码。它提供了一系列的注解&#xff0c;用于自动生成常见的代码&#xff0c;如getter和setter方法、构造函数、equals和hashCode方法、toString方法等。通过使用Lomb…

【matlab程序】图像最大化填充画布

【matlab程序】图像最大化填充画布 不做任何修饰&#xff1a; 修饰&#xff1a; 图片 往期推荐 图片 【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件 【python海洋专题二】读取水深nc文件并水深地形图 【python海洋专题三】图像修饰之画布和坐标轴 【Pytho…

停车管理系统

1 用户信息管理 2 车位信息管理 3 车位费用设置 4 停泊车辆查询 5 车辆进出管理 6 用户个人中心 7 预定停车位 8 缴费信息 9 业务逻辑详解 1 用户停车&#xff1a;user用户登录&#xff0c;在预定停车位菜单&#xff0c;选择一个车位点击预定即可 2 车辆驶出&#xff1a;admin…

原生javascript实现放大镜效果

效果图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>放大镜</title><style&g…

h5小游戏-盖楼游戏

盖楼游戏 一个基于JavaScrtipt、Html5 的盖楼游戏 效果预览 点我下载源代码 Game Rule 游戏规则 以下为默认游戏规则&#xff0c;也可参照下节自定义游戏参数 每局游戏生命值为3&#xff0c;掉落一块楼层生命值减1&#xff0c;掉落3块后游戏结束&#xff0c;单局游戏无时间限…

基于opencv+ImageAI+tensorflow的智能动漫人物识别系统——深度学习算法应用(含python、JS、模型源码)+数据集(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境爬虫模型训练实际应用 模块实现1. 数据准备1&#xff09;爬虫下载原始图片2&#xff09;手动筛选图片 相关其它博客工程源代码下载其它资料下载 前言 本项目通过爬虫技术获取图片&#xff0c;利用OpenCV库对图像进行处理&a…

如何处理git多分支

本篇文章主要处理以下两种多分支问题 如何将自己在本地的修改上传到一个新的Git分支&#xff08;比如用于测试&#xff0c;不合并进main分支&#xff09;&#xff1f;如何在一个新的本地仓库拉取一个项目的非main分支&#xff0c;并处理他们关联关系&#xff1f; 1. 将自己在…

概率论与数理统计中常见的随机变量分布律、数学期望、方差及其介绍

1 离散型随机变量 1.1 0-1分布 设随机变量X的所有可能取值为0与1两个值&#xff0c;其分布律为 若分布律如上所示&#xff0c;则称X服从以P为参数的(0-1)分布或两点分布。记作X~ B(1&#xff0c;p) 0-1分布的分布律利用表格法表示为: X01P1-PP 0-1分布的数学期望E(X) 0 *…

试写一算法将两个递增有序的带头结点的单链表合并为一个递增有序的带头结点的单链表。(利用原表结点空间)

试写一算法将两个递增有序的带头结点的单链表合并为一个递增有序的带头结点的单链表。 &#xff08;利用原表结点空间&#xff09; 比如现在要将下面两个链表合并&#xff0c;这里是要求利用原表空间 我们先创建一个辅助的链表L3&#xff0c;用p和q分别标记L1和L2的数据元素&…