linux权限管理

Posted 我听过

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux权限管理相关的知识,希望对你有一定的参考价值。

1、ll命令列出文件/目录长属性(权限、属性)

[root@centos7 ~]#ll /etc/passwd
-rw-r--r--. 1 root root 1091 131 12:38 /etc/passwd

  -rw-r--r--:权限
  root root:属性

2、文件属性:
文件属性:所有者 所属组 其他人(不显示)
  chown 设置文件的所有者

[root@centos7 ~]#chown [指定所有者] [文件]    //格式
[root@centos7 ~]#ll f1 //查看f1文件的属性信息
-rw-r--r--. 1 root root 0 2月  27 22:40 f1
[root@centos7 ~]#chown yang f1 //例:更改f1文件的所有者为yang(yang为本人创建的一个用户)
[root@centos7 ~]#ll f1
-rw-r--r--. 1 yang root 0 2月  27 22:40 f1

  chgrp 设置文件的属组信息

[root@centos7 ~]#chgrp [指定所属组] [文件]    //格式
[root@centos7 ~]#ll f1
-rw-r--r--. 1 yang root 0 2月  27 22:40 f1
[root@centos7 ~]#chgrp yang f1 //例:更改f1文件的所属组为yang
[root@centos7 ~]#ll f1
-rw-r--r--. 1 yang yang 0 2月  27 22:40 f1

  也可以使用chown命令一起更改文件所有者、所属组

[root@centos7 ~]#ll f1
-rw-r--r--. 1 yang yang 0 2月  27 22:40 f1
[root@centos7 ~]#chown root.root f1
[root@centos7 ~]#ll f1
-rw-r--r--. 1 root root 0 2月  27 22:40 f1

  普通用户更改不了文件所有者,但是可以改文件所属组(前提该文件所有者属于自己;该用户在该组内);

3、文件权限read、write、excute

  1>权限针对于:所有者、所属组和其他人
    -rw-r--r--:权限(例)
    第一个字符‘-‘代表普通文件,接下来每三个字符为一组,分别为:所有者权限、所属组权限和其他人权限
  2>root 账号对于读写权限设置不受影响,没有读写权限也能读写;但是执行权限 root 也要受影响;
  3>文件删除权限取决于目录权限;对于目录没有执行权限,不能进去,不能看目录里文件所有属性,不能访问文件内容。
  4>文件访问权限 按 所有者>所属组>其他顺序匹配,匹配到则停止匹配;
    换一个文件系统不一定就是这样(Linux 里通用的文件系统是这样的)

4、权限授权:chmod
  1>mode 法(模式法)
  chmod [who] [operate] [authority] [file/dir_name]
    who:对谁授权?所有者?所属组?其他人?还是给所有授权
    operate:做什么操作?+权限?-权限?还是=赋权
    authority:什么权限?r(读)、w(写)、x(执行)
    file/dir_name:授权对象

[root@centos7 ~]#ll f1
-rw-r--r--. 1 root root 0 2月  27 22:40 f1    //查看f1文件的所有者、所属组和其他人权限分别为读写、读、读
[root@centos7 ~]#chmod u+x,g+w,o= f1    //赋予f1文件,增加所有者的执行权限,增加所属组的写权限,赋予其他人无权限
[root@centos7 ~]#ll f1
-rwxrw----. 1 root root 0 2月  27 22:40 f1

  2>数字法授权:r=4 w=2 x=1

  -rw-r--r--:权限(例):所有者(rw-)、所属组(r--)、其他人(r--),即数字法表示为:644

[root@centos7 ~]#ll f1
-rwxrw----. 1 root root 0 2月  27 22:40 f1
[root@centos7 ~]#chmod 644 f1
[root@centos7 ~]#ll f1
-rw-r--r--. 1 root root 0 2月  27 22:40 f1

  chmod --reference=参考文件 文件    //将文件的权限设置为和参考文件一样

[root@centos7 ~]#ll f1
-rw-r--r--. 1 root root 0 2月  27 22:40 f1
[root@centos7 ~]#ll /etc/shadow
----------. 1 root root 655 2月  27 13:58 /etc/shadow
[root@centos7 ~]#chmod --reference=/etc/shadow f1
[root@centos7 ~]#ll f1
----------. 1 root root 0 2月  27 22:40 f1

  对于 file 来说:6rw,4r,0 权限用的比较多
  对于目录来说:7rwx,5r-x,0 权限偶用的比较多

  chmod -R dir/file  //递归附加权限
  chmod -R +x dir/file  //给 dir 目录连同目录下的所有文件附加执行权限
  chmod -R +X dir/file  //X 只给目录和可执行权限的文件(特殊)附加执行权限

  4> 默认权限
  umask(设置默认权限) + default(默认权限) = file:666/dir:777  //暂时公式正确

[root@centos7 ~]#umask 125  //本来默认权限应该是 541,但实际是 642
[root@centos7 ~]#touch f3
[root@centos7 ~]#ll f3
-rw-r---w-. 1 root root 0 21 12:05 f3

  umask 的作用取消对应权限(转换为二进制):
  666→110110110  //文件default权限
  125→001010101  //125,为设置的默认权限,两者对位运算。0不取消,1 是取消
  真实权限 110100010→642

  默认权限计算对位相减:比如 umask 125,则:666-125=541,如果结果中有奇数则奇数加1→642(对文件来说的默认权限计算),对目录说没问题直接减就是结果。
  每个用户可以设至自己的 umask,彻底更改放到家目录的:.bashrc 文件里面

