chown、chgrp、chmod

1.权限对应的数值

    一开始理解权限对应的数值总是要去用二进制去算例如r-x是多少rwx是多少,后来才知道r就  是4,w就是2,x就是1,不管权限怎么变,他们对应的数值就是对应位相加。。

  权限对于文件来说
  r  可读,可以使用类似cat等命令查看文件内容
  w  可写,可以编辑或删除此文件
  x  可执行

  权限对于目录来说
  r  可以对此目录进行ls以列出内部的所有文件
  w  可以在此目录创建文件
  x  可以使用cd切换进此目录,也可以使用ls- l来查看目录内部文件的详细内容。目录默认

  SUID:运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者。
  SGID:运行某程序时,相应进程的属组时程序文件自身的属组,而不是启动者自身的属组

不要乱给文件SUID,SGID

2.用户类别

  管理员: o root
  普通用户:
    系统用户:1-499
    一般用户:500-60000

3.用户组类别

  私有组:创建用户时,如果没有为其指定所属的组,系统会自动为其创建一个与用户名相同的组
  基本组:用户的默认组
  附加组:额外组

4.chown 属主 文件[夹]    改变文件属主(管理员命令)

[root@localhost ~]# ls -l /home/admin/a
-rw-rw-r--. 1 admin admin 0 Jan  3 12:52 /home/admin/a
[root@localhost ~]# chown root /home/admin/a
[root@localhost ~]# ls -l /home/admin/a
-rw-rw-r--. 1 root admin 0 Jan  3 12:52 /home/admin/a

  -R:递归修改,目录内的文件的属主
  --reference=文件1 文件2:将文件2的属性改成文件1的属性(属主和属组都改)

[root@localhost ~]# ls -l a /home/admin/a
-rw-r--r--. 1 root  root  0 Jan  3 13:14 a
-rw-rw-r--. 1 admin admin 0 Jan  3 12:52 /home/admin/a
[root@localhost ~]# chown --reference=a /home/admin/a 
[root@localhost ~]# ls -l a /home/admin/a
-rw-r--r--. 1 root root 0 Jan  3 13:14 a
-rw-rw-r--. 1 root root 0 Jan  3 12:52 /home/admin/a

   USERNAME:GRPNAME:同时改变属主属组

[root@localhost ~]# chown admin:admin /home/admin/a
[root@localhost ~]# ls -l /home/admin/a
-rw-rw-r--. 1 admin admin 0 Jan  3 12:52 /home/admin/a
##可以同时改属主属组
[root@localhost ~]# chown :root /home/admin/a
[root@localhost ~]# ls -l /home/admin/a
-rw-rw-r--. 1 admin root 0 Jan  3 12:52 /home/admin/a
##也可以单用冒号改属组

5.chgrp 属组 文件[夹]    改变文件属组

[root@localhost ~]# chgrp root /home/admin/a
[root@localhost ~]# ls -l /home/admin/a
-rw-rw-r--. 1 root root 0 Jan  3 12:52 /home/admin/a

   -R:递归修改,目录内的文件的属组
  --reference=文件1 文件2:将文件2的属性改成文件1的属性

6.chmod 权限 文件[夹]    更改文件权限

[root@localhost ~]# ls -l a
-rw-r--r--. 1 root root 0 Jan  3 13:14 a
[root@localhost ~]# chmod 777 a
[root@localhost ~]# ls -l a
-rwxrwxrwx. 1 root root 0 Jan  3 13:14 a

  如果更改权限不全,会在权限前补0

[root@localhost ~]# ls -l a
-rwxrwxrwx. 1 root root 0 Jan  3 13:14 a
[root@localhost ~]# chmod 6  a
[root@localhost ~]# ls -l a
-------rw-. 1 root root 0 Jan  3 13:14 a

  更改某一类用户的权限

[root@localhost ~]# chmod 000 a
[root@localhost ~]# ls -l a
----------. 1 root root 0 Jan  3 13:14 a
[root@localhost ~]# chmod u=rwx,g=rw,o=r-x a
[root@localhost ~]# ls -l a
-rwxrw-r--. 1 root root 0 Jan  3 13:14 a
##也可以在原有权限的基础上+-更改
[root@localhost ~]# chmod 777 a
[root@localhost ~]# chmod g-w,o-wx a
[root@localhost ~]# ls -l a
-rwxr-xr--. 1 root root 0 Jan  3 13:14 a
## a可以代表所有用户
[root@localhost ~]# chmod a-rwx a
[root@localhost ~]# ls -l a
----------. 1 root root 0 Jan  3 13:14 a

    -R:递归修改,目录内的文件的权限
  --reference=文件1 文件2:将文件2的权限改成文件1的权限

***chmod u+s 文件:可以给文件赋予SUID权限,如果原文件属主具有执行权限就变成rws,反之变成rwS
  chmod u-s 文件:去掉文件的SUID

[root@bogon ~]# ls -l a b
-rwxr--r--. 1 root root 0 Jan 22 19:43 a
-rw-r--r--. 1 root root 0 Jan 22 19:43 b
[root@bogon ~]# chmod u+s a b
[root@bogon ~]# ls -l a b
-rwsr--r--. 1 root root 0 Jan 22 19:43 a
-rwSr--r--. 1 root root 0 Jan 22 19:43 b

   chmod g+s 文件:赋予文件SGID
  chmod g-s 文件:去掉文件SGID

 7.umask  

  遮罩码,在新建文件时,文件的默认权限会减去umask值,遮罩码默认为022。而新建文件默认不具有执行权限,也就是x。所以新建文件时权限就是666-022=644=rw-r--r--,文件夹就是777-022=755=rwx-r-xr-x。对于管理员来说umask为002

  

初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
原文地址:https://www.cnblogs.com/forlive/p/8177476.html