【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.mzph.cn/news/169332.shtml

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

相关文章

浅析基于物联网的远程抄表系统的设计及应用

安科瑞 华楠 摘 要&#xff1a;本文基于物联网的概念&#xff0c;使用 ZigBee、通用分组无线服务技术两种无线通信技术相结合的方式实现远程抄表并对数据进行存储和管理。此系统设计主要分为硬件方面的设计和软件方面的设计&#xff0c;硬件方面的设计需要完成三个部分的硬件制…

redis运维(二十)redis 的扩展应用 lua(二)

一 redis 的扩展应用 lua redis lua脚本语法 ① 什么是脚本缓存 redis 缓存lua脚本 说明&#xff1a; 重启redis,脚本缓存会丢失 下面讲解 SCRIPT ... 系列 SCRIPT ② LOAD 语法&#xff1a;SCRIPT LOAD lua代码 -->载入一个脚本,只是预加载,不执行思考1&#xff1…

Vue解析器

解析器本质上是一个状态机。但我们也曾提到&#xff0c;正则表达式其实也是一个状态机。因此在编写 parser 的时候&#xff0c;利用正则表达式能够让我们少写不少代码。本章我们将更多地利用正则表达式来实现 HTML 解析器。另外&#xff0c;一个完善的 HTML 解析器远比想象的要…

PyQt基础_004_ 按钮类控件QPushButton以及自定义按钮控件

Qpushbutton基本操作 1.热键 2.按钮加图标 3.按钮事件等 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class Form(QDialog):def __init__(self, parentNone):super(Form, self).__init__(parent)layout QVBoxLayout()se…

Android 打包aar包含第三方aar 解决方案

Android 打包aar包含第三方aar 因项目需要&#xff0c;打包aar包含第三方aar&#xff0c;如果直接对module进行打包会产生一些问题。 * What went wrong: Direct local .aar file dependencies are not supported when building an AAR. The resulting AAR would be broken be…

如何将Postman API转换JMeter进行扩展

可扩展性 Postman测试无法扩展。如果您的集合中有很多请求&#xff0c;Postman / Newman将使用1个线程&#xff08;用户&#xff09;并按顺序执行这些请求&#xff0c;而不是使用多个线程并发执行。 性能测试能力 由于可扩展性限制&#xff0c;Postman不适合API性能测试。性…

力扣二叉树--总结篇(1)

前言 七天写了二十道题&#xff0c;前面感觉不错&#xff0c;后面越来越写不出来&#xff0c;刷题的心境和效果已然发生了变化。写个阶段总结&#xff0c;及时调整。 内容 先是二叉树的遍历 前序&#xff0c;中序&#xff0c;后序&#xff0c;即对应的递归&#xff0c;迭代…

visual studio 下的git

我这个是看视频笔记 YouTube : https://www.youtube.com/watch?vgkDASVE_Hdg 主要内容是&#xff1a;建立git 库&#xff0c; 保存commit&#xff0c; 建立分支 create branch, 合并分支merge branch,比较 diff&#xff0c;Revert ,history,delete branch, rename branch, t…

金融众筹模式系统源码 适合创业孵化机构+天使投资机构+投资基金会等 附带完整的搭建教程

随着互联网技术的发展和金融市场的开放&#xff0c;金融众筹模式逐渐成为一种新型的融资方式。这种模式通过互联网平台聚集大量投资者&#xff0c;共同参与到一个项目中&#xff0c;为项目提供资金支持&#xff0c;最终获得投资回报。今天罗峰给大家分享一款金融众筹模式系统源…

基于springboot实现学生成绩管理系统项目【项目源码+论文说明】

基于springboot实现学生成绩管理系统演示 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&am…

Spring框架学习 -- Bean的生命周期和作用域

目录 前言 案例 案例分析 作用域的定义 Bean对象的6种作用域 Singleton prototype 设置作用域 ​编辑延迟初始化 Spring的执行流程 Bean的生命周期 前言 我们可以类比一下普通变量的生命周期和作用域, 大多数变量的生命周期和作用域都被限定在了花括号内 {}, 除…

微信公众号快速接入大模型

今天找到一个可以快速将大模型接入公众号的方法&#xff0c;现在跟大家分享一下。 如何让微信公众号接入大模型文案创作能力&#xff0c;实现类似ChatGPT文案创作功能。方法其实很简单&#xff0c;只需打开地址“http://www.botaigc.cn:8900/mpauth”&#xff0c;用微信扫码即可…

根据商品ID获取淘宝数据接口|淘宝商品详情接口|淘宝关键词搜索商品列表接口|淘宝到手价接口|淘宝API接口

淘宝API接口可以运用到多种业务场景中&#xff0c;以下列举了一些主要的场景&#xff1a; 商品信息展示&#xff1a;通过调用淘宝API详情接口&#xff0c;可以获取商品的详细信息&#xff0c;如商品标题、价格、库存、销量、评价等数据。这些信息可以用于在自己的网站或应用程…

实时LCM的ImgPilot搭建部署

ImgPilot是具有实时潜在一致性模型&#xff08;LCM&#xff09;功能的图像试点 下载源码 GitHub - leptonai/imgpilot: Image pilot with the power of Real-Time Latent Consistency Modelhttps://github.com/leptonai/imgpilot安装前端web cd imgpilot npm install 安装…

C++初阶 | [六] 模板初阶

摘要&#xff1a;泛型编程&#xff0c;函数模板&#xff0c;类模板 使用函数重载虽然可以实现&#xff0c;但是有一下几个不好的地方&#xff1a; 重载的函数仅仅是类型不同&#xff0c;代码复用率比较低&#xff0c;只要有新类型出现时&#xff0c;就需要用户自己增加对应的函…

新手如何买卖基金,基金投资基础入门

一、教程描述 本套基金教程&#xff0c;大小2.50G&#xff0c;共有13个文件。 二、教程目录 第01课&#xff1a;基金入门&#xff0c;学会投资其实不难.mp4 第02课&#xff1a;基金分类&#xff0c;琳琅满目清清楚楚.mp4 第03课&#xff1a;以稳取胜&#xff0c;稳健基金稳…

Unity SRP 管线【第三讲:URP 光照】

3.2.3 以前属于Shader部分&#xff0c;Shader部分不进行讲解。 这里只涉及Unity内部管线的设置问题。 文章目录 3.2.3 向GPU发送灯光数据设置光源数据设置主光源设置额外点光源 Shader中的数据 3.2.3 向GPU发送灯光数据 在UniversalRenderPipeline.cs > RenderSingleCamera…

每日一题:LeetCode-105.从前序遍历与中序遍历构造二叉树

每日一题系列&#xff08;day 02&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

【从浅识到熟知Linux】基本指令之基本权限

&#x1f388;归属专栏&#xff1a;从浅学到熟知Linux &#x1f697;个人主页&#xff1a;Jammingpro &#x1f41f;每日一句&#xff1a;用博客整理整理之前学过的知识&#xff0c;是个不错的选择。 文章前言&#xff1a;本文介绍Linux中的基本权限及相关指令用法并给出示例和…

什么是机器学习

前言 机器学习&#xff08;Machine Learning, ML&#xff09;是一个总称&#xff0c;用于解决由各位程序员自己基于 if-else 等规则开发算法而导致成本过高的问题&#xff0c;想要通过帮助机器 「发现」 它们 「自己」 解决问题的算法来解决 &#xff0c;而不需要程序员将所有…