[root@centos7 ~]#umask    //查看当前umask默认权限
0022

  umask u=rwx,g=r,o=  //直接设置不用算,常配合小括号使用(),小括号开启子进程,结束关闭子进程,用法相当于一次用法

  5> 文件系统上的特殊权限
    三种特殊权限:SUID、SGID、Sticky
    三种常用权限:r,w,x user,group,other

[root@centos7 ~]#which passwd
/bin/passwd
[root@centos7 ~]#ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 610 2014 /bin/passwd  //查看/etc/passwd文件发现有suid权限,该处小 s 有 x 权限,如果为大 S 则没 x 权限
[root@centos7 ~]#chmod u-x /usr/bin/passwd
[root@centos7 ~]#ll /usr/bin/passwd
-rwSr-xr-x. 1 root root 27832 610 2014 /usr/bin/passwd

  指定 SUID 后,当用户执行该程序(有 SUID 权限),该用户继承该程序所有者的权限
  普通用户,可以使用passwd更改自己的口令,更改完口令,即必然修改/etc/shadow文件(用户密码相关文件),而该文件的权限如下:没有任何权限

[root@centos7 ~]#ll /etc/shadow
----------. 1 root root 751 2月  27 23:17 /etc/shadow

  但是,/etc/passwd文件拥有suid权限,普通用户执行该程序时继承该程序的所有者权限,即suid权限。


  数字法赋权:先表示原有权限:755(例),在前面+4,即 4755  //suid=4
  SUID 适合二进制的可执行的程序上
  SGID 权限:继承该程序所有组的权限(g+s)
  数字法授权:sgid=2 sticky=1(粘滞位),sticky(o+t)作用于文件夹,此目录的文件只能被所有者删除
  SUID:继承二进制程序所有者的权限
  SGID:继承二进制程序所有组的权限;作用于目录,此目录新建的文件继承目录的所属组

  Sticky:作用于目录,此目录的文件只能被所有者删除

  chattr 工具:对特定的文件加以保护,避免 root 用户更改和删除
    chattr +i 不能删除,改名,更改
    chattr +a 只能追加内容
    chattr +A 锁定读时间
    lsattr 显示特定属性

5、访问控制列表
  ACL:Access Control List,实现灵活的权限管理
  除了文件的所有者,所属组和其他人,可以对更多的用户设置权限
  CentOS7 默认创建的 xfs 和 ext4 文件系统具有 ACL 功能
  CentOS7 之前的版本,默认手工创建的 ext4 文件系统无 ACL 功能,需手动增加
    tune2fs -o acl /dev/sdb1
    mount -o acl /dev/sdb1 /mnt/test
  ACL 生效顺序:所有者,自定义用户,所属组,自定义组,其他人

[root@centos7 ~]#chmod 666 f1
[root@centos7 ~]#setfacl -m u:yang:r f1  //针对yang用户设置r读权限,一旦设置 acl 权限则相当于第四者
[root@centos7 ~]#ll f1
-rw-rw-rw-+ 1 root root 0 2月  27 22:40 f1
[root@centos7 ~]#getfacl f1 //查看acl权限
# file: f1
# owner: root
# group: root
user::rw-
user:yang:r--
group::rw-
mask::rw-
other::rw-

  一旦设置 acl 权限,则组权限已经不是原来的组权限,group=mask 权限(限高权限)
  除了 user 和 other,对特定的用户和组统一设一个最大权限→可以更改 mask 权限(限高权限)

[root@centos7 ~]#setfacl -m mask::r f1
[root@centos7 ~]#getfacl f1
# file: f1
# owner: root
# group: root
user::rw-
user:yang:r--
group::rw-            #effective:r--
mask::r--
other::rw-

  此时 chmod g=rw f1 更改组权限,其实更改 mask 权限

[root@centos7 ~]#chmod g=rw f1
[root@centos7 ~]#getfacl f1
# file: f1
# owner: root
# group: root
user::rw-
user:yang:r--
group::rw-
mask::rw-
other::rw-

  setfacl -b f1  //清空 f1 文件的所有 acl 权限
  备份和恢复 ACL
    cp -p + mv 都可以复制 ACL 属性,但是 tar 备份工具不会保留目录和文件的ACL 信息
    getfacl -R /tmp/dir1 > acl.txt  //把目录下文件的所有 ACL 放到文件里
    setfacl -R -b /tmp/dir1  //清空
    setfacl -R -set-file=acl.txt /tmp/dir1  //还原备份的 ACL 权限
    setfacl -restore acl.txt
    getfacl -R /tmp/dir1

以上是关于linux权限管理的主要内容,如果未能解决你的问题,请参考以下文章

gitlab 权限说明

Oracle-常用数据库对象笔记(片段)

JS+JavaBean判断管理员增删改的操作权限

Linux权限管理---特殊权限

ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统

大数据之Linux用户权限设置