Linux(基本权限)

文章探讨了权限在IT中的应用,涉及人、资源属性关联、Linux文件权限(如读写执行)、用户角色划分(文件拥有者、组、其他),以及如何通过chmod、chown等命令管理和修改文件权限,包括目录权限、默认权限、umask和粘滞位的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 权限的相关概念

权限第一和人有关,她一定是为了限制一批人,放过一批人,所以可以根据特定的人群进行权限的设定,第二个是和人想要访问的某种资源的特定属性相关,或者说和事物的属性相关,比如说想在gitee上看视频,这是没有这个权限的,因为gitee并没有看视频的属性。所以谈论权限是什么样的人在什么样的文件中具备什么权限。

权限是限制人的,还要考虑访问的对象天然可能没有这种属性的情况。权限=人+事物属性

linux下文件可以有的属性是读、写、执行。

linux下不用文件后缀区分文件类型,而是用文件属性中第一列的第一个字符来区分文件类型

-:普通文件、文本、可执行程序、归档文件等;d:目录。那么我们应该如何看待后缀?linux虽然不以后缀来区分文件,但是后缀可以给人看,我们可以将后缀当作文件名的一部分。而且linux操作系统不以后缀来区分文件,并不代表linux下的工具比如说编译器gcc或者其它软件不关心文件的后缀。

linux下将用户进行了角色划分:文件拥有者、文件所属组、other  

该如何描述权限:首先要分成拥有者、所属组以及other是谁以及各个角色的权限,权限=人+事物属性,这里事物属性就是对应角色所对应的文件角色属性。

普通用户切换成root用户:su并输入root用户密码;su-和su的的区别是前者是相当于重新登录也就是切换了用户身份并且还处于当前用户身份的家目录下。普通用户a切换到普通用户b需要用户b的密码,但是如果root身份切换到普通用户是不需要输入密码的。

如何对操作文件权限?(newfile.txt的拥有者是我)

一般而言要修改一个文件的权限一定要是该文件的拥有者或者root

chmod u(user拥有者)+r newfile.txt

chmod g(所属组)+w newfile.txt

chmod o(other)+rx newfile.txt

chmod o(other)-rwx newfile.txt

chmod a(all所有人)+wrx newfile.txt等价于chmod 777 newfile.txt

更改文件的而拥有者?

chown root newfile.txt,也就是将newfile.txt文件的拥有者改成root用户,当时该操作不被允许,因为当我们想把一个东西给别人的时候,需要经过别人的允许,但是现实情况在Linux系统下进行该操作的时候无法保证对方在,所以一般采用的方式是强制给,但是强制给的权限只有root用户才具备,所以需要切换到root身份或者采用sudo命令强制给。

更改文件的所属组?chgrp wjj newfile.txt

chaown sgs:sgs newfile.txt:将newfile.txt的拥有者和所属组 都给到sgs

 有权限和没权限有什么区别?

指令之前如果我们待sudo的话,那么执行该指令的省份也会改为root对象。并不是任何一个用户都可以执行sudo提权操作,该用户必须 添加到信任列表里,才可以执行sudo操作。

目录的权限

对于目录来讲,我们进入一个目录需要的是执行权限。没有可读权限的目录下,我们无法查看当前目录下的文件名+文件属性,也就是无法ls,无法ls并不代表无法在该目录下创建文件,创建文件只跟目录的可写权限相关,和可读权限没有什么关系。没有可写权限的目录下,我们无法直接在该目录下创建文件。

默认权限

默认权限--我看到的/系统权限--系统设定的/最终权限-- 最终权限就是我们看到的默认权限 

为什么我们创建的普通文件(不包括可执行,因为可执行一定具有x),为什么默认权限是从664开始的?为什么目录的默认权限是775开始的?(注意不同的操作系统的默认权限是不同的)

普通该文件起始权限是从666开始的,这个很好理解,普通文件一般是没有可执行的,因为不需要,出了可执行程序之类的普通文件。而目录文件的其实权限是从777开始的。

如何从起始权限啊变成最终权限?系统为了更好的控制文件权限,系统会有默认的权限掩码的概念umask。 

Linux其实又自己的默认权限掩码的,通过umask命令可以得知是0002(系统不一样umask也会不一样,同一个系统root身份和普通成员身份的umask也会不一样)。按照八进制第一位数字0不管,这里的权限掩码就是002,转换成2进制就是000000010,三三为一组,刚好和起始权限是对应的。

权限掩码:在起始权限中,去掉在umask中出现的权限,并且不能影响其它任何权限。这并不是简单的做减法,而是最终权限=起始权限&(~umask)。计算之后666变成了664,777变成了775。这就是我们创建的默认权限是这样的,因为umask屏蔽了起始权限。我们也可以自己对umask进行修改,比如umask 0007(第一个0不用管带必须带上),这里就是将umask修改成了007。

粘滞位

背景:在使用linux的时候,可能存在一些共享目录,被所有普通用户共享,用来保护普通用户产生的临时共享数据。我将数据放入这个共享目录,其他人就可以在共享目录下读取该数据。该共享目录通常由root提供 。这时候问题就来了,当一个共享目录被所有人所共享的时候,该目录对所有人肯定有rwx的权限,在该目录下sgs创建了文件sgs.txt,并将权限改成了660,我虽然可以进入该目录,并且看到存在sgs.txt文件,但是我无法对该文件进行读写,因为我是other没有权限,但是我可以rm删除该文件,这就是一个bug,非常不合理。

在这样的背景下为了让大家可以共享文件,且其它人随便删除别人的文件,于是产生了粘滞位,而且是给共享目录添加,而不是共享目录下的文件添加。chnod +t share_dir,此时我便无法删除sgs创建的文件。

现在又两个问题,为什么拦不住别人删除我的文件?其而为什么粘滞位只能给目录添加呢?

这得从目录权限说起,对于一个目录,如果我们有w权限,说明我们可在给目录下创建文件,这也说明了我可以在该目录下删除文件,因为能否在一个目录下进行新增与删除是由该目录w权限决定的。 所以我能否删除这个文件不是由这个文件本身决定的而是由这个文件的目录决定的。由于这个被删的问题是由于目录的权限所导致的,这也造成我们只能给这个文件所在目录的权限添加粘位来解决维问题,而不能通过给文件添加来解决。添加粘滞位了之后,能够删除该文件的人只有root、该文件的所有者以及该文件所在目录的目录所有者。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值