Linux中权限管理之ACL权限

1.简介:
  a.作用:
    是为了防止权限不够用的情况,一般的权限有所有者、所属组、其他人这三种,当这三种满足不了我们的需求的时候就可以使用ACL权限
  
  b.故事背景:
    一个老师,给一个班的学员上课,他在linux的根目录下面建立了一个文件夹,只允许本班级的学员对该目录进行读写执行操作,其他人都不行,这时该目录的权限一般是770(一般我们设置权限都是所有者的权限大于所属组的权限,所属组的权限大于其他人的权限,依次往下),此时有个同学想试听我们的课程,他们只有读和执行的权限,没有写的权限,那么此时该怎么分配权限呢?此时的话所属组、所有者、其他人都不满足,这是就用到ACL权限

2.使用条件
  a.只需硬盘开启对ACL的支持即可,现在Linux上都是默认开启的
  b.查看是否支持acl权限
    1.查看自己linux上的硬盘信息
      df -h
        Filesystem Size Used Avail Use% Mounted on
        /dev/mapper/VolGroup-lv_root 6.5G 1.6G 4.7G 26% /
        tmpfs 246M 0 246M 0% /dev/shm
        /dev/sda1 477M 28M 425M 7% /boot
    2.根据硬盘信息,查询是否开启了acl
      dumpe2fs -h /dev/sda1 | grep "Default mount options"
        dumpe2fs 1.41.12 (17-May-2010)
        Default mount options: user_xattr acl
    3.如果没有开启
      临时开启:
        重新挂载跟分区,并加入acl权限
        mount -o remount,acl /
      永久开始:
        编辑开机挂载文件/etc/fstab
        将文件中的:
        UUID=546c4e25-7b06-468b-89a1-e66280c4ee98 /boot ext4 defaults 1 2
        修改为:
        UUID=546c4e25-7b06-468b-89a1-e66280c4ee98 /boot ext4 defaults,acl 1 2
        重新挂载根分区:
        mount -o remount /

3.设置ACL权限
  setfacl 选项 文件名
    -m 设定ACL权限
    -x 删除指定的ACL权限
    -b 删除所有的ACL权限
    -d 设定默认ACL权限
    -k 删除默认ACL权限
    -R 递归设定ACL权限

  设置用户权限:
    setfacl -m u:用户名:权限 文件

  设置组权限:
    setfacl -m g:组名称:权限 文件

  设置最大有效权限:
    setfacl -m m:权限 文件
    说明:
      acl权限中有个"mask"的选项,它就是ACL权限的最大权限,现在是rwx,当你设置某个用户或组的ACL权限时,要跟mask的权限“相与”之后产生的权限才是该用户的最终权限,也就是加入mask的最大权限是rx,但是你给st用户设置的是rwx权限,此时st用户它的权限只有rx的权限,因为与最大权限“相与”得出的结果就是rx

4.删除权限
  删除用户权限:
    setfacl -x u:用户名 文件名
  删除组权限:
    setfacl -x g:组名称 文件名
  删除整个权限:
    setfacl -b 文件名

5.设置默认权限和递归权限
  递归权限:
    setfacl -m u:用户名:权限 -R 文件
    说明:
      递归只对该目录下面现有的子文件或目录有用,对于该目录下面新添加的子文件或目录没用
  默认权限:
    setfacl -m d:u:用户名:权限 文件
    说明:
      默认权限只对该目录下面新建的文件或目录有效,对已经存在的子文件无效

试验:
准备环境:
  [[email protected] temp]# useradd student1
  [[email protected] temp]# useradd student2
  [[email protected] temp]# useradd visitor1
  [[email protected] temp]# passwd student1
  [[email protected] temp]# passwd student2
  [[email protected] temp]# passwd visitor1
  [[email protected] temp]# groupadd student_group
  [[email protected] temp]# groupadd other_student
  [[email protected] temp]# mkdir project
  [[email protected] temp]# chown root:student_group project/
  [[email protected] temp]# chmod 770 project/
  [[email protected] temp]# gpasswd -a student1 student_group
  [[email protected] temp]# gpasswd -a student2 student_group

  student1有权限:
  [[email protected] ~]$ cd /xiaol/temp/project/
  [[email protected] project]$ touch a.txt

  visitor1没有权限
  [[email protected] ~]$ cd /xiaol/temp/project/
  -bash: cd: /xiaol/temp/project/: 权限不够

