目录和文件的权限

  • A+
所属分类:运维教程

一、linux系统中文件权限

1.1什么是文件的权限:定义了某个文件或目录的访问控制

1.2三种基本权限(用户的属主、属组、其他人)

属主:当用户创建一个文件时,这个用户就是该文件的所有者

属组:通常这个用户的主要组将成为该文件的组的所有者

其他人:既不属于属主也不属于属组的为其他人

1.3三种基本的权限类型

读(r):对文件来说读就是可以查看阅读;对目录来说,就是可以列出目录中的文件列表

写(w):对文件来说就是可以修改和删除;对目录来说,可以在该目录中创建删除文件

执行(x):对文件来说,可以运行,比如:二进制文件和脚本;对目录使用cd命令进入该目录

1.4三种访问级别

每个文件都有三组不同的读写执行权限,分别适用三种访问级别

第一组:属主权限位,适用于属主(红色)

第二组:属组权限位,适用于文件的属组(蓝色)

第三组:其他人权限位,不属于以上两者的权限(绿色)

1.5当有人访问一个文件时,linux系统中文件权限的执行顺序

(1)访问者是这个文件的属主吗?如果是,启用用户权限,反之,执行下一步

(2)访问者属于这个文件的属组中的成员吗?如果是,启用组权限,否,执行下一步

(3)如果以上两者都不是,启用其他人权限

(4) 三种级别都未通过,拒绝访问

1.6权限的表示方法

助记法:r、w、x

八进制法:4、2、1

二、linux中修改权限的命令

2.1查看文件的权限

# ll

total 0

-rw-r–r– 1 root root 0 Aug 5 17:30 a.txt

第一列:文件的类型,如果是-,代表普通文件、如果是d,代表是目录

第二列:文件的权限

第三列:链接数

第四列:文件的属主

第五列:文件的属组

第六列:文件的大小

第七列:访问和修改和创建时间

第八列:文件或目录名

2.2使用chmod命令修改权限(两种:助记法、八进制法)

A.使用助记法修改:

例1:将组的权限设置为读写

[root@mail tmp]# ll

total 4

-rw-r–r– 1 root root 6 Aug 5 17:39 a.txt

[root@mail tmp]# chmod g+w a.txt

[root@mail tmp]# ll

total 4

-rw-rw-r– 1 root root 6 Aug 5 17:39 a.txt

例2:将用户和群组添加执行权限

[root@mail tmp]# chmod u+x,g+x a.txt

[root@mail tmp]# ll

total 4

-rwxrwxr– 1 root root 6 Aug 5 17:39 a.txt

例3:将用户和群组的减少执行文件(用户和群组的权限为读和写)

[root@mail tmp]# chmod ug-x a.txt

[root@mail tmp]# ll

total 4

例4:设置用户的权限为rwx,群组和其他人的权限为rx。

[root@mail tmp]# ll

total 4

-rw-rw-r– 1 root root 6 Aug 5 17:39 a.txt

[root@mail tmp]# chmod u=rwx,go=rx a.txt

[root@mail tmp]# ll

total 4

-rwxr-xr-x 1 root root 6 Aug 5 17:39 a.txt

B.使用八进制法修改

-rwxr-xr-x =755

属主 4+2+1=7

属组 4+0+1=5

其他人 4+0+1=5

Rw——- =600

Rwxr—r– =744

756 rwxr-xrw-

三、使用chown命令修改文件的属主

语法:

chown [-R] user file

例1:修改a.txt的文件的属主为u7

#chown u7 a.txt

例2:修改a目录下的所有文件的属主为u7

#chown –R u7 a

例3:修改a.txt文件的属主和属组为u4

#chown u4.u4 a.txt

四、使用chgrp命令修改文件的属组

语法:

chgrp –R GROUP FILE …

例1:将a.txt的属组修改为postfix

#chgrp postfix a.txt

例2:将a目录下的所有文件的属组修改为postfix

#chgrp –R postfix a

五、umask值

影响创建文件或目录的默认权限

文件的权限=666-umask

目录权限=777-umask

[root@mail tmp]# umask

0022

[root@mail tmp]# su – u4000

[u4000@mail ~]$ umask

0002

[u4000@mail ~]$ touch hehe

[u4000@mail ~]$ ll hehe

-rw-rw-r– 1 u4000 u4000 0 Aug 5 22:21 hehe

[u4000@mail ~]$ mkdir haha

[u4000@mail ~]$ ll haha

total 0

[u4000@mail ~]$ ll -d haha

