Linux用户和组权限管理

一、文件的权限

文件的权限主要针对三类对象进行定义

owner:属主u;   group:属组g;    other :其他o

每个文件针对每类访问者都定义了三种权限:

r:Readable   w: Writable    x: eXcutable

对文件来说

  • r: 可使用文件查看类工具获取其内容
  • w: 可修改其内容
  • x: 可以把此文件提请内核启动为一个进程

对目录来说

  • r : 可以使用ls查看此目录中文件列表
  • w: 可在此目录中创建文件,也可删除此目录中的文件
  • x: 可以使用ls -l查看此目录中文件列表,可以cd进入此
    目录
  • tips:此外还有X,用于只给目录x权限,不给目录内文件x权限

如图所示文件属性
  • -rw- r-- r--
左三位:定义user(owner)的权限,属主权限
中三位:定义group的权限,属组权限
右三位:定义other的权限,其他的权限

左第一个 -文件类型提示符, 代表该文件为普通文件。后9位分别对应:该文件对属主个权限为读写,对属组和其他人的权限为只读。

八进制数字表示权限设置方法

--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

例如:640: rw-r-----
           755: rwxr-xr-x



二、文件权限的管理

修改文件的属主: chown
                     chown [OPTION]... [OWNER][:[GROUP]] FILE...
             用法:
                      OWNER                       #修改文件属主
                      OWNER:GROUP          #修改文件属主和属组
                     :GROUP                        #修改文件属组
                     命令中的冒号可用 . 替换
                     -R: 递归
                     chown [OPTION]... --reference=RFILE FILE...

参考RFILE文件的属主,将FILE的修改为同RFILE

修改文件的属组: chgrp
                     chgrp [OPTION]... GROUP FILE...
                     chgrp [OPTION]... --reference=RFILE FILE...
                     -R 递归

修改文件的权限:

chmod [OPTION]... OCTAL-MODE FILE...
                    -R: 递归修改权限
             chmod [OPTION]... MODE[,MODE]... FILE...
                    MODE:
                       修改一类用户的所有权限:
                             u= g= o= ug= a=  u= , g=
                       修改一类用户某位或某些位权限
                             u+ u- g+ g- o+ o- a+ a- + -
            chmod [OPTION]... --reference=RFILE FILE...
                      参考RFILE文件的权限,将FILE的修改为同RFILE

权限设置示例

chgrp sales testfile                   #修改文件属组为sales
chown root:admins testfile             #修改文件属主root,属组admins
chmod u+wx,g-r,o=rx file               #修改文件对属主加wx权限,属组去掉r权限,其他人权限设置为rx
chmod -R g+rwX /testdi                 #递归修改目录属组权限为rwx,目录内文件不添加x权限
chmod 600 file                         #修改文件对属主权限为rw,其他人无权限
chown mage testfile                    #修改文件属主为mage

新建文件和目录的默认权限
              umask值 可以用来保留在创建文件权限
              新建FILE权限: 666-umask
                       如果所得结果某位存在执行(奇数)权限,则将其权限+1
              新建DIR权限: 777-umask
              非特权用户umask是 002
              root的umask 是 022
              umask: 查看已设定umask值
              umask #: 设定umask值
                        例:umask 002     设置umask值为002
              umask –S 模式方式显示     例:u=rwx,g=rx,o=rx

umask –p 输出可被调用     
              全局设置: /etc/bashrc 用户设置: ~/.bashrc

Linux文件系统上的特殊权限

      1、可执行文件上SUID权限
            任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限, 启动为进程之后,其进程的属主为原程序文件的属主。用户在使用具有SUID权限的二进制程序时将临时继承程序拥有者的权限。
                 SUID只对二进制可执行程序有效
                 SUID设置在目录上无意义
                 权限设定:
                    chmod u+s FILE...
                    chmod u-s FILE...

      2、可执行文件上SGID权限
            任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限, 启动为进程之后,其进程的属主为原程序文件的属组。用户在使用具有SUID权限的二进制程序时将临时继承程序所属组的权限。

