Linux文件系统上的权限

Linux文件系统上的权限

首先我们来看一下如何修改文件的属主和属组

修改文件的属主:chown

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

用法

OWNER修改属主

OWNER:GROUP修改属主:属组

:GROUP修改属组

命令中的冒号可以用.替换

-R:递归

chowen [OPTION]… –reference=RFILE FILE…

参考RFILE文件的权限,将FILE文件的权限修改为与RFILE文件权限相同

修改文件的属组:chgrp

chgrp[OPTION]… GROUP FILE…

chgrp[OPTION]… –reference=RFILE FILE…

-R:递归

下面我们来说一下在Linux系统中,文件的权限

文件系统中文件的权限是指文件系统上文件和目录的权限,文件系统上的权限主要针对三类对象进行定义:

owner:属主,u

group:属组,g

other:其他,o

每个文件都针对每类访问者定义了三种权限:

r:readable

w:writable

x:excutable

权限针对文件和目录还有不同的含义:

文件:

r:可使用文件查看类工具获取其内容

w:可修改其内容

x:可以把此文件提请内核启动为一个进程

目录:

r:可以使用ls查看此目录中文件列表

w:可以在此目录中创建文件,也可以删除此目录中的文件

x:可以使用ls-l查看此目录中文件列表,可以cd进入此目录

这里,我们补充一个X

X:只给目录权限,不给文件x权限

这里,非常有必要说一下Linux文件系统中,权限应用模型:

以ls -l /etc/issue为例

-rw-r–r–. 1 root root 112 Jul 25 09:24 /etc/issue

然后执行 cat /etc/issue

1.首先看命令的发起者是否是文件的属主既左三位的权限,如果是则应用左三位的权限,否则

2.查看命令的发起者是否是文件的属组既中三位的权限,如果是则应用中三位的权限,否则

3.是使用右三位的权限

上面讲到我们可以用rwx来表示权限,这里我们讲一下另外一种表示方法

权限、二进制、八进制表示对应的表示方法

—000 0

–x 001 1

-w-010 2

-wx 011 3

r–100 4

r-x 101 5

rw-110 6

rwx 111 7

例如:

640: rw-r—–

rwxr-xr-x: 755

知道什么是文件权限,我们来说一下如何修改文件权限

chmod

chmod[OPTION]… OCTAL-MODE FILE…

    -R: 递归修改权限

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

    MODE:

修改一类用户的所有权限:

u= g= o= ug= a= u=,g=

修改一类用户某位或某些位权限

u+ u-g+ g-o+ o-a+ a-+ –

chmod[OPTION]… –reference=RFILE FILE…

参考RFILE文件的权限,将FILE的修改为同RFILE;

注意:仅管理员可修改文件的属主和属组;

文件或目录创建时的遮罩码:umask

umask:文件的权限反向掩码,遮罩码;

    文件:

    666-umask

    目录:

    777-umask

    注意:之所以文件用666去减,表示文件默认不能拥有执行权限:如果减得的结果中有执行权限,则需要将其加1;

    umask:023

    666-023=644

    777-023=754

    umask命令:

    umask:查看当前umask

    umask MASK:设置umask

    新建DIR权限: 777-umask

非特权用户umask是002

root的umask是022

umask–S 模式方式显示

umask–p 输出可被调用

全局设置:/etc/bashrc用户设置:~/.bashrc

    注意:此类设定仅对当前shell进程有效;

Linux文件系统上的特殊权限

在Linux文件系统上有三个特殊权限:SUID,GUID,Sticky

首先我们再次强调一下Linux权限模型是由mode和owner组成

mode:rwx

owner:ugo

这里我们有必要说一下安全上下文:

前提:进程有属主和属组;文件有属主和属组

1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

2) 启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组

3) 进程访问文件时的权限,取决于进程的发起者

a) 进程的发起者,同文件的属主:则应用文件属主权限

b) 进程的发起者,属于文件属组;则应用文件属组权限

c) 应用文件“其它”权限

SUID:Set UID

前提:此类文件为有可执行权限的命令

任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

启动为进程之后,其进程的属主为原程序文件的属主(此进程的有效身份不是发起者,而是命令文件自身的属主)

SUID只对二进制可执行程序有效

SUID设置在目录上无意义

权限设定:

chmodu+s FILE…

chmodu-s FILE…

使用ls-l查看时,此s可能显示为大写或小写两种形式之一;

属主原有执行权限时,显示为小写;

属主原无执行权限时,显示为大写;

SGID:Set GID

可执行文件上SGID权限:(当SGID作用于文件时)

任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

启动为进程之后,其进程的属主为原程序文件的属组

权限设定:

chmodg+s FILE…

chmodg-s FILE…

目录上的SGID权限:(当SGID作用于目录时)

默认情况下,用户创建文件时,其属组为此用户所属的主组

一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组

通常用于创建一个协作目录

权限设定:

chmodg+sDIR…

chmodg-s DIR…

Sticky:沾滞位

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权

在目录设置Sticky 位,只有文件的所有者或root可以删除该文件