drwxrwxr-x 2 u4000 u4000 4096 Aug 5 22:22 haha

六、SUID/SGID/粘滞位

修改SUID权限范例:

[root@mail tmp]# groupadd test

[root@mail tmp]# usermod -G test u4000

[root@mail tmp]# usermod -G test u5000

[root@mail tmp]# chgrp test /test

[root@mail tmp]# ll -d /test

drwxr-xr-x 2 root test 4096 Aug 5 22:39 /test

[root@mail tmp]# chmod g+w /test

[root@mail tmp]# ll -d /test

drwxrwxr-x 2 root test 4096 Aug 5 22:39 /test

[root@mail tmp]# su – u4000

[u4000@mail ~]$ cd /test

[u4000@mail test]$ touch u4000

[u4000@mail test]$ ll

total 0

-rw-rw-r– 1 u4000 u4000 0 Aug 5 22:42 u4000

[u4000@mail test]$ ll -d /test

drwxrwxr-x 2 root test 4096 Aug 5 22:42 /test

[u4000@mail test]$ exit

logout

[root@mail tmp]# ll -d /test

drwxrwxr-x 2 root test 4096 Aug 5 22:42 /test

设置/test的SGID

[root@mail tmp]# chmod 2775 /test

[root@mail tmp]# su – u4000

[u4000@mail ~]$ cd /test

[u4000@mail test]$ touch u4000-1

[u4000@mail test]$ ll

total 0

-rw-rw-r– 1 u4000 u4000 0 Aug 5 22:42 u4000

-rw-rw-r– 1 u4000 test 0 Aug 5 22:45 u4000-1

[u4000@mail test]$

粘滞位

默认情况

[root@mail tmp]# su – u5000

[u5000@mail ~]$ cd /test

[u5000@mail test]$ rm -rf *

[u5000@mail test]$ ls

[u5000@mail test]$

设置粘滞位后:

[root@mail tmp]# chmod 1775 /test

[root@mail tmp]# ll /test -d

drwxrwxr-t 2 root test 4096 Aug 5 22:49 /test

[root@mail tmp]# su – u4000

[u4000@mail ~]$ cd /test

[u4000@mail test]$ touch u4000

[u4000@mail test]$ exit

logout

[root@mail tmp]# su – u5000

[u5000@mail ~]$ cd /test

[u5000@mail test]$ rm -rf u4000

rm: cannot remove `u4000′: Operation not permitted

七、ACL访问控制列表

(1)启用acl

方法一:服务器重启后失效

[root@mail ~]# mount

/dev/sda3 on / type ext3 (rw)

[root@mail ~]# mount -o remount,acl /

[root@mail ~]# mount

/dev/sda3 on / type ext3 (rw,acl)

方法二:使用vim编辑/etc/fstab文件,找到如下行添加”,acl”

LABEL=/  /      ext3   defaults,acl     1 1

(2)设置范例:

设置acl

root@mail ~]# setfacl -m u:u4000:7 /test

[root@mail ~]# ll -d /test

drwxrwxr-x+ 2 root root 4096 Aug 5 23:02 /test

[root@mail ~]# su – u4000

[u4000@mail ~]$ cd /test

[u4000@mail test]$ touch u4000

[u4000@mail test]$ ll

total 0

-rw-rw-r– 1 u4000 u4000 0 Aug 5 23:07 u4000

[u4000@mail test]$ exit

删除acl

[root@mail ~]# setfacl -x u:u4000 /test

[root@mail ~]# su – u4000

[u4000@mail ~]$ cd /test

[u4000@mail test]$ touch hell0

touch: cannot touch `hell0′: Permission denied

查询:

#getfacl /test

由荣新于老师投稿,由郭亚锋后期排版。

  • 我的微博
  • 这是微博的扫一扫
  • weinxin
  • 微信公众
  • 微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:53   其中:访客  53   博主  0

    • avatar 刈鹿中滥孜赖肯收唾惫斗狄涂噶救瞪揖加 9

      签到成功!签到时间:今日的上午7:09:42,每日打卡,生活更精彩哦!

      • avatar 遮载斜倭荡脱咐蹈耸辽渭乔毯贾咎窘锹孪 9

        签到成功!签到时间:今日的上午4:41:35,每日打卡,生活更精彩哦!

        • avatar 庸尘呵坝酉舱磺僬槐钡椭伎悍旨琴谐路镁 9

          签到成功!签到时间:今日的上午4:25:40,每日打卡,生活更精彩哦!