Linux 不懂权限管理,怎么玩骚操作?

简介: 本文主要介绍 Linux中的权限管理

权限入门


1. 文件属性


如果你刚听到 文件属性 这几个字眼感到比较陌生,不要慌张,因为只要你用过 Linux ,你可不会对 ls 或者 ll 这两个命令感到陌生,这两个都是用来查看文件的命令,你在任意一个目录下执行 ls -l 会出现类似以下页面:


网络异常,图片无法展示
|


我们先来详细看下每个部分分别代表什么意思:


网络异常,图片无法展示
|


首先我们先明白 lslist 的意思,用于显示文件的文件名与相关属性,其中 -l是用来列出所有文件的详情权限与属性。


1)权限


我们来看下 drwx------ 这个部分的内容,这个部分我们细数之后发现其中包含 10 个字符:


网络异常,图片无法展示
|


  • 第一栏: 表示该文件是目录、文件或是链接文件等


  • d : 表示目录,上面 www 则为一个名为 www 的目录
  • - : 表示文件,上面 test.txt 则为一个文件
  • l : 表示链接文件【link file
  • b : 表示为设备文件里面可供存储的周边设备
  • c : 表示为设备文件里面的串行端口设备,例如键盘、鼠标(一次性读取设备)


  • 第二栏: 三个字符为一组,表示 文件拥有者可具备的权限


  • 第三栏: 三个字符为一组,加入此用户组的账号拥有的权限


  • 第四栏: 三个字符为一组,表示非本人且没有加入本用户组的其他账号的权限


注:第二栏到第四栏 均为三个字符为一组,其中字符可能出现的有 r、w、x、-,其中【r】 表示可读(read),【w】表示可写(write),【x】表示可执行(execute),【-】表示没有权限。且 rwx 三个的位置是固定的。


小试牛刀:


-rwx-w-r-- 表示的意思?


首先拆为 4 个部分,-   rwx   -w-   r--


  • -: 表示这个表示一个文件


  • rwx: 这个文件的拥有者有着 可读、可写、可执行 的权限


  • -w-: 表示通用户组下的其他账号对该文件拥有 可写 的权限


  • r--: 表示其他用户只能对该文件拥有 可读 的权限


2)链接数


3 表示有多少文件名链接到此节点(inode),每个文件都会将它权限与属性记录到文件系统的 inode 中,不过我们使用的目录树却是使用文件名来记录,因此每个文件名就会链接到一个 inode ,这个属性记录的就是有多少不同的文件名链接到相同的一个 inode 号码。


3)拥有者


表示这个文件(或目录)的拥有者账号。


4)用户组


表示这个文件的所属用户组,我们在 LINUX 中,一个账号会加入一个或多个用户组中。如果不属于同一个用户组的账号就不具备对该文件(或目录)的相应权限。


5)文件容量


表示该文件的容量大小,默认单位是 Bytes


6)修改日期


表示这个文件的创建日期或者最近的修改日期,如果该文件被修改的时间距离太久,那么时间会仅显示年份,而不会具体到月、日以及时间。不过我们可以使用 --full-time 来显示完整的时间:


网络异常,图片无法展示
|


7)文件名


表示文件名,如果文件名之前有 [ . ] ,则表示该文件为隐藏文件,平时使用ls 或者 ll 不会显示出隐藏文件,我们可以使用 ls -a 来显示所有文件:


网络异常,图片无法展示
|


2. 何为权限


在我们还没接触 Linux 之前,接触最多的便是 windows 系统了,在 windows 系统中我们好像没有感受到权限的存在,只有在系统盘的部分文件需要管理员权限,但是这些权限也不是我们直接管理的。


但是在 Linux 中每个文件都添加了很多属性,而且还加入了用户组的概念,这些功能并非毫无用途,说到底便是保护 数据安全性


权限有何用处


  • 保护系统功能


Linux 系统中,root 用户可以对系统服务进行 读写和执行 操作。如果没有权限的限制,每个用户都可以操作系统文件,那是一件非常危险的事情,重则造成服务器瘫痪。


  • 数据隔离和共享


Linux 系统中存在 用户组 的概念,一个账号可以加入一个或多个用户组。用户组其实也相当于一个 团队 的概念。同一个团队的队员可以进行数据的共享,而不能看到其他团队的数据信息。如果我们要保证其他团队的队员不能看到本团队的数据,那么就应该建立一个用户组,然后给对应的文件赋予 rwxrwx---,这样子就是除了文件拥有者和文件用户组可以对该文件进行 读写执行 操作,其他用户都不能使用。


3. 实际修改


我们先了解下权限有关的三个指令:


  • chgrp:修改文件所属用户组


  • chown:修改文件拥有者


  • chmod:修改文件的权限


1)chgrp


这个指令是用来修改文件所属用户组的,对单词比较敏感的小伙伴可能会猜到这个指令是 change group 的缩写,当你了解到是 change group  的缩写后是不是就会感觉记得比较清楚啦。


