用户组和权限管理2

十七、linux文件系统上的特殊权限

    suid:s表示,sgid:s表示,sticky:t表示

    

    安全上下文

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

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

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

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

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

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

            应用文件其他权限

    可执行文件上suid权限

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

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

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

        suid设置在目录上无意义

            chmod u+s file    

            chmod u-s file

[root@localhost testdir]# ll
total 0
-rwxrwxrwx 1 root wang 0 Aug  4 03:33 file1
-rwxrwxrwx 1 root wang 0 Aug  4 03:35 file2
[root@localhost testdir]# chmod u+s file1
[root@localhost testdir]# ll
total 0
-rwsrwxrwx 1 root wang 0 Aug  4 03:33 file1
-rwxrwxrwx 1 root wang 0 Aug  4 03:35 file2
[root@localhost testdir]# chmod u-s file1
[root@localhost testdir]# ll
total 0
-rwxrwxrwx 1 root wang 0 Aug  4 03:33 file1
-rwxrwxrwx 1 root wang 0 Aug  4 03:35 file2

    可执行文件上sgid权限

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

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

            chmod g+s file

            chmod g-s file

[root@localhost testdir]# chmod g+s file1
[root@localhost testdir]# ll
total 0
-rwxrwsrwx 1 root wang 0 Aug  4 03:33 file1
-rwxrwxrwx 1 root wang 0 Aug  4 03:35 file2
[root@localhost testdir]# chmod g-s file1
[root@localhost testdir]# ll
total 0
-rwxrwxrwx 1 root wang 0 Aug  4 03:33 file1
-rwxrwxrwx 1 root wang 0 Aug  4 03:35 file2

    目录上的sgid权限

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

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

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

                chmod g+s file

            chmod g-s file

[root@localhost testdir]# mkdir 1234
[root@localhost testdir]# ll -a
total 8
drwxr-xr-x   3 1000 user1   41 Aug  4 06:56 .
dr-xr-xr-x. 18 root root  4096 Aug  4 00:17 ..
drwxr-xr-x   2 root root     6 Aug  4 06:56 1234
-rw-r--r--+  1 root root     0 Aug  4 04:49 file1
-rwxrwxrwx   1 root wang     4 Aug  4 04:32 file2
[root@localhost testdir]# chmod o+w 1234
[root@localhost testdir]# useradd 1
[root@localhost testdir]# su - 1
[1@localhost ~]$ cd /testdir/1234
[1@localhost 1234]$ touch file1
[1@localhost 1234]$ ll file1
-rw-rw-r-- 1 1 1 0 Aug  4 06:58 file1
[1@localhost 1234]$ exit
logout
[root@localhost testdir]# chmod g+s 1234
[root@localhost testdir]# su - 1
Last login: Thu Aug  4 06:57:23 CST 2016 on pts/1
[1@localhost ~]$ cd /testdir/1234
[1@localhost 1234]$ touch file2
[1@localhost 1234]$ ll
total 0
-rw-rw-r-- 1 1 1    0 Aug  4 06:58 file1
-rw-rw-r-- 1 1 root 0 Aug  4 06:58 file2

    suicky位

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

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

        sticky设置在文件上无意义

            chmod o+s file

            chmod o-s file

    特殊权限数字法

        suid:chmod 4777 file

        sgid:chmod 2777 file

        sticky:chmod 1777 dir

    权限为映射

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

            s:属主拥有x权限

            S:属主没有x权限

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

            s:group属组拥有x权限

            S:group没有x权限

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

            t:other拥有x权限

            T:other没有x权限

    设置文件特定属性

        chattr option file

            +A:锁定访问时间,访问不刷新时间

            +i:锁定文件不能删除,改名,更改

            +a:锁定文件,能看,能修改,不能改名,不能删除

            lsattr 显示特定属性

        作用:避免误操作,误删除。

[root@localhost testdir]# chattr +i file2
[root@localhost testdir]# rm -rf file2
rm: cannot remove ‘file2’: Operation not permitted
[root@localhost testdir]# echo "xxx" > file2
-bash: file2: Permission denied
[root@localhost testdir]# lsattr file2
----i----------- file2