sticky 设置在文件上无意义

权限设定:

chmodo+t DIR…

chmodo-t DIR…

例如:

ls-ld/tmpdrwxrwxrwt12rootroot4096Nov215:44/tmp

刚才在前面我们讲了权限数字法,同样,

三个特殊位也组成一组权限,既suidsgidsticky,可表示为;

SUID SGID STICKY

000 0

001 1

010 2

011 3

100 4

101 5

110 6

111 7

例:chmod4777 /tmp/a.txt

权限位映射

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

s: 属主拥有x权限

S:属主没有x权限

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

s: group拥有x权限

S:group没有x权限

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

t: other拥有x权限

T:other没有x权限

设定文件特定属性:

chattr +i 不能删除,改名,更改

chattr +a 只能增加

lsattr 显示特定属性

访问控制列表

ACL:Access Control List,实现灵活的权限管理

除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

CentOS7.0默认创建的xfs和ext4文件系统有ACL功能。

CentOS7.X之前版本,默认手工创建的ext4文件系统无ACL功能。需手动增加:

tune2fs –o acl/dev/sdb1

mount –o acl/dev/sdb1 /mnt

ACL生效顺序:所有者,自定义用户,自定义组,其他人

为多用户或者组的文件和目录赋予访问权限rwx

mount -o acl /directory

getfacl file |directory

setfacl -m u:wang:rwx file|directory

setfacl -Rm g:sales:rwX directory

setfacl -M file.acl file|directory

setfacl -m g:salesgroup:rw file| directory

setfacl -m d:u:wang:rx directory

setfacl -x u:wang file |directory

setfacl -X file.acl directory

ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限

getfacl可看到特殊权限:flags

默认ACL权限给了x,文件也不会继承x权限。

base ACL 不能删除

setfacl-k dir 删除默认ACL权限

setfacl-b file1清除所有ACL权限

getfaclfile1 | setfacl–set-file=-file2 复制file1的acl权限给file2

mask只影响除所有者和other的之外的人和组的最大权限

Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)

用户或组的设置必须存在于mask权限设定范围内才会生效。setfacl-m mask::rxfile

–set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以.如:

setfacl –set u::rw,u:wang:rw,g::r,o::-file1

备份和恢复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/dir1

原创文章,作者:song_linux,如若转载,请注明出处:http://www.178linux.com/27500

(0)
song_linuxsong_linux
上一篇 2016-08-04
下一篇 2016-08-04

相关推荐

  • LAMP

    备注:本次安装是采用的系统自带的yum源进行安装的 第一步:安装Apache 1:安装apache,命令如下: yum install -y httpd   2:修改httpd.conf,修改ServerName的域名,具体步骤如下: 使用vi编辑器打开apache配置文件,命令如下: vi /etc/httpd/conf/httpd.conf 按…

    Linux干货 2017-10-09
  • 文件元数据信息详解

    文件元数据信息详解 文件的元数据是什么? 文件的数据分为两类:一类为数据,即文件的实际内容;另一类为元数据,用来描述文件的特征。 元数据内容: 文件名 文件大小 文件所在数据块 数据块的大小 文件类型 文件所在的Inode 硬链接次数 权限 属主id 属组id 最近一次访问时间戳 最近一次更改文件内容的时间戳 最近一次更改文件元数据的时间戳 查看文件的元数据…

    Linux干货 2017-07-09
  • shell 脚本的编辑基础

          shell脚本是Linux运维工程师必须掌握的技能之一,shell脚本的使用让我们更好的操作Linux系统,方便了我们的执行。 一,编程基础 编程基本概念 编程逻辑处理方式:顺序执行,循环执行,选择执行 程序:指令+ 数据 shell 编程:过程式、解释执行 shell程序:提供了编程能力,解释执…

    Linux干货 2016-08-22
  • Linux文件管理相关命令、bash特性及元数据

    一、 Linux上的文件管理类命令及其常用的使用方法。 1、cp命令:copy     源文件、目标文件         单源复制cp [OPTION]…[-T] SOURCE DEST   &nb…

    2017-07-09
  • 有证说话硬–实现CA和证书申请

    centos下利用openssl来实现证书的颁发 直接进入正题,细节坑就不说了,自己解决起来更有挑战性不是 步骤流程: 我是拿的7.3版本做CA主机,6.8版本做客户端 1.创建CA 2.生成私钥 3.生成自签名证书 4.到客服端 5.生成私钥 6.生成证书申请文件 7.将请求发送给-CA主机 8.CA主机-验证签署 9.拷回给客户端使用 用法:openss…

    2017-04-11
  • Linux命令之:setfacl和getfacl

    命令总结之:setfacl和getfacl acl:access control list,实现灵活的权限管理 除了文件的所有者,所属组合其他人,可以对更多的用户设置权限 acl生效顺序:所有者、自定义用户、自定义组、其他人 1、首先我们查看man帮助文档说明 [root@centos7 sixijie]# man setfac…

    Linux干货 2016-08-04