Linux权限管理

一、权限管理

指令运行原理

Linux在某种程度上来说是一个操作系统,但不同于windows的OS,这里我们叫他kernel,作为一般用户无法直接访问kernel,而是通过kernel的“外壳程序”,也就是shell,其作用有以下两点:

  • 将用户的指令翻译给kernel处理;
  • 接收kernel的处理结果并交给用户。

在windows中,windows使用图形化界面,通过用户点击的操作来完成对OS操作请求。

而shell在操作请求过程中类似于一个媒介,用户将指令发给shell,shell将用户指令解释后交给kernel,最后kernel处理指令,并将结果交给shell,shell再交给用户。

用户分类 

在Linux中有两种用户需要区分开来:

  • 普通用户:权限受到限制,其命令提示符是$;
  • 根用户:权限不受限制,其命令提示符是#;

用户切换指令:su [用户名];      

该指令用于用户的切换:root用户切换到普通用户时:su 用户名;也可以直接exit退出root;普通用户切换到root用户时:su -root;-root可省略;其中-root切换到对应用户的家目录,而su root只切换用户,不改变路径。

文件分类 

在LinuxOS下,系统不想windows那样以后缀名区分文件类型。而是通过第一个字符来区分文件的类型,如下图所示:

常见的类型有以下几种:

  • -:普通文件,如文本,可执行文件,源代码,第三方静态动态库等;
  • d:目录文件;
  • l:链接文件;
  • p:管道文件;
  • b:块设备文件、磁盘;
  • c:字符设备文件。

但是,值得注意的是以下这个情况:

当我把a.out这可可执行文件修改为a.txt时,依然可以运行;

但是当我将源代码所在的文件text1.c名称修改为text1.txt再通过gcc编译时,就会发现系统无法识别这个文件的类型,但是,这并不是Linux无法识别,这是gcc编译器无法识别这个文件。因此,在LinuxOS下,OS并不是以后缀名来区分文件类型,而gcc以后缀名来区分文件类型。 

文件权限管理

 在LinuxOS中,文件的权限可以理解为两个方面,一是文件的访问权力,二是对应的文件具有的属性(如读、写、可执行)。文件访问者分为三类:

  • 文件/文件夹的所有者 ==> owner;
  • 文件/文件夹所有者所在的所属组 ==> grouper;
  • 其他用户 ==> other;

如上图,A、B两竞争组组分别将自己的代码提交在公司的服务器中,为了不让对手组查阅自己组的代码,AB组分别将代码权限设置为自己所在组。因此,A组在服务器上的代码区的所有者是张三,其所属组就是A组。

如上图所示,在我的Linux文件夹下对应的文件权限,其中,在前10个字符中,首字符代表文件类型,后九个字符每三个看一组,其含义如图所示。而对于other,当我把所属用户和所属用户组修改掉时,就是other。r、w、x分别代表:可读、可写、写执行。

需要注意的是:rwx代表可读可写可执行,r-x代表可读可执行,如果一个文件的权限不可读不可写不可执行则显示为"---"。也就是说,可执行某项操作就在其对应的位置显示对应的字母,不可执行某项操作在其对应的位置用"-"代替,并且r、w、x的操作顺序不可改变。

文件权限修改 

对于文件权限的修改涉及到两个方面,一是文件属性的修改,二是修改人。

chmod [参数] 权限 文件名;

chgrp [参数] 用户组名 文件名;

如上图,使用chmod指令,

  • chmod u-r a.txt;:表示去除用户user权限中的r(只读)权限;
  • chmod u+r a.txt:表示添加用户user权限中的r(只读)权限;
  • chmod u+(-)rwx a.txt:表示添加(去除)用户user全部的权限;
  • chmod g+(-)rwx a.txt:表示添加(去除)用户组group全部的权限;
  • chmod o+(-)rwx a.txt:表示添加(去除)其他other全部的权限;
  • chmod r+(-)rwx,g+(-)rwx,o+(-)rwx a.txt;一次性操作全部对象的权限;(中间无空格)

在修改权限时,还可以使用二进制的方式:例如在user中权限是rwx是111,---是000,-wx是011,--x是001,因此还可以使用二进制码的形式修改权限。

如上图:chmod 777 text1.txt;7的二进制码:111

  1. 第一个7:111 ==> 也就是rwx;
  2. 第二个7:111 ==> 也就是rwx;
  3. 第三个7:111 ==> 也就是rwx;

补充一点:

chmod a=权限 文件名;

表示一次性修改文件的全部权限,这里的a表示all;

chown [参数] 用户名 文件名;

这个指令的作用是用来修改文件的所有者;

如上图,当我想把text1.txt文件个root用户时,这里会发现操作不允许;这是因为在Linux中,当我想把一个文件给别的用户时需要考虑两个问题:1、接受用户是否同意;2、文件的创作者和拥有者是否同一个人。

但是当我使用root用户进行操作时,文件修改成功,这就说明root用户权限最大

 目录的权限

如果一个文件目录没有对应的某些权限还能访问吗?

如上图,当最后dir1的权限只剩x时,可以顺利访问该目录。

因此,当想进入一个目录时,需要 x 权限;

  1. 如果目录没有 r 权限,允许进入、创建文件,不允许查看;
  2. 如果目录只有 w 权限,允许进入、查看文件列表,不允许创建文件;
  3. 如果目录只有 x 权限,允许进入,不允许创建、查看文件列表。

umask

umask查看或修改文件掩码,一般来说,

  • 新建文件夹默认权限是0666;
  • 新建目录默认权限是0777;

但实际上,新创建的文件或目录并不是如此,这是因为收到umask的影响。

umask 权限值;

一般的运算法则是:默认权限  &(~umask)默认权限按位与(umask按位取反)所得到的结果就是此时文件或目录的权限。

如上图,对于file.txt也是如此道理,file默认是666 =》 110 110 110,而umask是002 =》000 000 010按位取反后111 111 101在于file权限按位与 110 110 100,得到最终权限rw- rw- r--。


umask是可修改的:

如上图,当我将umask的值修改为777时,而777=》111 111 111(按位取反)=》000 000 000,再与dir2的默认权限(777=> 111 111 111)按位与 =》 000 000 000 =》 --- --- ---,这就是dir2的权限。

file1.txt的默认权限是666 =》 110 110 110,与000 000 000按位与 =》000 000 000 =》 --- --- ---,这就是file1.txt的权限。

粘滞位

如上图,使用root用户创建一个other可读可写可执行的文件夹dir,这就相当于一个共享文件夹,这就允许多个用户在同一个文件下进行操作。


在Linux环境下,存在一些目录,所有者和所属组是root,其他人以other的身份在该目录下进行创建、读取、删除等操作。但是在共享目录下,其他人也可以对我保存的文件进行修改或删除,因此通过给共享目录加上粘滞位。

如上图,使用 “ chmod +t 目录名 指令将共享目录添加粘滞位,此时只有root用户或者该文件拥有者才能删除操作。

file指令 

如上图,通过file指令来查看文件的类型

  • 50
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值