权限设定:
                     chmod g+s FILE...
                     chmod g-s FILE...

      3、目录上的SGID权限

默认情况下,用户创建文件时,其属组为此用户所属的主组。 一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组。
                  通常用于创建一个协作目录
                  权限设定:
                     chmod g+s DIR...
                     chmod g-s DIR...

       4、Sticky 位

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

例如:

ls -ld /tmp
                          drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp

tips:特殊权限位用数字法单独计算

SUID : 4

SGID : 2

Sticky:1

例:设置文件SUID权限     chmod 4777 /tmp/a.txt

设置目录Sticky位       chmod 1777 /tmp

权限位映射

SUID: user,占据属主的执行权限位
                             s :  属主拥有x权限

S:属主没有x权限
                  SGID: group,占据属组的执行权限位
                             s: group拥有x权限
                             S: group没有x权限

Sticky: other,占据other的执行权限位
                             t: other拥有x权限
                             T: other没有x权限

三、ACL 访问控制列表

特定场景需要对用户进行更为细致的权限管理时,仅属主、属组、其他三个分类是不够的。这时我们需要采用ACL技术对特定用户的管理来进行规划。

ACL: Access Control List,能够实现灵活的权限管理,除了文件的所有者,所属组和其它人,可以对更多的用户设置权限。系统是否支持ACL与存储文件系统有关,CentOS7 默认创建的xfs和ext4文件系统具有ACL功能,CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加:

tune2fs –o acl /dev/sdb1
          mount –o acl /dev/sdb1 /mnt/test

ACL生效顺序:所有者,自定义用户,自定义组,其他人

为多用户或者组的文件和目录赋予访问权限示例:

         

  getfacl file |directory

#查看文件或目录是否  设置ACL                              

  setfacl -m u:wang:rwx file|directory

#设置文件/目录对王用户的权限为rwx (-m修改)         

  setfacl -Rm g:sales:rwX directory

           #递归修改目录对sales组权限为rwx(目录内文件不设置x权限)

  setfacl -M file.acl file|directory

          #批量设置多个文件/目录的ACL  (file.acl文件内容例:u:wang:rwx)

   setfacl -m g:salesgroup:rw file| directory

          #设置文件/目录对salesgroup组的权限为rw    

ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限) ,而非传统的组权限。

getfacl 可看到特殊权限: flags
                    通过ACL赋予目录默认x权限, 目录内文件也不会继承x权限
                    base ACL 不能删除
                    setfacl -k dir 删除默认ACL权限
                    setfacl –b file1清除所有ACL权限
                    getfacl file1 | setfacl --set-file=- file2 复制file1的acl权限给file2

mask只影响除所有者和other的之外的人和组的最大权限Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)

用户或组的设置必须存在于mask权限设定范围内才会生效
                              setfacl -m mask::rx file
                    --set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以
                    示例:
                               setfacl --set u::rw,u:wang:rw,g::r,o::- file1

备份和恢复ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息
                           getfacl -R /tmp/dir1 > acl.txt
                           setfacl -R -b /tmp/dir1
                           setfacl -R --set-file=acl.txt /tmp/dir1
                           setfacl --restore acl.txt
                           getfacl -R /tmp/dir1

时间: 2024-12-21 12:33:14

Linux用户和组权限管理的相关文章

Linux用户及文件权限管理

用户及文件权限管理 一.实验介绍 1.1 实验内容 Linux 中创建.删除用户,及用户组等操作. Linux 中的文件权限设置. 1.2 实验知识点 Linux 用户管理 Linux 权限管理 二.Linux 用户管理 通过第一节课程的学习,你应该已经知道,Linux 是一个可以实现多用户登陆的操作系统,比如"李雷"和"韩梅梅"都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件.但实际上他们的文件都是放在同一个物理磁

运维基础--Linux用户和组的管理

