linux文件权限

一、前言

在linux中,每个目录或者文件都有相对应的权限,linux通过文件属主(user),文件属组(group),其它人(order)对一个文件或者目录控制读写执行权限,当然在这些基本权限之外还有特殊权限,facl(file access control list)等。

二、文件基本权限

   2.1:属主、属组、order概念

      属主:即文件的拥有者,当创建或复制一个目录或者文件时,默认是执行此命令的用户为属主,用户所属的群组为文件或者目录的属组。除非使用其它选项(cp命令的选项 -a -p)或者此目录下有默认属主或属组的权限。

      属组:即一个或多个用户同属于一个用户组对这个文件拥有属组的权限

       order : 其它人,除属主和属组以外的用户

  2.2:文件属性

      下面我们看一个文件的属性,如下

        [root@dns tmp]# \ls -ld mytest        
        d rwx r-x r-x. 4 root root 4096 Aug  2 05:10 mytest
        |  |  |    |     |     |
        文 属  属 order  属     属
        件 主  组  权    主     组
        类 权  权  限
        型 限  限

  2.3:基本文件权限

     一个文件或者目录有读、写、执行权限。在其中在上图中,属主、属组、order 权限中3位一组。r:表示读权限(read),w:表示写权限(write)。x:表示执行权限(execute),- :表示无任何权限。

     r(read):对目录而言,用户可以对目录就有浏览权限。对文件而言,用户可以读取文件内容

     w(write):对目录而言,用户删除,移动目录内的文件权限。对文件而言,用户可以写文件

     x(execute):对目录而言,用户可以进入目录。对文件而言,用户有执行文件的权限

     r:可以用数字4表示读权限,w:可以用2表示写全些,x:可以用1表示执行权限,-:可以用0表示无权限。那么一个属主的权限rwx可以表示为4+2+1=7,属组的权限r-x可以表示为4+0+1=5,order的权限r-x的权限可以表示为4+0+1=5,那么上述mytest的属主属组和order权限为755。可以使用命令chmod更改用户文件权限,如chmod 644 mytest 。chmod的具体用法如下

    chmod [OPTION]… MODE[,MODE]… FILE…

        [root@dns tmp]# chmod -R 700 mytest        #递归更改mytest权限
        [root@dns tmp]# ll -d mytest
        drwx------. 4 root root 4096 Aug  2 05:10 mytest
        [root@dns tmp]# chmod 777 a_b
        [root@dns tmp]# ll a_b
        -rwxrwxrwx+ 1 leon leon 0 Aug  2 04:40 a_b

2.4:文件特殊权限

    suid:set uid 权限,任何一个用户运行一个带此权限的命令时,不是以此用户的身份启动,而是以文件自身的属主访问。

[root@dns mytest]# ll `which passwd`
-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd

    sgid : set gid权限,若一个目录设置了SGID,则所有被复制到这个目录下的文件, 其所属的组都会被重设为和这个目录一样,除非在复制文件时加上-p (preserve,保留文件属性)的参数,才能保留原来所属的群组设置。

[root@dns tmp]# chmod g+s mytest
[root@dns tmp]# ll -d mytest
drwx--S---+ 5 root root 4096 Aug  7 10:05 mytest

   sticky :又称黏滞位,对一个文件设置了sticky-bit之后,尽管其他用户有写权限, 也必须由属主执行删除、移动等操作。对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、 移动等操作。

[root@dns tmp]# chmod o+t mytest            #设置sticky权限
[root@dns tmp]# ll -d mytest
drwx--S--T+ 5 root root 4096 Aug  7 10:05 mytest

 

 三、ACL权限

FACL(file access control list)文件系统访问控制列表,在基本的文件权限之后,由ACL控制权限来控制文件权限,FACL可以设置多个用户或者组对文件或目录的权限,包括一个目录下各文件的默认权限。用法如下

getfacl - get file access control lists
getfacl [-aceEsRLPtpndvh] file ...
setfacl - set file access control lists
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...

[root@dns tmp]# getfacl a_b        #查看a_b的acl权限
# file: a_b
# owner: leon
# group: leon
user::rwx
user:leon:rw-
group::r--
mask::rwx
other::rwx
[root@dns tmp]# setfacl -m u:gentoo:rw- a_b    #添加gentoo访问控制权限
[root@dns tmp]# getfacl a_b
# file: a_b
# owner: leon
# group: leon
user::rwx
user:leon:rw-
user:gentoo:rw-                                #gentoo访问控制权限
group::r--
mask::rw-
other::rwx

[root@dns tmp]# setfacl -m d:u:gentoo:rwx mytest   #设置文件夹的默认权限
[root@dns tmp]# getfacl mytest
# file: mytest
# owner: root
# group: root
user::rwx
group::---
other::---
default:user::rwx                                   #默认权限,
default:user:gentoo:rwx
default:group::---
default:mask::rwx
default:other::---

四、总结

文件或目录通过基本权限控制用户或者进程访问,基本权限不能满足用户需求的情况下可以设置特殊权限和FACL权限,在线上环境时,不能随便设置777的权限,可以通过FACL设置某个用户rwx的权限。总之,文件系统的权限一定要把控好,否则将存在严重的安全隐患。 

原创文章,作者:成吉思汗,如若转载,请注明出处:http://www.178linux.com/6978

(0)
成吉思汗成吉思汗
上一篇 2015-08-13 10:19
下一篇 2015-08-17 11:28

相关推荐

  • 马哥教育网络班21期+第6周课程练习

    请详细总结vim编辑器的使用并完成以下练习题 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@centos ~]# cp /etc/rc.d/rc.sysinit /tmp/ [root@centos&nbs…

    Linux干货 2016-07-27
  • 一种强大的新型BIOS Bootkit病毒曝光

    近日,安全研究人员开发出一种新的BIOS bootkit,它可以窃取敏感数据,以及流行操作系统使用的PGP密钥。包括华硕、惠普、宏基、技嘉以及微星等在内的各大供应商的主板都受到该病毒影响。 BIOS bootkits是真实存在的。斯诺登在披露NSA ANT部门使用的监视工具集时,曾提到过BIOS bootkits。这些恶意软件能够入侵受害机器的BIOS,以此…

    2015-03-23
  • Homework Week-10 CentOS启动相关及bash脚本编程

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;   (1) 为硬盘新建两个主分区;并为其安装grub;   (2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;   (3) 为rootfs提供…

    Linux干货 2016-10-24
  • 马哥教育21期网络班—第五周课程+练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; grep "^[[:space:]]\+" /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; grep "…

    Linux干货 2016-07-29
  • ——-史上最全的Vim命令 ——-vim命令 /正则表达式 /搜索 /定位 /分屏

    一,vim vim编辑器是vi的进阶版,是一个静态文本编辑器。它的强大不逊色于任何最新的文本编辑器,
    对Unix及Linux系统的任何版本,vi编辑器是完全相同的。Vi也是Linux中最基本的文本…

    2017-11-26
  • 马哥教育网络19期+第十五周课程练习

    1、总结sed和awk的详细用法;   a).sed命令 sed可以实现grep的大部分功能,而且还可以查找替换 [root@localhost ~]# sed '10'p -n 1.txt [root@localhost ~]# sed &#039…

    Linux干货 2016-08-22

评论列表(2条)

  • stanley
    stanley 2015-08-17 11:27

    赞,应该首次写文章吧,分类和标签都有,意识非常强

  • zhangwu0801
    zhangwu0801 2015-08-20 11:04

    好东西 感谢分享和付出 。。