既然这个指令是用来修改文件所属的用户组的,那么前提就是这个用户组是存在的,也就是 /etc/group 这个文件里存在,否则会报错的。


小菜扩展


创建用户组:groupadd 用户组名称,示例如下:


网络异常,图片无法展示
|


删除用户组:groupdel 用户组名称,示例如下:


网络异常,图片无法展示
|


创建用户:useradd -m -g 组 新建用户名,示例如下:


网络异常,图片无法展示
|


我们现在 /home 的目录下建一个 chgrp 的文件夹,里面有个 text.txt文件,如下:


网络异常,图片无法展示
|


我们从图中可以看到这个文件的所属用户组是root,这个时候我们想把这个文件的用户组改为test ,需要如下操作:


网络异常,图片无法展示
|


通过chgrp test text.txt已经成功将该文件的用户组改为 test 了。


2)chown


这个指令是用来修改一个文件的拥有者的。没错,这个指令便是change owner 单词的缩写。


使用这个指令的前提便是,用户必须是已经存在该系统中,也就是在 /etc/passwd 这个文件中有记录的文件名称才能修改。上面我们已经在扩展中介绍了如何创建用户,小伙伴们记得动手试一试。


chown 的用途比较多,它可以直接修改所属的用户组,而且如果要连目录下的所有子目录或者文件同时更改文件拥有者的话,直接加上 -R 的选项即可。


基本命令:


chown [-R] 账号名称 文件/目录
chown [-R] 账号名称:用户组名称 文件/目录
注:
-R 是进行递归修改,连同子目录一下的所有文件都修改


示例:


网络异常,图片无法展示
|


/home/chown 的目录下有个 test 目录,test 目录下有个 test.txt 文件,这两个的拥有和用户组均是 root。这是我们使用 chown 来修改 test 这个目录的拥有者:


chown cbuc test


网络异常,图片无法展示
|


可以看到 test 这个目录的拥有者已经被修改成了 cbuc 这个用户,但是 test 目录下的 test.txt 并没有被修改,这个时候我们加上 [-R] 这个参数试一下:


chown -R cbuc test


·

网络异常,图片无法展示
|


可以看到两个的拥有者都已经修改成了 cbuc 这个用户,我们再试下同时修改用户组:

chown cbuc:test test


网络异常,图片无法展示
|


这样子我们就可以很方便的使用 chown 这个指令来修改文件的用户组和拥有者了。


3)chmod


这个指令是用来修改文件的权限,权限的设置可以分为两种,分别是使用 数字修改符号修改


数字类型修改文件权限


在上面我们可以看到权限包括 **读(read)、写(write)、执行(execute)**这三种,同时存在三种身份,分别是 拥有者(owner)、所属群组(group)、其他人(others)


权限字符分别为 : r w x 。其种每个字符分别对应的数字如下:


  • r4


  • w2


  • x1


这样子如果一个文件权限为 : -rwxrwxrwx


它的计算规则便是:


  • owner:4+2+1 = 7


  • group:  4+2+1 = 7


  • others:4+2+1 = 7


这样子与 chmod 相结合的方式便是 chmod 数字 文件/目录,同时 chmod 也支持递归的操作,同样加上参数 [-R]chmod -R 数字 文件/目录


示例:


网络异常,图片无法展示
|


我们可以看到 test 这个文件夹中用户组拥有的权限是r-w ,也就是可读、可执行,这个时候如果我们赋给用户组 可读、可写、可执行 的权限,我们可以这样做:


chmod 775 test


网络异常,图片无法展示
|


这个时候,test 文件夹的用户组权限就变成了可读、可写、可执行


如果我们想要让 test 文件夹下的 test.txt文件也变成跟 test文件夹一样的权限,我们可以加上 [-R] 参数,也就是 chmod -R 775 test,这样子 test文件夹下的子目录和子文件都会相对应修改。


符号类型修改文件权限


上面我们介绍了通过数字类型修改文件权限,我们还可以通过符号修改。我们也已经知道了Linux 中存在三种身份,分别为 user、group、others,那么我们就可以借由 u、g、o 三个字符来表示是三种身份的权限,此外还有个 a,即代表全部的身份,使用方法如下:


网络异常,图片无法展示
|


使用方式:


  • chmod u=rwx,go=wx text


这个指令的意思就是给拥有者赋予rwx权限,用户组和其他用户赋予wx权限


  • chmod a+w test


这个指令的意思就是给所有身份加上 可读 的权限


  • chmod a-w test


这个指令的意思就是给所有的身份移除 可读 的权限


小菜扩展


1. 文件种类


网络异常,图片无法展示
|


我们在上面已经看到了这张图,也已经了解到 d 这栏代表的是文件的种类,而且我们平时比较常见的是 -d 这两种类型,那么除了这两种类型之外还有哪些种类的文件呢?


1. 常规文件(regular file)