给visitor1设置权限:
  [[email protected] temp]# setfacl -m u:visitor1:rx project/

  查看权限:
  [[email protected] temp]# getfacl project/
  # file: project/  
  # owner: root
  # group: student_group
  user::rwx
  user:visitor1:r-x
  group::rwx
  mask::rwx
  other::---

  visitor1有权限了
  [[email protected] ~]$ cd /xiaol/temp/project/
  [[email protected] project]$

给other_student组设置权限:
  [[email protected] temp]# setfacl -m g:other_student:rx project/

  查看权限:
  [[email protected] temp]# getfacl project/
  # file: project/
  # owner: root
  # group: student_group
  user::rwx
  user:visitor1:r-x
  group::rwx
  group:other_student:r-x
  mask::rwx
  other::---

设置最大权限:
  [[email protected] temp]# setfacl -m m:rx project/

  查看权限
  [[email protected] temp]# getfacl project/
  # file: project/
  # owner: root
  # group: student_group
  user::rwx
  user:visitor1:r-x
  group::rwx #effective:r-x
  group:other_student:r-x
  mask::r-x
  other::---

删除权限:
  删除visitor1权限
  [[email protected] temp]# setfacl -x u:visitor1 project/

  删除other_student权限
  [[email protected] temp]# setfacl -x g:other_student project/

  查看权限:
  [[email protected] temp]# getfacl project/
  # file: project/
  # owner: root
  # group: student_group
  user::rwx
  group::rwx
  mask::rwx
  other::---

设置递归权限
  [[email protected] temp]# setfacl -m u:visitor1:rx -R project/

  进入project查看内部文件权限
  [[email protected] project]$ getfacl a.txt
  # file: a.txt
  # owner: student1
  # group: student1
  user::rw-
  user:visitor1:r-x
  group::rw-
  mask::rwx
  other::r--

  新建文件并查看权限
  [[email protected] project]# touch b.txt
  [[email protected] project]# getfacl b.txt
  # file: b.txt
  # owner: root
  # group: root
  user::rw-
  group::r--
  other::r--

设置默认权限
  [[email protected] temp]# setfacl -m d:u:visitor1:rx project/

  新建文件并查看权限
  [[email protected] project]# touch c.txt
  [[email protected] project]# getfacl c.txt
  # file: c.txt
  # owner: root
  # group: root
  user::rw-
  user:visitor1:r-x #effective:r--
  group::rwx #effective:rw-
  mask::rw-
  other::---

清理试验环境
  [[email protected] temp]# userdel -r student1
  [[email protected] temp]# userdel -r student2
  [[email protected] temp]# userdel -r visitor1
  [[email protected] temp]# groupdel student_group
  [[email protected] temp]# groupdel other_student
  [[email protected] temp]# rm -rf project/

时间: 2024-10-06 00:52:09

Linux中权限管理之ACL权限的相关文章

鸟哥的Linux私房菜7-------14章 Linux帐号管理与ACL权限设置

1. 用户表示符UID与GID /etc/passwd文件结构: 有几行就代表有几个帐号在你的系统里 每一行用:分割,一共7个字段. 1.帐号名称 2.密码:早起unix用,现在把密码数据放在/etc/shadow文件中了,这里用x表示 3.UID:0代表系统管理员. 1-499:系统帐号 500-65535:一般用户用 4.GID:     /etc/group有关 5.用户信息说明,使用finger时,这个字段能提供很多信息. 6.主文件夹 7.Shell:用户登录系统后取得的一个shell

【Linux】 Linux权限管理与特殊权限

