linux权限管理

linux文件权限

   文件的属性和权限的设置对于linux系统来说是相当重要的,如果对这一块的知识没有一个深入的了解,你的系统就有可能有很大的危险。那么首先我们来看一看文件的属性所对应的都是什么意思吧。

linux权限管理1.png

上图第一个字符是d,他代表了文件的类型,d的意思就是目录文件,那么除了目录文件还有什么文件呢?

    d:目录 -:文件 l:链接文件 b:可以存储的接口设备 c:串行端口设备(键盘,鼠标)

接下来的九个字符以三个为一组分别是

    rwx:属主的权限。 r-x:属组的权限。 r-x:其他人的权限。

    r(read):可读取 w(write):可写入 x(execute):可执行

   所以上面这个文件的属主是root。他对文件可读取可写入可执行。文件的属组是root,root组内成员可读取可执行,除了属主属组之外的其他人对该文件可读取可执行。

更改属主属组权限命令

    chown:改变文件所属的用户组。

    chgrp:改变文件的所有者。

    chmod:改变文件的权限。

修改文件的属主:chown

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

    用法: OWNER

    OWNER:GROUP

    :GROUP 命令中的冒号可用.替换;

    -R: 递归

    chown [OPTION]… –reference=RFILE FILE…

修改文件的属组:chgrp

    chgrp [OPTION]… GROUP FILE…

    chgrp [OPTION]… –reference=RFILE FILE…

    -R 递归

修改文件的权限:chmod

  文件权限的改变可以使用chmod这个命令,但是权限的设置方法有两种,分别可以使用数字或者是符号来进行更改。

命令使用格式

    chmod [OPTION]… OCTAL-MODE FILE…

-R: 递归修改权限

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

    chmod [OPTION]… –reference=RFILE FILE… 参考RFILE文件的权限,将FILE的修改为同RFILE;

数字改变文件权限

    linux系统的基本权限有9个,每三个一组,每一组分别对应了owner、group、others三种身份。我们可以使用数字来代表各个权限分别是

    r:4 w:2 x:1

当要设置xx文件权限为[-rwxr-xr-x]

    owner=rwx=4+2+1=7

    group=r-x=4+1=5

    others=r-x=4+1=5

所以在设置权限时,该文件权限的设置数字就是755.执行chmod 755 xx就可以了。

符号改变文件权限

三种身份用user=u;group=g;others=o来表示,读写执行权限用rwx来表示

linux权限管理2.png

当xx文件权限为[-rwxr-xr-x]我们要给它加入所有权限时执行

    1、chmod a=rwx

    2、chmod g=rwx,u=rwx,a=rwx

    3、chmod g+w,o+w

目录/文件的权限意义

  权限对文件的意义

    r(read):可读取此文件的内容,比如读取文本文件里的内容。

    w(write):可以编辑、新增或者是修改该文件的内容。

    x(execute):该文件可以被系统执行。

  权限对目录的重要性

    r:表示具有读取目录结构列表的权限。可以查询该目录结构下的文件列表。

    w:表示你具有更改该目录结构列表的权限

  如:新建新的文件与目录。

     删除已存在的文件与目录(不管该文件的权限如何)。

     将已存在的文件或目录进行重命名。

     转移该目录内的文件、目录位置。

     x:代表的是用户能否进入该目录成为工作目录。

新建文件和目录的默认权限

  umask值 可以用来保留在创建文件权限

  新建FILE权限: 666-umask 如果所得结果某位存在执行(奇数)权限,则将其权限+1

  新建DIR权限: 777-umask

  非特权用户umask是 002 root的umask 是 022

    umask: 查看

    umask #: 设定

    umask 002

    umask –S 模式方式显示

    umask –p 输出可被调用

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

  这里加入我们新建一个文件默认让它没有权限,根据规则,命令为:

    umask 777

    666-777=-1-1-1

    每一项加1得000

linux权限管理3.png

