linux文件权限的管理

目录:

1、权限的概念
2、一般权限
3、管理权限的命令chown、chgrp、chmod
4、特殊权限

文件权限:

  • [root@centos6 ~]# ll
    |-rw——-. |1 |root |root | 1501 |Jul 14 10:46 |anaconda-ks.cfg
    | 权限 |硬链接数 |属主 |属组 |大小 |mtime |文件名

1、权限的概念

在linux中每一个文件或目录都包含有访问权限,这些权限决定了谁能访问和如何管理这些文件或目录。
在linux中,文件或目录的权限分为三种对象,即
    |所有者(所属组)| ower  |  u
    |所有者(所属组)| group |  g
    |其他用户       |other  |  o

2、一般权限:

在linux中文件或目录的权限有r(读)、w(写)、x(可执行)    
  • 对于文件来说

    r:可使用文件查看类的工具获取其内容,例如ls cat等命令;
    w:可修改文件中的内容;而且只要文件又写的权限,就可以对文件进行修改文件数据;
    x:可以把此文件提请内核启动为一个进程;
    
  • 对于目录来说:

    r:可使用ls命令获取目录下的所有文件列表;
    w:可修改此目录下的文件列表,即创建或删除文件;但需要x的权限;
    x:可cd至此目录中,且可使用ls -l来获取所有文件的详细信息;通常来说x权限是基础权限;
    

    注意:X只给目录x权限,不给文件x权限。


通过二进制和八进制进行上述权限:

|权限格式     |二进制表示  |八进制表示
|   ---     |   000     |   0
|   ---     |   001     |   1
|   -w-     |   010     |   2
|   -wx     |   011     |   3
|   r--     |   100     |   4
|   r-w     |   101     |   5
|   rw-     |   110     |   6
|   rwx     |   111     |   7

*下面是权限组合机制:
|权限项   |文件类型      |读|写|执行   |读|写|执行    |读|写|执行
|字符表示 | d|l|p|-|s|c |r |w |x     |r |w |x     |r |w |x  
|数字表示               |4 |2 |1     |4 |2 |1     |4 |2 |1
|权限分配               |文件所有者    |文件所属组|  |其他用户

3、管理目录或文件的命令详解:

(1)chown 命令 change file owner and group #修改文件所有者和所属组

usage: chown [OPTION]… [OWNER][:[GROUP]] FILE…
- -R :–recursive 递归
- -v, –verbose 显示过程

示例
[root@centos7 app]#ll #修改f1文件的所有者和所属组;
-rw-r–r–. 1 root root 0 Jul 24 19:31 f1
[root@centos7 app]#chown laowang:laowang f1
[root@centos7 app]#ll
-rw-r–r–. 1 laowang laowang 0 Jul 24 19:31 f1
[root@centos7 app]#chown -Rv laowang:laowang dir1/ #修改目录dir1下所有文件及其目录的所有者和所属组并显示过程

chown [OPTION]… –reference=RFILE FILE… #参考别的文件或目录修改所有者和所属组

[root@centos7 app]#chown dir3 –reference=./dir1 #参考文件dir1目录修改dir3的所有者和所属组;
注意:文件所有者只有root权限才能修改,所属组必须在组列表中。


(2)chgrp 命令 chgrp - change group ownership #修改所属组

usage: chgrp [OPTION]… GROUP FILE…

[root@centos7 app]#chgrp manong dir1 #修改dir1目录的所属组;
chgrp [OPTION]… –reference=RFILE FILE…
[root@centos7 app]#chgrp dir3 –reference=./dir1 #以dir1目录为模板,修改dir3所属组;


(3)chmod命令: change file mode bits #更改文件权限

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

这种方式分为两种:
赋权表示法:直接操作一类用户的所有权限位u=,g=,o=,a=
授权表示法:直接操作一类用户的一个权限位r,w,x
u+,u-
g+,g-
o+,o-
a+,a-

[root@centos7 app]#chmod u+x f1 #修改f1为可执行;
chmod [OPTION]… OCTAL-MODE FILE… #八进制修改权限;
[root@centos7 app]#chmod 644 f1 #修改文件f1权限为644;
chmod [OPTION]… –reference=RFILE FILE…


4、umask

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

对于文件: 666-umask 
    如果所得结果某位存在执行(奇数)权限,则其权限加1
对于目录: 777-umask

umask 命令 查看系统umask值
设定umask值: umask #
umask -S 模式方式显示

[root@centos7 skel]#umask -S
u=rwx,g=rx,o=rx

umask –p 输出可被调用 直接可以重定向到文件中

[root@centos7 app]#umask -p >>f1
[root@centos7 app]#cat f1
umask 0022


5、特殊权限:

1、安全上下文:

    (1)任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限;
    (2)启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组;
    (3)进程访问文件时的权限,取决于进程的发起者;
        (a)进程的发起者,同文件的属主:则应用文件属主权限;
        (b)进程的发起者,属于文件属组;则应用文件属组权限;
        (c)应用文件“其它”权限;

2、linux中特殊权限为SUID、SGID、Sticky
SUID:

    任何一个可执行文件能不能启动为进程:取决于发起者对程序文件是否拥有执行权限;将当前运行着的身份切换成该程序所有者的身份。
启动为进程之后,其进程的属主为原程序文件的属主;
注意:SUID只对二进制可执行程序有效。对目录设置无意义。

格式:chmod u[+|-]s FILE...

SGID :

对于文件 
   任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有可执行权限;启动为进程之后,其进程的属主为原程序文件的属组。
   格式:chmod g[+|-]s FILE...
对于目录:
    默认情况下,用户创建文件时,其属组为此用户所属的主组。一旦某目录设定了SGID,则对此目录有写权限的用户在此目录中间的新文件所属的组为此目录的属组。通常用于创建一个协作目录。

    格式:chmod g[+|-]s DIR...
注意:如果有一个组可以先把用户添加到组中,然后加SGID权限。

Sticky:

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权。
在目录设置Sticky位,只有文件的所有者或root可以删除文件。
注意:Sticky设置在文件上无意义。

格式:chmod o[+|-]t DIR...

通过二进制和八进制进行特殊权限:
|权限格式     |二进制表示   |八进制表示
|---         |000        |  0
|---         |001        |  1
|-w-         |010        |  2
|-wx         |011        |  3
|r--         |100        |  4
|r-w         |101        |  5
|rw-         |110        |  6
|rwx         |111        |  7

3、权限为映射:

SUID: user,占据属主的执行权限位
    s:属主拥有x权限
    S:属主没有x权限
SGID: group,占据属组的执行权限位
    s:group拥有x权限
    S:group没有x权限
Sticky: other,占据other的执行权限位
    t:other拥有x权限
    T:other没有x权限

命令:
chattr change file attributes on a Linux file system #更改文件属性

[-|+]i 不能或删除,改名

[root@centos7 ~]#chattr +i b.txt
+a 只能追加内容到文件中
lsattr lsattr - list file attributes on a Linux second extended file system #列出文件属性

[root@centos7 ~]#lsattr b.txt *

你可能感兴趣的:(每日随笔)