Linux入门真经-021文件权限基础

1、文件的基本权限

我们之前介绍了用户与组。在操作系统中,每一个文件都会有属主(拥有这个文件的用户,user)、属组(拥有这个文件的组,group)。既不是这个文件的属主,也不属于其属组的用户,对这个文件来讲,就是其他用户(other)

大家是否还记得ls -al的迷之输出?

 

我们已经知道,最左侧的第一位指的是文件的类型。忘记的童鞋请前往传送门:011文本查看类命令

左侧右边的九位则是与权限相关的,今天我们就来详细介绍。

第二列是链接数,我们会在讲文件系统的时候给大家介绍。

第三列和第四列出的是文件的属主与属组。

第五列是文件的大小(如果是设备文件,显示的是主次设备号)

后面的几列列出的是文件的修改时间(mtime)和文件名

权限分三种:可读(r)、可写(w)、可执行(x)。而权限为什么要用九个位置表示呢。

rwxrwxrwx:

         左三位:定义user(owner)的权限

         中三位:定义group的权限;

         右三位:定义other的权限

当我们需要使用一个文件的时候,无非也是对文件进行三种行为:读取(文本/数据文件)、写入(文本/数据文件)、执行(二进制程序文件或高级语言程序文件)

我们要对文件产生行为的时候,必然也要借助与命令,而我们执行命令的时候,又必然是以某种用户的身份去执行的。

因此,我们对文件进行访问时,会遵循以下原则:

判断执行命令的时候,运行该命令的用户与文件的属主是否相同;

如果相同,则应用属主权限;

否则,则检查运行该命令的用户是否属于文件的属组;如果是,则应用属组权限;

否则,就只能应用other的权限;

再来回忆一下,权限的种类分为:

         r:readable, 读

         w:writable, 写

         x:excutable,执行

对于非目录文件来说:

         r表示:可获取文件的数据;

         w表示: 可修改文件的数据;

         x表示:可将此文件运行为进程;

对于目录来说:

         r:可使用ls命令获取其下的所有文件列表;

         w:可修改此目录下的文件列表;即创建或删除文件;

         x:可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息;

权限可以用rwx来表示,也常常用二进制转换为八进制的数字来表示:

什么意思呢,以左三位权限为例,rwx的权限只有两种状态:有或者没有,因此可以用1和0来表示。比如,rwx可以表示为111,二进制转为八进制就是4+2+1=7。

因此,权限可以组合为:

         --- 000 0

         --x 001 1

         -w- 010 2

         -wx 011 3

         r-- 100 4

         r-x 101 5

         rw- 110 6

         rwx 111 7

如,某个文件的权限为rwxr-x---,用数字表示就是750,rwxr-xr-x就是755.

 

2、改变文件权限:chmod

(1) chmod [OPTION]... MODE[,MODE]...FILE...

MODE表示法:

赋权表示法:直接操作一类用户的所有权限位rwx;

u=

g=

o=

a=

授权表示法:直接操作一类用户的一个权限位r,w,x;

      u+,u-

      g+,g-

      o+,o-

      a+,a-

      如:

 

[root@localhost tmp]# touch test_chmod

[root@localhost tmp]# ll test_chmod

-rw-r--r--. 1 root root 0 Aug 13 19:45 test_chmod

 

使用赋权表示法,将权限改为rwxrw----(760)

 

[root@localhost tmp]# chmodu=rwx,g=rw-,o=--- test_chmod

[root@localhost tmp]# ll test_chmod

-rwxrw----. 1 root root 0 Aug 13 19:45test_chmod

[root@localhost tmp]#

 

使用授权表示法,取消属组的w权限,赋予other读权限

 

[root@localhost tmp]# chmod g-w,o+r test_chmod

[root@localhost tmp]# ll test_chmod

-rwxr--r--. 1 root root 0 Aug 13 19:45test_chmod

[root@localhost tmp]#

 

(2) chmod [OPTION]... OCTAL-MODE FILE...

八进制数字的格式修改文件权限,如,将该文件权限改为全部放通:

 

[root@localhost tmp]# chmod 777 test_chmod

[root@localhost tmp]# ll test_chmod

-rwxrwxrwx. 1 root root 0 Aug 13 19:45test_chmod

 

再改回原来的权限(文件权限777是很危险且不合理的行为):

 

[root@localhost tmp]# chmod 744 test_chmod

[root@localhost tmp]# ll test_chmod

-rwxr--r--. 1 root root 0 Aug 13 19:45test_chmod

 

(3) chmod [OPTION]... --reference=RFILE FILE...

参考某文件的权限来设置文件权限:

如,参照/etc/fstab的权限给该文件赋权:

 

[root@localhost tmp]# ll /etc/fstab

-rw-r--r--. 1 root root 465 Jul 24 18:32/etc/fstab

[root@localhost tmp]# chmod--reference=/etc/fstab test_chmod

[root@localhost tmp]# ll test_chmod

-rw-r--r--. 1 root root 0 Aug 13 19:45 test_chmod

[root@localhost tmp]#

 

另外,对于目录可以使用-R, --recursive进行递归修改

注意:用户仅能修改属主为自己的那些文件的权限;root可以修改任意文件的权限。

 

3、改变文件的属主:chown

 

chown命令:

         chown[OPTION]... [OWNER][:[GROUP]] FILE...

   chown [OPTION]... --reference=RFILE FILE...

         对于目录而言可以使用-R对目录内的文件进行递归操作。

举例:

 

[root@localhost tmp]# mkdir test_chown

[root@localhost tmp]# touch test_chown/test1

[root@localhost tmp]# ll test_chown/test1

-rw-r--r--. 1 root root 0 Aug 13 21:31test_chown/test1

 

改变其属主为test用户(用户需存在于系统哦,如果没有请你创建一个)

 

[root@localhost tmp]# chown testtest_chown/test1

[root@localhost tmp]# ll test_chown/test1

-rw-r--r--. 1 test root 0 Aug 13 21:31test_chown/test1

[root@localhost tmp]#

 

看到了么,文件的属主已经改为test了。

我们还可以用-R选项对目录及目录内的文件进行递归修改。

如:我们将test_chown目录及其内的文件均改为root用户所有。

 

[root@localhost tmp]# chown -R roottest_chown

[root@localhost tmp]# ll -d test_chown/

drwxr-xr-x. 2 root root 19 Aug 13 21:31test_chown/

[root@localhost tmp]# ll  test_chown/

total 0

-rw-r--r--. 1 root root 0 Aug 13 21:31test1

[root@localhost tmp]#

 

4、改变文件的属组:chgrp

 

用法:

    chgrp [OPTION]... GROUP FILE...

    chgrp [OPTION]... --reference=RFILE FILE...

用法请类比chown命令,在此不做多余的演示。

最后需注意一点:仅管理员可修改文件的属主和属组

 

下一节为大家介绍文件的隐藏属性与默认权限。

关注本公众号获取每日更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值