Linux权限

一.用户权限

        在Linux中有超级用户(root)和普通用户,超级用户就是超级管理员,有着最高权限,而普通用户是受权限约束的。每个普通用户都在一个home文件里,普通用户想要在home目录创建或删除文件是不被允许的,因为没有权限(home属于root账户创建的目录),只有root才有权限创建和删除系统文件。

        当然,普通用户有时也需要root权限来做一些事,所以有两个指令可以让我们拥有root权限。

1.su指令

用法:su [用户名](不写就是root)

           su - [用户名](不写就是root)

功能:切换账号(需要输入对应用户的登录密码)

演示:

        可以看到su和su -都可以让我们登录,并且登录后都有root权限,很明显我们可以发现su和su -登录后的所在目录有所不同。因为su是单纯切换账户,而su -是让账号重新登陆,所以所在目录也变了。登录root账号后按ctrl+d即可退回普通账号。

        但是我们可以很明显的看出,使用su和su -获得root权限需要root密码,那这样所有普通用户就都得知道root密码了,大伙都可以直接用root账号来工作了,不必多此一举。所以普通用户想要root权限就得用下面的指令。

2.sudo指令

用法:sudo [其他指令]

功能:以root权限执行后面的指令

说明:sudo之后要输入自己用户的密码

        很明显,这咋一看没什么问题,再看一眼就会发现有BUG!sudo之后输入自己的密码就可以用root权限执行指令了,那么这和直接告诉你root密码并无区别,root权限极有可能被滥用做坏事。当然,实际上这是需要被信任的用户才能使用sudo,也就是白名单。

        这里我们用root权限执行一次ls(只是演示sudu指令):

        可以发现并没有成功,我们看到最后一行“normal is not in ths sudoers file”,意思就是我们这个用户并没有被添加到“sudoers”这个文件里,也就是没有被信任,只有被信任的用户才能使用sudo指令,那么如何添加我们后面再说。

二.文件权限

1.文件属性介绍

        下面我们来详细介绍一下文件的属性和权限。

        可以看到从左到右有很多信息,下面我用一张图来解释这些都是什么意思。 

        从左开始第一个字符代表的是文件类型,关于文件类型:

-:普通文件,源代码,可执行程序,库等

d:目录文件

c:字符设备文件

b:块设备文件

l:链接文件(链接文件就是windows的快捷方式,指向一个路径的文件)

p:管道文件

        Windows上对于文件类型的区别是看文件的后缀,所以Linux系统本身对于文件类型的区分是根据文件属性第一个字符来看的,所以对于文件名的后缀Linux系统并不关心,但是不代表Linux上安装的软件不关心,比如gcc编译器,文件后缀必须是.c才能编译。

        然后剩下9个字符每三个为一组,分别代表“拥有者”,“所属组”,“other”的权限,rwx分别代表读,写,可执行权限。比如rw-就说明有读和写权限但没有执行权限。可执行文件就具有x权限,也就是可执行权限,比如编译之后的c语言代码,会生成一个a.out文件。

         关于“拥有者”,“所属组”,“other”是什么:

  • 拥有者就是创建这个文件的用户。
  • 所属组就是多个用户的集合,组的名字是组长,当然组也是可以只有一个人,我们创建一个文件,这个文件的所属组就只有我们一个人。
  • other就是除了拥有者和所属组之外的用户。

        所以,对于上图中的file文件,拥有者的权限就是“rw-”,所属组的权限也是“rw-”,而other的权限是“r--”。连接数暂时不讲。下面我将演示是否有rw权限的实际表现,因为要修改权限所以要用刀chmod指令。

2.chmod

用法:chmod [选项] [权限] [目标文件]

功能:对文件或目录的权限进行修改(只有文件/目录拥有者和root才能修改)

选项:

-u 拥有者

-g 所属组

-o other

-a 所有(包括上述三个)

R 递归修改目录文件的权限


