用户组和权限管理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)
上一篇 2016-08-04 21:45
下一篇 2016-08-04 22:34

相关推荐

  • Linux中磁盘管理与文件系统创建挂在

    磁盘管理 Linux中哲学思想:Linux一切皆文件,所有访问磁盘设备就如同访问一个文件一样,因此要想使用需要一个文件接口 如何向设备中输入数据?     首先将设备在系统上映射成一个文件,在此文件上进行读写操作就相当于对设备进行读写,对程序而言首先是打开一个文件open(),然后执行read()或者write(),最…

    Linux干货 2016-08-26
  • 第三周 磁盘文件系统进阶

    文件系统的使用:     首先要“挂载”:mount 命令和umount命令     根文件系统这完的其他文件系统要想能够访问, 都必须通过“关联”至根文件上的某个目录来实现,次关联操作即为“挂载”;此目录几位“挂载点”;     挂载点:mount-point,用于做为另一个文件系统的访问入口; …

    Linux干货 2016-11-22
  • 马哥教育网络班21期+第八周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:也叫做桥接器,工作在OSI七层中第二层数据链路层,主要是用来连接两个局域网的一种存储或者转发设备,它能将一个大的LAN分隔      为多个网段,也可以将多个LAN互联为一个逻辑LAN,网桥是在数据层上实现的局域网互联;即使…

    Linux干货 2016-09-08
  • 五种开源协议的比较(BSD,GPL,LGPL,Apache,BSD)

    BSD开源协议(original BSD license、FreeBSD license、Original BSD license) BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 但”为所欲为”的前提当你发布使用了BSD协议的代码,或则以BSD协议代码…

    Linux干货 2016-01-16
  • 第一周的博客作业

    1.计算机的组成以及功能:     cpu:就是中央处理器,运算和判断计算机的数据;     储设器:存储计算机的数据;     主板:链接多的计算机的硬件;     I/O设备:输入,输出设备,,如…

    Linux干货 2017-01-05
  • N25-第二周作业

    N25-第二周作业 博客作业 1、linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 linux上处理目录的常用命令: ls :列出目录 cd :切换目录 pwd:显示当前工作路径 mkdir:创建目录 rm:删除文件或目录 rmdir:删除空文件 mv:剪切、重命名文件、目录 cp:复制文件或目录 touch:创建空文件 ls:= li…

    Linux干货 2017-02-08

评论列表(1条)

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

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