用户和组的管理 系统中,创建用户和群组的目的,就是对系统资源进行权限的统一分配管理.好比说,在一个公司内的资源,不同级别的在职员工对资源的利用权限需要进行统一分配: 如何避免权限分配后的滥用呢? 用户进行权限使用的时候,都必须遵守Cisco公司开发的AAA认证体系,即: Authentication:认证,核实身份是否正确 Authorization: 授权,对已经核实身份的用户进行资源分配 Accounting: 审计,监管资源被使用的情况: 进行资源认证的必要性最主要来源于计算机系统资源的有

linux 用户及组的管理

linux用户:有UID 管理员:root  UID:0 普通用户:UID:1-65535 系统用户:1-499  centos7 1-999 守护进程获取资源进行权限分配 登陆用户:500+     centos7  1000+ 交互式登录: linux组:GID 管理员组:root GID:0 系统组:1-499        centos7  1-999 普通组:500+          centos7   1000+ linux安全上下文: 运行中的程序:进程 以进程发起者的身份运行:

Linux 用户及组权限

用户和组权限 在Linux系统上,进程所能够访问资源的权限取决于进程运行者的身份.为了系统资源的安全及易管理,系统中就需要有不同权限的用户.而为了方便用户本身的分类及管理,于是就出现了组的概念. 1.Linux用户 Linux用户有自己的名字,即Username,还有一个和我们身份证号码一样的编码UID,它是系统辨识用户的唯一编码. Linux用户分为两类:管理员和普通用户,普通用户又分为系统用户和登录用户. 管理员 username=root,UID=0 普通用户的UID: 1-65535 系

Linux用户和组的管理

Linux用户:Username/UID 管理员:root, 0 普通用户:1-65535 系统用户:1-499(CentOS6), 1-999(CentOS7):对守护进程获取资源进行权限分配 登录用户:500+(CentOS6), 1000+(CentOS7):交互式登录 Linux组:Groupname/GID 管理员组:root, 0 普通组: 系统组:1-499(CentOS6), 1-999(CentOS7) 普通组:500+(CentOS6), 1000+(CentOS7) Lin

linux用户 群组权限

用户及passwd文件 /etc/passwd文件的功能 /etc/passwd文件每个字段的具体含义 shadow文件 /etc/shadow文件的功能 /etc/shadow文件每个字段的具体含义 群组及group文件 /etc/group文件的功能 /etc/group文件的功能 怎样在Linux系统中添加一个新的用户账户 useradd命令的功能 useradd命令的常用选项 useradd命令的用法举例 使用usermod命令修改用户账户 usermod命令的功能 usermod命令修

Linux用户和组的管理知识点

Linux是一个真实的.完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响.用户分为用户账户和组账户,因为其多用户多任务的特性,为了防止资源的损害,所以必须要有权限的分配. 能够实现资源使用和完成任务的主体是应用程序进程,进程是以其发起者的身份运行的,也可以理解为进程的所有者就是发起者.当进程去访问资源的时候,安全上下文会比对进程的所有者和资源的所有者的关系:首先查看进程的所有者是不是资源的所有者,如果是,

linux 用户及文件权限管理

Linux 是一个可以实现多用户登陆的操作系统,比如"李雷"和"韩梅梅"都可以同时登陆同一台主机,他们共享一些主机的资源,但他们也分别有自己的用户空间,用于存放各自的文件.但实际上他们的文件都是放在同一个物理磁盘上的甚至同一个逻辑分区或者目录里,但是由于 Linux 的 用户管理 和 权限机制,不同用户不可以轻易地查看.修改彼此的文件. 下面我们就来学习一下 Linux 下的账户管理的基础知识. 1.首先查看用户的指令: who am i/whoami 输出的第一列

马哥2016全新Linux+Python高端运维班-Linux用户创建及权限管理

第三周作业内容:1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | cut -d' ' -f1 | sort -u      centos     liu     root 2.取出最后登录到当前系统的用户的相关信息.     第一种方式:         [[email protected] ~]# last | head -n1         liu      tty8