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

相关推荐

  • 浅谈RPM

    浅谈RPM    [先絮叨下编译啊]   1、 库:其实就是一个程序模块(它没有执行入口,不能独立执行,只能被能独立运行的程序调用时执行)你可以把它想象成工具螺丝刀,可执行的程序是就是你自己;螺丝刀能自己干活吗?没有螺丝刀能拧螺丝吗?或者说你现在制作一个? 螺丝刀可以实现这个功能但需要你来执行这个动作。   2、静态编译:将程序所需要的所有的库都编…

    Linux干货 2015-04-27
  • CentOS7.2编译安装httpd

    环境:CentOS7.2 软件包:httpd-2.2.29.tar.bz2 1、解压缩httpd-2.2.29.tar.bz2 2、进入解压过的文件夹,查看用法(INSTALL、)后然后./configure –help查看参数后执行需要的参数操作,     通过选项传递参数,指定启用特性,安装路径的等,…

    Linux干货 2016-08-24
  • linux哲学思想

    有关运维,在哲学上的思想。 正确的哲学思想在我看来就是公理,就是像1+1=2一样大家都必须得遵守的公理。 当然,所有的公理都是有前提的,而有关linux的哲学思想当然是在linux环境这个大前提下。才是公理。在我看来,公理就是在学习知识之前所要依靠的准则,linux下的一切都在这些准则下。 比如: 一切接文件  linux下所有都是以文件的形式保存…

    2017-07-22
  • 系统管理之系统安装及自动化安装

    概述:     上篇我们讨论了下关于Linux系统的启动流程和grub相关的内容,本篇将介绍一下Linux的系统安装相关的内容,具体分为:     1、系统安装程序anaconda的介绍     2、kickstart文件的介绍 &nbsp…

    Linux干货 2016-09-16
  • Cobbler实现多系统自动化安装

    Cobbler介绍:  Cobbler能够快速建立多系统同时安装的网络系统安装环境;传统的pxe+dhcp+tftp+kickstart仅能够提供单一系统安装,功能过于简单;如果遇到安装不同操作系统时就遇到瓶颈;而cobbler正好解决了这一问题。Cobbler是增强版的网络系统安装。 Cobbler由不同的组件配合完成系统安装,各组件之间配合如下…

    Linux干货 2015-08-11
  • diy自己的linux

    准备一台liunx的机器,我用的是liunx虚拟机 单独加载一块硬盘,我加载了一块20G的硬盘,然后用fdisk /dev/sdb进行分区,sdb1用来作为将来系统的/boot分区,所有100M就可以了,sdb2用来作为将来系统的/分区,我给了10G。然后将两个分区格式化为ext4系统。 mkdir /mnt/boot mkdir /mnt/sdc2 mou…

    Linux干货 2016-09-14