实例:(这是file文件初始权限)

  • 修改file文件拥有者的权限(用=就是赋值,+就是增加,-就是取消,=-就是让rwx都取消)

  • 对所有人都添加w权限

  • 对拥有者权限为rwx,所属组权限为rw,other权限为r

        下面我们具体演示一下r和w权限:

        这里有一个别的用户创建的文件,对于other只有r权限就是只能读,不能写。 

        可以看到只能读不能写,那么可以推断出,如果other权限是-w-只有w权限,我们就只能写而不能读了。 

细节

        还是上述那个文件,不过这一次我们把账户换成了文件拥有者,并且我们把拥有者的权限全部去掉。

        发现我访问不了了,但是所属组还有rw权限,所属组那里显示的是我,虽然拥有者没了权限,但我作为所属组还有权限,理论上我还是可以访问的,现实是我访问不了,也不能写入。

        原因是对于用户的匹配只有一次,当这个用户是拥有着就会直接去看拥有者的权限了,不会再去匹配所属组里是否有这个用户了。

 3.文件权限更改的另一种方式

        对于rwx和---前者是拥有rwx权限,后者是啥也没有。那么我们可以视前者为二进制111,后者是二进制000,r-x就是101,转换成八进制就是5,所以我们也可以用八进制来更改权限。

        这里我们用八进制的方式更改权限,7对应二进制就是111,6->110,5->101。对应的权限就是rwx,rw-,r-x,和图中的完全一样。

 4.更改文件的拥有者所属组

        用chown和chgrp就可以更改文件拥有者和所属组,但是需要root权限。(关于sudo如何添加信任用户后面会讲)

         我们用chown和chgrp指令修改了文件的拥有者和所属组。也可以像下面这样一口气更改。

 5.file指令

用法:file [选项] [文件或目录]

功能:辨识文件类型(就是告诉你这个文件是什么类型的,当然也可以看文件属性第一个字符判断,上面有讲过)

选项:

-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。

三.目录权限

1.目录权限的rwx

        对于文件的rwx权限前面讲过,也比较好理解,那么对于目录来说rwx的具体表现就和文件不同了。

  • r权限可以让用户查看当前目录下的所有文件属性(就是使用ls指令),而能不能查看文件内容和修改文件就取决于文件本身了。
  • w权限可以让用户在目录里添加或删除文件,能否删除文件和文件本身没有关系,和文件所处的目录是否具有w权限有关。
  • x权限可以让用户进入目录,没有x权限用户就无法进入目录

2.粘滞位        

        假设在以下场景:a,b两人在一个共享目录里都为other,该目录对other具有rwx权限,那么a创建了一个文件并写了一些代码,因为具有w权限,b可以直接删掉目录里的文件,无论b是有意还是无意,自己的文件随时都能被别人删除都不好。所以针对此就有粘滞位这个权限。

        当一个目录被设置了“粘滞位”以后该目录下的文件只能由root和该目录所有者和该文件的所有者删除

        演示:输入chmod +t [目录名] (需要root权限)即可把该目录设置为粘滞位。

         可以看到目录颜色变成绿色,权限最后一位变成t了。

        现在我就不能删除其他用户在该目录下创建的文件了。 (其他用户在该目录下创建的目录,假如该目录没有粘滞位,那么目录里别的用户创建的文件我还是可以删除的

四.默认权限

         文件和目录被创建时的权限就是默认权限。

        可以看到目录的默认权限转换成8进制就是775,文件是664。但事实上,目录的默认权限是777,文件是666,那为什么会出现775和664呢?

1.权限掩码

        权限掩码是一个3位的八进制数字,每一位代表着拥有者,所属组,other。不同机器上的权限掩码不一样,我这台是0002(第一个0是说明这是8进制数字),转换成二进制就是000 000 010,这三个分别对应着拥有者,所属组,other,而每一个的三个位对应着rwx,如果哪一位是1,那么默认权限中这一位就要去掉。

        可以看到前两个都是000,所以默认权限不变,而第三位也就是other的w是1,就说明other的默认权限不能有w权限,所以上图中的other就没有w权限。

        这是一个位运算,公式就是{最终权限=起始权限&~(umask)}(umask就是权限掩码)。

        我们也可以更改权限掩码。

        更改成777就是 111 111 111,取消所有权限。(1就是取消权限,0就是不取消) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值