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

相关推荐

  • Linux上功能强大的文本编辑工具—vim

    vim–Vi Improved是一款全屏文本编辑器 vi: Visual Interface,文本编辑器 可见,vim是vi的升级版,所以我们当然要学习vim! vim的功能强大,自然命令、用法也会种类繁多,想要用的得心应手自然是需要长期的实际操作的,正所谓工欲善其事必先利其器,我们要想能够在linux上从容应对繁多的文本编辑,无疑vim编辑器是…

    Linux干货 2016-08-12
  • linux第五周小结

    不知不觉已经第五周了,好快啊!这周我们主要讲了读命令,查找命令,压缩,解压缩,安装等命令,今天我总结一下查找命令 查找命令主要有:locate和find命令,但我们经常用到的也最实用的当属find,下面我重点总结一下find命令 有时可能需要在系统中查找具有某一特征的文件(例如文件权限、文件属主、文件长度、文件类型等等)。这样做可能有很多原因。可能出于安全性…

    2017-08-13
  • 细数Linux发行版

    什么是Linux 广义上讲:Linux内核+应用程序狭义上讲:Linux内核  > Linux内核指的是我们通常所说的Kernel,主要用于负责系统调用、进程管理、内存管理、文件系统管理等功能。  应用程序指的是由GNU组织提供的开源的、通用的应用程序,如gcc、glibc、vi等。 我们平常所说的Linux,通常指广义层面上的Li…

    Linux干货 2017-08-30
  • Linux中磁盘管理与文件系统创建挂在

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

    Linux干货 2016-08-26
  • 网络26期 第五周作业

    1. 显示当前系统上root、fedora或user1用户的默认shell egrep -o “^(root|fedora|user1)\>.*[^:]+$” /etc/passwd | cut -d: -f1,7 2. 找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(…

    2017-03-13
  • 马哥教育网络班21期+第2周作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。     cp复制,mv移动,rm删除     1、cp:             1,用法: cp [OPTIO…

    Linux干货 2016-07-12

评论列表(1条)

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

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