这个指的是我们在进行读写的类型的文件,表示字符便是 -,常规文件中我们也可以分为以下几种:


  • 纯文本文件(ASCII):这是 LINUX 中最多的一种文件类型,这种文件类型是我们可以直接读到的数据,例如数字、字母等。


  • 二进制文件(binary):一般来说可执行的文件(除了脚本文件)就是这种文件类型的,比如执行指令 lscd这些就是一个二进制文件。


  • 数据文件(data):有些程序在运行的过程中会读取某些特定格式的文件,那些特定格式的文件就是数据文件。


2. 目录(directory)


这是指的就是目录,表示字符为 d


3. 链接文件(link)


类型 windows 系统中桌面上的快捷方式,表示字符为 l


4. 设备与设备文件(device)


与系统周边及存储等相关的一些文件,通常都集中在/dev 这个目录之下,通常又分为两种:


  • 区块(block)设备文件 :就是一些存储数据,以提供系统随机存取的接口设备。表示字符为 b


  • 字符(character)设备文件 :是一些串行端口的接口设备,例如键盘、鼠标等。表示字符为 c


5.  数据接口文件(sockets)


这种类型的文件通常被用在网络上的数据交换。一般在/run/tmp这些目录下,表示字符为s


6. 数据输送文件(FIFO,pipe)


FIFO 也是一种特殊的文件类型,他主要的目的是解决多个程序同时读写一个文件所造成的错误问题,表示字符为p


2. 文件扩展名


事实上,Linux 的文件是没有所谓的扩展名。在 windows 系统中,能被执行的文件扩展名通常是 .com、.exe、.bat 等,而在 Linux 系统中,不需要扩展名,我们只需要这个文件具备可执行的权限,也就是 x


一个文件具备了 x 可执行的权限,只能代表他具有可执行的能力,而不一定可以执行成功。能否执行成功取决于该文件的内容。


那么在 Linux 中常见的扩展名有哪些呢:


  • *.sh :表示 脚本批处理文件


  • *.Z、*.tar、*.tar.gz、*.zip、*.tgz :这些都是表示经过打包的压缩文件


  • *.html、*.php :网页相关文件,代表 HTML 语法或 PHP 语法的网页文件


目录
相关文章
|
1月前
|
Linux Shell
Linux系统文件默认权限
Linux系统文件默认权限
|
1天前
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
15 1
linux特殊权限!!
|
1天前
|
Linux 数据安全/隐私保护
linux权限管理
本文介绍了Linux系统中的权限管理,包括权限的概念、用户和用户组与权限的关系、文件权限位的说明以及rwx权限的具体含义。同时,详细讲解了如何使用`chmod`和`chown`命令更改文件和目录的权限,并通过多个实验演示了不同权限组合对文件和目录的实际影响。最后,总结了文件和目录权限的一些重要知识点,帮助读者更好地理解和应用Linux权限管理。
15 1
linux权限管理
|
1月前
|
Linux 数据安全/隐私保护
探索Linux操作系统下的权限管理
【8月更文挑战第66天】在数字世界中,操作系统的权限管理就如同现实世界中的钥匙和锁,保护着我们的数据安全。本文将带你深入理解Linux系统中的权限设置,通过实际代码示例,让你掌握文件和目录权限的分配与管理技巧。准备好了吗?让我们开始这场关于权限管理的探险之旅吧!
82 14
|
1月前
|
运维 监控 安全
Linux_权限理解(详细PLUS)
【10月更文挑战第3天】本文介绍了Linux系统中的权限管理基础,包括文件系统对象与权限关联、权限的继承性、字符与数字表示法的解读,以及用户、组与权限的动态交互。详细解析了`chmod`命令的高级用法和权限修改的风险,探讨了SUID、SGID和Sticky Bit等特殊权限的作用机制,并提出了基于角色的权限分配和定期权限审计的最佳实践。
54 11
|
29天前
|
Linux 应用服务中间件 nginx
Linux下权限设置之suid、sgid、sticky
Linux下权限设置之suid、sgid、sticky
|
29天前
|
Linux 数据安全/隐私保护 Windows
Linux_权限理解(详细PLUS
Linux_权限理解(详细PLUS
|
29天前
|
网络协议 Linux 网络安全
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
【Linux】用户和权限及实用操作------迅速了解用户和权限及其实用操作
|
30天前
|
Linux Go 数据安全/隐私保护
Linux入门2——初识Linux权限
Linux入门2——初识Linux权限
24 0
|
3月前
|
存储 安全 Linux
Linux权限之谜:一步步教你如何解锁sudo权限并窥视/etc/shadow的神秘面纱!
【8月更文挑战第22天】在Linux中,`sudo`命令让授权用户能以其他用户(通常是root)身份运行命令。关键的安全文件`/etc/shadow`存储用户密码哈希,仅root可读。要使用`sudo`,需确保账户被列入`sudoers`文件中。系统管理员可通过`visudo`编辑此文件来赋予用户权限,例如添加`username ALL=(ALL) NOPASSWD: ALL`行。获得`sudo`权限后,可运行`sudo cat /etc/shadow`查看文件内容,但需谨慎操作以免影响系统安全。遵循最小权限原则,确保安全使用这些强大工具。
78 2