Linux权限管理 权限管理这方面,非常清楚地记得刚开始实习那会儿是仔细研究过的,不知道为什么没有笔记留痕..除了一些基本的知识点早就忘光了,无奈只好从头开始学习一遍.. ■ 基本权限知识 这部分实在是比较基础,不想多讲了.主要就是9格权限的理解.搞清楚读权限.写权限和执行权限对于文件和目录来说分别以为着什么,就可以了.下面是一些以前没怎么注意,今天听完培训之后觉得有些意思的点: ●  管理权限的权限 文件权限信息和其他文件信息一样,并不属于文件内容的一部分,而基本的权限是针对文件内容而言的.比

权限管理之ACL

权限管理之ACL setfacl getfacl 试验环境:CentOS 7.2 ACL(Access Control List) 访问控制列表,在网络中应用十分广泛,主要用来控制与过滤数据流的走向,提高网络性能,在Linux中,我们可以用setfacl来设置基于用户权限的ACL. setfacl 主要用途 设置ACL setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ... setfacl --restore=fil

Linux中内存管理

转载自:http://blog.chinaunix.net/uid-26611383-id-3761754.html 前一段时间看了<深入理解Linux内核>对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看法和认识. 我比较喜欢搞清楚一个技术本身的发展历程,简而言之就是这个技术是怎么发展而来的,在这个技术之前存在哪些技术,这些技术有哪些特点,为什么会被目前的技术所取代,而目前的技术又解决了之前的

go web 权限管理 解决方案 (面向对象权限 ABAC / Casbin)

go web 权限管理 解决方案 (面向对象权限 ABAC / Casbin) 说明 ABAC调用 github.com/casbin/casbin abac_model.conf [request_definition] r = sub, obj, act [policy_definition] p = sub, obj,act [policy_effect] e = some(where (p.eft == allow)) [matchers] m = r.sub.App == r.obj.

linux文件权限管理与ACL访问控制列表

一.文件属性 1.文件属性: 文件属性操作 chown : change owner  ,设置文件所有者 chgrp : change group  ,设置文件的属组 文件属主修改: chown 格式:chown [OPTION]- [OWNER][:[GROUP]] FILE- 用法: OWNER OWNER:GROUPNAME    (同时修改属主.属组) :GROUPNAME                (默认属主,修改属组) ( 命令中的冒号可用.替换:) chown  –refere

第十四章、Linux 账号管理与 ACL 权限配置

1. Linux 的账号与群组 1.1 使用者标识符: UID 与 GID 1.2 使用者账号:/etc/passwd 文件结构, /etc/shadow 文件结构 1.3 关于群组: /etc/group 文件结构, 有效与初始群组, groups, newgrp, /etc/gshadow2. 账号管理 2.1 新增与移除使用者: useradd, useradd 参考档, passwd, chage, usermod, userdel 2.2 用户功能:finger, chfn, chsh

Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)

文件系统的权限管理(DAC体系:自主访问控制体系): 普通权限   特殊权限   文件的扩展属性   FACL(文件系统访问控制列表) 安全上下文: 任何在计算机中执行的任务都是由进程来实现的,所以进程就有必要访问和使用某些数据资源,进程和其要操作文件之间的关系可以叫做安全上下文: 在DAC模型中,定义安全上下文的方式很简单: 所有权: 任何启动进程的用户就是该进程的所有者,进程的所有者可以变更(需要特定的变更方式如su命令): 任何创建文件的用户就是该文件的所有者,文件的所有者是可以变更的:

Linux中用户、组、权限管理

众所周知,Linux是一个多用户.多任务的系统.而当很多用户同时登录时,系统是怎样管理用户,并给他们赋予相应的权限呢? Linux中有三类用户 超级用户(UID为0) 系统用户(伪用户.非登录) 仅运行服务程序 centos6.x中UID为1-499 centos7.x中UID为1-999 登录用户(普通用户) centos6.x中UID:500-65535 centos7.x中UID:1000-65535 用户解析库文件(任何人都可以访问): /etc/passwd name:password