linux系统中三种特殊权限

    SUID,  表现为s  数字为4(作用在二进制程序)

    SGID,  表现为s  数字为2(作用在二进制程序)

    Sticky 表现为t   数字为1(作用在目录上)

    安全上下文

SUID

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

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

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

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

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

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

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

SGID

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

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

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

    SUID设置在目录上无意义

    当一个目录有S权限时在该目录下创建的所有新文件子目录文件自动继承该目录的属组

Sticky(粘滞位:可以让其他人不能删除文件。)

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

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

    sticky 设置在文件上无意义

    权限设定: chmod o+t DIR… chmod o-t DIR…

    例如:

    ls -ld /tmp drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp

注意:对文件夹来说其他权限必须配合x权限。

设定文件的特殊属性

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

    chattr +a 只能增加\读取。

    chattr +A 锁定文件访问时将。

    lsattr 显示特定属性

linux权限管理4.png

访问控制列表(ACL:Access Control List)

    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生效顺序:所有者,自定义用户,自定义组,其他人

    FAT分区不支持权限。

有关acl的命令例

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

    mount -o acl /directory

    getfacl file |directory  查看目录的具体acl权限

    setfacl -m u:user:rwx file|directory

    setfacl -Rm g:user:rwX directory  对于

    setfacl -M file.acl file|directory  读取文件内容设置目标目录权限

    setfacl -m g:user:rw file| directory

    setfacl -m d:u:user:rx directory

    setfacl -m m::r directory  更改所有目录的有效权限

    setfacl -x u:user file |directory  删除用户权限

    setfacl -X file.acl directory 读取文件内容删除目标目录权限

    setfacl -b directory 彻底清空文件acl权限

    添加acl时目录所属组的权限更新为mask权限。但是mask权限只影响添加进acl的用户权限与用户组的权限

acl访问控制列表

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

    getfacl 可看到特殊权限:flags

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

    base ACL 不能删除

    setfacl -k dir 删除默认ACL权限

    setfacl -b file1清除所有ACL权限

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

    mask只影响除所有者和other的之外的人和组的最大权限 Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限 (Effective Permission) 用户或组的设置必须存在于mask权限设定范围内才会生效。 setfacl -m mask::rx file

    –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

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

(0)
502795641502795641
上一篇 2016-08-04 21:40
下一篇 2016-08-04 21:40

相关推荐

  • 分区管理

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

    Linux干货 2017-08-20
  • 初学Linux之shell脚本编程

    shell程序的特点;shell脚本的结构和格式要求;变量;算术运算和逻辑运算;条件测试;防止扩展和shell登录的相关配置文件

    2018-01-01
  • bash脚本编程之select语法详解

    shell编程之select select控制结构(在tcsh中不可用)基于Korn Shell中的控制结构 select语句首先显示一个菜单,然后根据用户的选择给变量赋予相应的值,最后执行一系列命令 其语法如下: select varname in list do commands done select 表达式是一种bash的扩展应用,动作包括: 自动用…

    Linux干货 2016-08-24
  • 第一天心得体会

    初次见面,你好

    2018-03-26
  • N28-第四周:正则表达式练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。
    2、编辑/etc/group文件,添加组hadoop。
    3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。
    4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。
    5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。
    6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;
    7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
    8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;
    9、找出/etc/passwd文件中的一位数或两位数;
    10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
    11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;
    12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;
    13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

    2017-12-24
  • M22 程序员偷懒战法

    前段时间有个外国的程序猿走红网络,这个哥们可以说是懒到了极点,上班请假给领导发短信写脚本,下班晚回家给老婆发短信写脚本,甚至于接个咖啡也要写脚本。这个哥们离职之后,他的同事在他的办公电脑上发现了这些脚本,并公布到了网上,引起众程序猿纷纷膜拜。最近我刚好学到shell脚本部分,就让我分析其中的一个跟领导请假的脚本吧。 #!/bin/sh -e # Exit e…

    Linux干货 2017-04-06

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-07 22:17

    用户和组管理相关的命令都已经总结好了,如果能相应的有些示例说明,与缩进,就更好了哦