十八、访问控制列表

    acl:access control list。实现灵活的权限管理

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

        Centos7默认创建的xfs和ext4文件系统有acl功能

        Centos7之前版本,默认手工创建的ext4文件系统无acl功能

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

        setfacl option (d)(ug):username:权限 file

                u:用户

                g:组

                d:在这个目录下新建的文件有acl权限

            -m:修改acl权限

            -x:删除acl权限

            -M:调用脚本修改acl权限

            -X:调用脚本删除acl权限

useradd wangwenjie
[root@localhost testdir]# touch file1
[root@localhost testdir]# setfacl -m g:wangwenjie:rwx file1
[root@localhost testdir]# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
group::r--
group:wangwenjie:rwx
mask::rwx
other::r--

[root@localhost testdir]# setfacl -x g:wangwenjie file1
[root@localhost testdir]# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--

        setfacl -k dir:删除默认acl权限

        setfacl -b file:清除所有acl权限

[root@localhost testdir]# ll
total 0
-rw-r--r--+ 1 root root 0 Aug  4 07:10 file1
[root@localhost testdir]# setfacl -b file1
[root@localhost testdir]# ll
total 0
-rw-r--r-- 1 root root 0 Aug  4 07:10 file1

        getfacl:查看特殊权限

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

[root@localhost testdir]# setfacl -m g:wangwenjie:rwx file1
[root@localhost testdir]# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
group::r--
group:wangwenjie:rwx
mask::rwx
other::r--

[root@localhost testdir]# touch file2
[root@localhost testdir]# getfacl file1 | setfacl --set-file=- file2
[root@localhost testdir]# getfacl file2
# file: file2
# owner: root
# group: root
user::rw-
group::r--
group:wangwenjie:rwx
mask::rwx
other::r--

    

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

        默认acl权限给x,文件也不会x权限

        bash cal 不能删除

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

    nask需要与用户的权限进行逻辑与运算后,才能变成有限的权限

        用户或组的设置存在于mask权限设定范围内才会生效

            setfacl -m mask::权限 file

        –set选项会把所有的acl想都删除,用新的代替,需要注意的是一定要包含ugo的设置,不能像-m一样只是添加acl就可以

            setfacl –set u::权限,g::权限,o::权限 file

    备份和恢复acl

        主要的文件操作命令cp和mv都支持acl,只是cp命令需要加上-p参数,但是tar等常见的备份工具是不会保留目录和文件的acl信息。

            cp -p 保留权限

            getfacl -R 目录 > file1     把目录里的acl权限备份到file1文件里

            setfacl -R -b 目录     删除目录的所有acl权限

            setfacl -R –set-file=file1 目录     通过file1文件把目录的acl权限还原

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

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

相关推荐

  • 第八周作业

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。    集线器(HUB)主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。集线器是一种共享设备,HUB本身不能识别目的地址,当同一局域网内的A主机给B主机传输数据时,数据包在以HUB为架构…

    Linux干货 2017-02-27
  • Linux 环境 SSD(固态硬盘)使用指南

    原文链接:http://www.jinbuguo.com/storage/ssd_usage.html 前言 因为SSD有着诸多与传统机械式硬盘不同的特点,而且这些特点导致了SSD在实际使用中的性能和寿命与其使用方法紧密相关。所以并不是说买来一块非常牛X的SSD就万事大吉了。另一方面,SSD的性能并不像机械式硬盘那样比较稳定(浮动范围小),而是呈现出一种离散…

    Linux干货 2015-04-08
  • N28_第二周

    linux文件管理命令

    Linux干货 2017-12-10
  • HTTP详解(1)-工作原理

    1. HTTP简介          HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输…

    Linux干货 2015-04-04
  • Linux进程及作业控制

    inux进程 进程的概念 当一个系统启动时,刚开机是第一个运行的是内核代码!先把内核放到cpu上运行,等内核控制和掌管了一切,有内核启动进程!然后创建第一个进程 init进程  内核空间 用户空间也都已被创建成功!后期的一切管理工作都由init来负责 init不能代表系统完成一些内核特权的执行!但由他负责向内核提交 他…

    Linux干货 2016-09-10
  • 关于VIM编辑器

                                                      &nbsp…

    系统运维 2016-08-11

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-07 23:53

    文章的层次结构清晰明了,内容丰满,有理论有实践。