Linux文件系统权限详解

一、综述

在用户和组的管理中介绍了Linux系统是用户多任务的分时操作系统,这意味着同时可以有多人在同一台pc上进行不同的操作。为了能够保护每个用户的数据安全,针对不同的用户设置相应的权限是非常重要的。

Linux文件系统权限主要针对三类用户:

文件的所有者: owner,用u标识

文件的所有组:group,用g标识

其他人: other,用o标识。不包含在文件所有者和所有组内的系统其他用户。

二、文件权限及从属关系修改

       1、查看文件权限

       使用ls –l可以查看。以

blob.png

       1.1文件类型:

普通文件—f;目录文件—d;块设备文件—b;字符设备文件—c;软连接文件—l;套接字文件—s;管道文件—p

       1.2文件权限:

              读—r  readable

              写—w writeable

              执行—x。excutable(比如脚本、二进制文件、目录等文件具有此权限)

本文主要就文件权限进行解释以及对文件属组、属主、权限的修改做相关介绍。其他内容暂不做介绍。

    2、对于文件和目录来说,rwx代表的权限是不一样的。

rwx对文件来说:

       r: 代表可以使用文件查看类命令来查看文件内容,比如cat、less等。

       w:代表可以通过编辑器等修改文件内容。比如vim、nano、重定向等。

       x: 代表可以把此文件提交给内核启动为进程。

rwx对目录来说:

       说明下,目录也是一种文件,存放的是下属的文件与inode节点的对应关系。

       r: 可以通过ls查看文件内容

       w:可以在该目录下创建文件或删除文件

       x:可以通过cd命令进入该目录,以及通过ls –l查看目录下属文件的详细信息。 

3、文件权限的表示方法:

       文件的权限是3个字符一组的。分别对应所有者、所属组、其他人的权限

blob.png

权限、二进制、八进制表示如下表

blob.png

例如:/etc/passwd的权限rw-r–r–可以表示为: 644

4、文件权限的修改

       通过chmod命令修改。用法为:

              chmod  [OPTION]…  OCTAL-MODE  FILE…   

                     常用options有:

-R 表示递归修改,长用于包含多个文件或子目录的目录权限修改。

–reference=source_file 参考某文件的权限来修改

4.1修改权限的方式一:

       可以针对属主、属组、other单独修改: chmod  u=|g=|o=  file/dir

也可以组合修改: chmod  ug=|go=  file/dir

例:在某目录下有test.file文件,对其进行权限修改

blob.png

4.2 方法二:

使用八进制来修改。上图中文件的权限为664,将其修改为属主、属组、other都具有r、x权限。

blob.png

4.3 方法三:

参考某文件的权限进行修改。如:新建文件new.file,参考test.file将其权限修改与test.file一致。

blob.png

5、修改文件从属关系

5.1 修改属主、属组。chown命令

chown  [options] username:groupname  filename

       常用options:-R 递归,用于目录

chown  root  testfile :修改文件的属主

chown  root:admins  testfile:修改文件的属主和属组

chown  :admins  testfile:修改文件的属组

例:将test.file 属主、属组修改为hadoop,new.file属组修改问gentoo

blob.png

5.2 chgrp (change group的缩写,顾名思义,只能修改文件的属组)

chgrp  grouname  file

       常用参数:-R:递归,用于目录

三、umask介绍

       umask指在创建文件或目录时的默认权限。

              1、新建的文件默认权限:666-umask

                     一般来说,文件默认不允许包含x权限,如果所得结果某位存在执行(奇数)权限,则将其权限+1

              2、新建的目录默认权限:777-umask

查看umask:umask

       blob.png

设定umask:umask #

       blob.png

umask –p:输出可被调用

五、linux文件系统的特殊权限

       权限针对owner、group、other,特殊权限也分别针对这三类用户。

owner、group、other分别对应SUID、SGID、STICKY。

5.1 SUID介绍

       要了解SUID的应用,先来了解下安全上下文。

安全上下文:任何一个可执行文件能不能启动为进程,起决于其发起者对程序文件是否有可执行权限。启动为进程后,进程的属主为发起者,进程的属组为发起者所属的组。进程访问文件时的权限,起决于进程的发起者:

1、 进程的发起者,同文件的属主,则应用文件属主权限

2、 进程的发起者,属于文件的属组,则应用文件属组的权限

3、 应用other的权限

应用场景:当一个用户要以程序文件的的属主身份发起进程,并且访问文件时。比如:passwd命令可以修改用户的密码,但是普通用户对/etc/passwd没有读权限,对/etc/shadow是没有任何权限的。但是普通用户又能成功修改密码,这是因为,passwd文件具有SUID权限。

blob.png

 

 设置和取消SUID权限。

 chmod  u+s  file  设置SUID

 chmod  u-s  file  取消SUID

blob.png

当文件的属主具有x权限是,SUID表现为s,当没有SUID权限时,表现为S。

需要注意的是。具有SUID的程序文件运行为进程访问文件是通过程序文件的属主来对比权限的,在给属主为root的文件设置SUID时应考虑到到对系统的破坏性,建议慎用。

5.2 SGID介绍

       当多个成员共同参与一个项目,该项目有专用的目录来存放项目文件,目录的属组为项目组。这时,项目成员在该目录下创建的目录分别为自己的基本组,对于项目组管理来说带来不便。

