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 14:40
下一篇 2016-08-04 14:40

相关推荐

  • grep文本查找和正则表达式

    一、grep grep: (Global search REgular expression and Print outthe line)全局查找正则表达式并且打印结果行。不会对输入的文本进行修改。 Unix的grep家族包括grep、egrep和fgrep,egrep是grep的扩展,支持更多的正则元字符; fgrep就是fixed grep或f…

    Linux干货 2016-08-07
  • Zabbix通过邮件报警

                    Zabbix通过邮件报警 前言 本篇文章转自我的个人博客 http://anyisalin.com 欢迎大家访问 这次的内容大部分都是操作, 但是大家需要对定…

    2016-05-13
  • 18页PPT带你深度解读运维自动化

    一、概述    在前面的文章中,提到【运维的本质—可视化】,在其中着重强调是自动化的可视化和数据化的可视化。在这个文章中,全面解码看看自动化的极致状态为什么是可视化?在前面的另外一篇文章【运维平台全体系介绍】中,也讲到运维平台体系的构成,提出“**及服务”的理念,其中有几部分和自动化密切相关,比如说资源及服务、配置及服务、架构…

    2015-04-03
  • iptables

    练习:基于状态放行telnet, ftp, ssh, http, samba, icmp等服务 (1) 对本机的ping请求每分钟不得超出20个 (2) 每客户端对本机的ssh的并发连接数不得超过3个 (3) 本机的telnet服务仅允许工作时间内访问 [root@node1 ~]# vim iptables.sh iptabl…

    Linux干货 2016-10-22
  • 运维工程师技能需求排行

    这是我今天在拉勾网搜索运维,翻完了4四页也招聘信息之后得到的,我的目的是想要看看之后的学习,哪个更应该成为重点,有些在我意料之中,有些还真的没想到,算是努力了一个小时的收获吧,分享给大家。
    注意:其中的看法仅代表个人观点,很多都是依靠我自己的学习经验和工作经验累积的

    Linux干货 2017-12-12
  • sed讲解与使用

            sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理…

    Linux干货 2016-08-15