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:用户名:权限 文件
说明:
默认权限只对该目录下面新建的文件或目录有效,对已经存在的子文件无效
试验:
准备环境:
[root@localhost temp]# useradd student1
[root@localhost temp]# useradd student2
[root@localhost temp]# useradd visitor1
[root@localhost temp]# passwd student1
[root@localhost temp]# passwd student2
[root@localhost temp]# passwd visitor1
[root@localhost temp]# groupadd student_group
[root@localhost temp]# groupadd other_student
[root@localhost temp]# mkdir project
[root@localhost temp]# chown root:student_group project/
[root@localhost temp]# chmod 770 project/
[root@localhost temp]# gpasswd -a student1 student_group
[root@localhost temp]# gpasswd -a student2 student_group
student1有权限:
[student1@localhost ~]$ cd /xiaol/temp/project/
[student1@localhost project]$ touch a.txt
visitor1没有权限
[visitor1@localhost ~]$ cd /xiaol/temp/project/
-bash: cd: /xiaol/temp/project/: 权限不够
给visitor1设置权限:
[root@localhost temp]# setfacl -m u:visitor1:rx project/
查看权限:
[root@localhost temp]# getfacl project/
# file: project/
# owner: root
# group: student_group
user::rwx
user:visitor1:r-x
group::rwx
mask::rwx
other::---
visitor1有权限了
[visitor1@localhost ~]$ cd /xiaol/temp/project/
[visitor1@localhost project]$
给other_student组设置权限:
[root@localhost temp]# setfacl -m g:other_student:rx project/
查看权限:
[root@localhost 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::---
设置最大权限:
[root@localhost temp]# setfacl -m m:rx project/
查看权限
[root@localhost 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权限
[root@localhost temp]# setfacl -x u:visitor1 project/
删除other_student权限
[root@localhost temp]# setfacl -x g:other_student project/
查看权限:
[root@localhost temp]# getfacl project/
# file: project/
# owner: root
# group: student_group
user::rwx
group::rwx
mask::rwx
other::---
设置递归权限
[root@localhost temp]# setfacl -m u:visitor1:rx -R project/
进入project查看内部文件权限
[root@localhost project]$ getfacl a.txt
# file: a.txt
# owner: student1
# group: student1
user::rw-
user:visitor1:r-x
group::rw-
mask::rwx
other::r--
新建文件并查看权限
[root@localhost project]# touch b.txt
[root@localhost project]# getfacl b.txt
# file: b.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
设置默认权限
[root@localhost temp]# setfacl -m d:u:visitor1:rx project/
新建文件并查看权限
[root@localhost project]# touch c.txt
[root@localhost 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::---
清理试验环境
[root@localhost temp]# userdel -r student1
[root@localhost temp]# userdel -r student2
[root@localhost temp]# userdel -r visitor1
[root@localhost temp]# groupdel student_group
[root@localhost temp]# groupdel other_student
[root@localhost temp]# rm -rf project/
Linux中权限管理之ACL权限的更多相关文章
- Linux系列教程(十六)——Linux权限管理之ACL权限
通过前面的两篇博客我们介绍了Linux系统的用户管理,Linux用户和用户组管理之相关配置文件 讲解了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow ...
- Linux权限管理之ACL权限
注:转载自:https://www.cnblogs.com/ysocean/p/7801329.html 目录 1.什么是 ACL 权限? 2.查看分区 ACL 权限是否开启:dump2fs ①.查看 ...
- Linux权限管理:ACL 权限
1.ACL 是什么 ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表.它在UGO权限管理的基础上为文件系统提供一个额外的.更灵活的权限管理机 ...
- linux备忘录-账号管理与ACL权限设定
知识 账号管理中的一些文件结构 /etc/passwd 每一行的内容都为下面结构 账号名称:密码:UID:GID:用户信息说明:家目录:shell ---- UID ---- -- 0 -> 代 ...
- Linux 账号管理及ACL权限设置,PAM模块简介
有效群组与初始群组: groups:有效与支持群组的观察 newgrp:有效群组的切换,后面接群组名称 在passwd文件中记录的GID就是默认的GID,就是初始群组 /etc/passwd文件结构 ...
- 【Linux】 Linux权限管理与特殊权限
Linux权限管理 权限管理这方面,非常清楚地记得刚开始实习那会儿是仔细研究过的,不知道为什么没有笔记留痕..除了一些基本的知识点早就忘光了,无奈只好从头开始学习一遍.. ■ 基本权限知识 这部分实在 ...
- 鸟哥的linux私房菜——第十三章学习(Linux 帐号管理与 ACLL 权限设置)
第十三章.Linux 帐号管理与 ACLL 权限设置 1.0).使用者识别码: UID 与 GID UID :User ID GID :group ID [root@study ~]# ll -d / ...
- Android权限管理之Permission权限机制及使用
前言: 最近突然喜欢上一句诗:"宠辱不惊,看庭前花开花落:去留无意,望天空云卷云舒." 哈哈~,这个和今天的主题无关,最近只要不学习总觉得生活中少了点什么,所以想着围绕着最近面试过 ...
- 【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】
一.权限计算相关分析 1.如何存储权限 首先说一下权限保存的问题,一个系统中最多有多少权限呢?一个大的系统中可能有成百上千个权限需要管理.怎么保存这么多的权限?首先,我们使用一个数字中的一位保存一种权 ...
随机推荐
- 数据库性能优化之SQL语句优化1
一.问题的提出 在 应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实 际应用后,随着数据库中数据的增加, ...
- Hive 练习 简单任务处理
1.2018年4月份的用户数.订单量.销量.GMV (不局限与这些统计量,你也可以自己想一些) -- -- -- 2018年4月份的用户数量 select count(a.user_id) as us ...
- webpack 环境搭建基础框架
一.安装babel相关 1,安装依赖 cnpm i -D babel-core babel-loader babel-preset-env babel-preset-stage- babel-plug ...
- php模板原理PHP模板引擎smarty模板原理浅谈
mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...
- oracle10g安装,卸载
一.安装 1.因为oracle的特殊性,笔者选择通过虚拟机安装windows7旗舰版安装数据库,大家的系统假设是windows xp.windows 7,windows 8能够直接安装,windows ...
- C++语言基础(12)-虚函数
一.虚函数使用的注意事项 1.只需要在虚函数的声明处加上 virtual 关键字,函数定义处可以加也可以不加. 2.为了方便,你可以只将基类中的函数声明为虚函数,这样所有子类中具有遮蔽(覆盖)关系的同 ...
- 2. Add Two Numbers【medium】
2. Add Two Numbers[medium] You are given two non-empty linked lists representing two non-negative in ...
- Django中API分析
下面,我将仔细分析一次请求的旅程: web端发出一个请求报文,到获得服务器的响应报文结束. 1.打开浏览器,输入URL,进入API页面: http://127.0.0.1:8000/api/salt ...
- Time Limit Exceeded 求逆序对数。
/** 题目:Time Limit Exceeded 链接:https://oj.ejq.me/problem/28 题意:求逆序对数. 思路:树状数组求逆序对数.维护前面有多少个<=当前数的数 ...
- Git使用技巧(1)-- 配置【持续更新】
配置名字和邮箱 git config --global user.name "Your Name" git config --global user.email "ema ...