1、Linux 文件基本属性

        Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

ls -l

实例中,bin文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。  

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为[ d ]则是目录

  • 当为[ - ]则是文件;

  • 若是[ l ]则表示为链接文档(link file);

  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);

  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

        接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

每个文件的属性由左边第一部分的10个字符来确定(如下图)。

  • 从左至右用0-9这些数字来表示。
  • 第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。
  • 第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
  • 其中,第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
  • 第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。

2、Linux文件属主和属组

引子:

  • 对于一个文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
  • 也就是所谓的属主,它属于哪个用户的意思。
  • 除了属主,还有属组,也就是说,这个文件是属于哪个组的(用户所属的组)。
  • 文件的【属主】有一套【读写执行权限rwx】
  • 文件的【属组】有一套【读写执行权限rwx】

还有它权限,下面我们在介绍

        在以上实例中,aaa文件是一个目录文件,属主和属组都为 itcast,属主有可读、可写、可执行的权限(rwx);与属主同组的其他用户有可读可写和可执行的权限(rwx);其他用户也有可读和可执行的权限(r-x)。  

2.1、chgrp更改属组

  • chgrp命令用于变更文件或目录的所属群组。
  • 文件或目录权限的的拥有者由所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可
  • 为了方便初学者记忆,可以将 chgrp 理解为是 "change group" 的缩写

语法如下

chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]

参数详情:

  • -R 递归式地改变指定目录及其下的所有子目录和文件的所属的组
  • -c或——changes:效果类似“-v”参数,但仅回报更改的部分;
  • -f或--quiet或——silent:不显示错误信息;
  • -h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
  • -H:如果命令行参数是一个通到目录的符号链接,则遍历符号链接
  • -R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
  • -L:遍历每一个遇到的通到目录的符号链接
  • -P:不遍历任何符号链接(默认)
  • -v或——verbose:显示指令执行过程;
  • --reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同; 

改变文件的群组属性

我们通过root用户进入(如下图),上接上面的例子

我们的aaa文件的属主和属组都属于itcast(如下图)

我们现在通过chgrp命令将文件aaa的属组更改成root(其他也可以)  

chgrp -v root aaa

执行效果如下

我们通过下面的命令查询文件aaa的属组是否发生了变化,执行  

由上图我们发现,文件aaa的属组由itcast变成了root

这样的话,文件的属组就发生了变化。

2.2、chown更改属主和属组

  • Linux是多任务操作系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限
  • 使用权限 : 管理员账户

语法如下: 

chown [-属性] 属主名 文件名
chown [-属性] 属主名:属组名 文件名

参数详情:

  • -c或——changes:效果类似“-v”参数,但仅回报更改的部分;
  • -f或--quite或——silent:不显示错误信息;
  • -h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
  • -R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
  • -v或——version:显示指令执行过程;
  • --dereference:效果和“-h”参数相同;
  • --help:在线帮助;
  • --reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
  • --version:显示版本信息。

我们通过root用户进入(如下图),上接上面的例子

我们的aaa文件的属主属于itcast、属组属于root

我们现在通过chgrp命令将文件aaa的属主更改成root,执行

 chown  root aaa

效果如下

我们通过下面的命令查询文件aaa的属主是否发生了变化,执行  

由上图我们发现,文件aaa的属主和属组都变成了root。  

注意:chown命令可以更改属主和属组

chown itcast:itcast aaa

我们通过下面的命令查询文件aaa的属主是否发生了变化,执行

由上图可知,aaa文件的属主和属组都被更改回来了。  

3.3、chmod权限命令

  • Linux文件属性有两种设置方法,一种是数字,一种是符号
  • Linux的文件调用权限分为三级 : 文件属主、属组、其他。利用 chmod 可以控制文件如何被他人所调用。

使用权限 : 所有使用者

语法:

chmod [-cfvR] [--help] [--version] mode file...

参数说明:

  • -c, --changes:当文件的权限更改时输出操作信息。
  • --no-preserve-root:不将'/'特殊化处理,默认选项。
  • --preserve-root:不能在根目录下递归操作。
  • -f, --silent, --quiet:抑制多数错误消息的输出。
  • -v, --verbose:无论文件是否更改了权限,一律输出操作信息。
  • --reference=RFILE:使用参考文件或参考目录RFILE的权限来设置目标文件或目录的权限。
  • -R, --recursive:对目录以及目录下的文件递归执行更改权限操作。
  • --help:显示帮助信息并退出。
  • --version:显示版本信息并退出。

mode : 权限设定字串,格式如下

[ugoa...][[+-=][rwxX]...][,...]

u符号代表当前用户。
g符号代表和当前用户在同一个组的用户,以下简称组用户。
o符号代表其他用户。
a符号代表所有用户。
r符号代表读权限以及八进制数4。
w符号代表写权限以及八进制数2。
x符号代表执行权限以及八进制数1。
X符号代表如果目标文件是可执行文件或目录,可给其设置可执行权限。
s符号代表设置权限suid和sgid,使用权限组合u+s设定文件的用户的ID位,g+s设置组用户ID位。
t符号代表只有目录或文件的所有者才可以删除目录下的文件。
+符号代表添加目标用户相应的权限。
-符号代表删除目标用户相应的权限。
=符号代表添加目标用户相应的权限,删除未提到的权限。

(1)数字权限

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组(owner/group/others就是所说的三个一组 )的,我们也可以使用数字来代表各个权限,各权限的分数对照表如下

各权限的数字对照表:[r]:4;[w]:2;[x]:1;[-]:0

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:  

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= --- = 0+0+0 = 0

        所以等一下我们设定权限的变更时,该文件的权限数字就是770啦,变更权限的指令chmod的语法是这样的

chmod [-R] xyz 文件或目录

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

上面的 可以表示如下

chmod  -R 770     档案或目录

(2)符号权限

还有一个改变权限的方法,就是 符号权限,我们先回顾下之前提到的9个权限

  • (1)user 属主权限

  • (2)group 属组权限

  • (3)others 其他权限

那么我们就可以使用 u, g, o 来代表三种身份的权限!

此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看

  • 如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:
  • 上接上面的例子,如下图
  • 我们将as.txt的权限设置为-rwxr-xr--

执行  

chmod u=rwx,g=rx,o=r  as.txt 

由上图我们发现,as.txt的权限变成了-rwxr-xr--  

        假如我们要将权限去掉而不改变其他已存在的权限呢?举个例子,比如我要拿掉全部人的可读权限,则

 chmod  a-r as.txt

执行如下

由此可见,as.txt的其他权限都没有了,变成了【---】 

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