若为此目录设置设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组。这就是SGID的作用。

SGID的设置方法:

chmod g+s DIR…

chmod g-s DIR…     

5.3 STICKY介绍

       若一个用户对某目录具有rwx权限时,意味着他可以删除该目录下其他用户的文件,在项目协作的目录中,要使用户只能删除自己所有的文件,其他文件可以修改但是不可删除。这就需要设置STICKY权限。

权限设定:

chmod o+t DIR…

chmod o-t DIR…

5.4 权限位映射:

     SUID: user,占据属主的执行权限位

s: 属主拥有x权限

S:属主没有x权限

    SGID: group,占据属组的执行权限位

s: group拥有x权限

S: group没有x权限

   Sticky: other,占据other的执行权限位

t: other拥有x权限

T: other没有x权限

六、访问控制列表

       ACL(Access Control List)

除了文件的所有者,所属组和其它人,可以对更多的用户设置权限,实现灵活的权限管理。

6.1 设置ACL

setfacl  –m  u|g:username|groupname:mode  file:为某用户或组设置acl。

setfacl  -M  acl_file  file:使用acl_file里面的配置来设置文件的acl

setfacl  -x  user  file:删除指定文件指定用户的acl

setfacl  -X  acl_file  file:参考cal_file删除指定文件的acl配置

mask的权限也可通过修改属组的权限来修改,属组的权限和mask权限同步

setfacl  -m  mask::mode file

setfacl  -m  d:u:username:mode  dirname:对一个目录设置defaults权限,在目录先新建的文件将继承此权限

setfacl  -k  file/dir:删除默认的acl权限

mask:除了所有者和other,其他用户的权限不能高于mask定义的权限;

setfacl  -b f ile/dir:删除所有的acl权限(包括属组的权限,通过setfacl新增的用户、组的权限等)

setfacl  acl.txt | setfacl  -M-  newacl.txt:参考文件1的acl来设置文件2的acl

 

例:设置/gramdir /programfile1的权限,使hadoop用户不具有写、执行权限,program组具有读写权限,使新建文件自动具有acl权限:gentoo用户具有rw权限;sysadmins组具有r权限。

 blob.png

查看:getfacl  filename

blob.png

 blob.png

6.2 acl的备份和恢复

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息。

#getfacl -R /tmp/dir1 > acl.txt

#setfacl -R -b /tmp/dir1

#setfacl -R –set-file=acl.txt /tmp/dir1

#getfacl -R /tmp/dir

例:备份gramdir目录中所有文件的ACL,清除gramdir的所有ACL权限,并利用备份还原

blob.png

原创文章,作者:M20-1钟明波,如若转载,请注明出处:http://www.178linux.com/28347

(0)
M20-1钟明波M20-1钟明波
上一篇 2016-08-04 14:40
下一篇 2016-08-04 14:40

相关推荐

  • 优云Web新功能发布,邀您在线免费体验!

    你是否还在因为无法通过大数据精准分析需求而烦恼? 你是否还在因为无法直观呈现用户的行为而头大? 你是否还在因为怎么优化页面布局而愁眉苦脸? 正所谓“一图胜千言”,一张色彩缤纷的图片甚至可以给人带来意想不到的收获,优云web作为监控利器,其新功能“热图”可以为您解决这些麻烦! 热图作为优云web的特色功能点,究竟是怎样帮助您更好地了解用户行为的呢,让小编给您一…

    系统运维 2017-01-09
  • awk的基本原理

    awk的工作原理 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分,将每片直接保存在内建的变量中,$1,$2,$3….,引用指定的变量,可以显示指定断,或者多个断。如果需要显示全部的,需要使用$0来引用。可以对单个片断进行判断,也可以对所有断进行循环判断。其默认分隔符为空格 awk的基本用法格式awk [options…

    Linux干货 2017-07-11
  • linux中软链接和硬链接简单说明

    linux链接文件 在 Linux 上文件系统被分成两个部分:数据 (user data) 与元数据 (metadata)。数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如:文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含…

    Linux干货 2016-12-05
  • 编译安装LAMP-centos7

    编译安装LAMP (centos7 基于模块化) 编译安装所需版本 Httpd 2.4,PHP 5.4,MariaDB 5.5通用二进制格式(绿色安装包) MAriDB5.5 绿色安装 1、#mkdir lamp :创建一个文件夹,存放软件的版本 2、从官网上下载httpd2.4 mariaDb 5.5 PHP 5.4到该文件夹下 3、# tar xvf m…

    Linux干货 2017-05-17
  • linux历史命令history详解

    history命令 history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。 该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2。  128  ls  129  history[…

    Linux干货 2016-09-05
  • Mysql备份III

    Mysql备份III Mysqldump和mysqldumper A备份和恢复所有库 $ time mysqldumo –all-databases > /mysql/backup/date.time.database.dump.sql $ echo $? $ ls&nbs…

    Linux干货 2016-06-09

评论列表(1条)

  • rex
    rex 2016-08-04 23:00

    对命令的常见用法总结的很好,SUID,SGID,Sticky的应用场景给出一些示例来,能让读者更清晰哦。