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

相关推荐

  • 文件的权限详解(一)

    文件的权限 修改文件的属主和属组 chown 功能:更改属主命令,同时也能更改属组用法:   chown  选项  [属主名][:属组名]  文件名  (分隔符改成.也行) chown  选项   参考的文件=要更改的文件 chown [OPTION]… –reference=R…

    Linux干货 2016-08-04
  • MAN 手册各章节功能介绍及快捷键键位整理

    MAN 手册各章节功能介绍及快捷键键位整理 前言  Man 手册页(Manua pages ,缩写man page) 是在linux操作系统在线软件文档的一种普遍形式。内容包括计算机程序库和系统调用等命令的帮助手册。  手册页是用troff排版软件包排版的,是一组man宏。当时手册页系统带来的联机文档可用性被认为是一项伟大的进步。时至今日…

    Linux干货 2016-10-17
  • root用户密码破解

    方法一:进入单用户模式破解root密码 (1)编辑grub菜单(选定要编辑的title,而后使用e命令) (2)在选定的kernel后附加 1,s,S或single都可以 (3)在kernel所在行键入"b"命令即可进入单用户模式 (4)运行passwd命令修改root用户密码 并重启 (5)输入密码即可登录 方法二:进入救援模…

    Linux干货 2016-09-15
  • 分区管理

    分区管理     一.磁盘分类 机械硬盘(HDD):该硬盘是传统的普通硬盘。主要有:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成  固态硬盘(SSD):用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元组成。 二.特点 1.     &n…

    Linux干货 2017-08-20
  • MBR与GPT分区结构的不同及磁盘分区命令总结

    一、MBR分区结构 主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,是目前比较流行的一种分区结构。磁盘的0磁道0扇区称为MBR,它的大小是512字节,这个区域被分为三个部分: 第一部分为boot loader(主引导程序),占446字节; 第二部分为Partition table(分区表),即DPT,占64字节,每个分区项…

    Linux干货 2016-08-29
  • vim编辑器练习&任务计划&脚本编程练习

    请详细总结vim编辑器的使用并完成以下练习题 vim总结: vi:Visual Interface,是一种文本编辑器,所谓文本数据是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。 文本编辑器的种类:  行编辑模式:所谓行编辑器是指一行一行来编辑处理的工具,如sed。  全屏编辑器:编辑空间占据整个屏幕,如nano…

    Linux干货 2016-10-31