linux文件权限显示多了一个+,说明添加了acl权限

使用getfacl filename 能查看到 ower group other  还多了一个php 用户有rwx权限。

acl详解 转: https://www.cnblogs.com/Jimmy1988/p/7249844.html

Linux文件权限与属性详解 之 ACL

 

Linux文件权限与属性详解 之 一般权限
Linux文件权限与属性详解 之 ACL
Linux文件权限与属性详解 之 SUID、SGID & SBIT
Linux文件权限与属性详解 之 chattr & lsattr
Linux文件权限与属性详解 之 su & sudo

ACL权限

1. 什么是ACL

ACL(Access Control List),访问控制列表。
那么这玩意有啥用处呢?下面我们考虑一种场景:

假设我Jimmy创建了一个项目文件夹,我和我的开发团队Rocket对该目录均具备 rwx 的权限,因为我该文件夹下有源码等,不能对外开放,所以对其他用户的权限为0,即我的文件夹目录为 drwxrwx---;
然而有一天,我的一个灰常好的盆友Sherry想要看一下我的项目,看看我写的代码有多流弊,然而我不好意思拒绝,这个时候我有三种选择:

  1. 让其成为所有者(这个当然不可能)
  2. 让其成为项目组成员(然而她并没有参与开发,再说她也基本看不懂代码,万一不小心删掉了部分代码咋弄?)
  3. 给其它人赋以 r-x 的权限(然而,other用户太多了吧,万一我代码没发布就被竞争对手给copy了呢?)
    看来,以上三种手段都不靠谱啊,怪就怪other的用户全太大了,唉,这可咋整?

那么,我们为什么不为Sherry开小灶呢?就是让其不属于任何一个组,只是以单用户的身份被赋予特定权限。
这种“开小灶”的方式,其实就是ACL权限!

ACL可以针对单一用户、单一文件或目录来进行r、w、x的权限设置,对于需要特殊权限的使用状况非常有帮助

2. ACL的操作

0). 查看系统是否支持ACL

首先,我们看一下自己的Linux系统存在着那些硬盘:

[niesh@niesh ~]$ df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_niesh-root xfs 18G 8.5G 9.1G 49% /
devtmpfs devtmpfs 348M 0 348M 0% /dev
tmpfs tmpfs 363M 84K 363M 1% /dev/shm
tmpfs tmpfs 363M 5.5M 358M 2% /run
tmpfs tmpfs 363M 0 363M 0% /sys/fs/cgroup
/dev/sda1 xfs 497M 158M 339M 32% /boot
.host:/ vmhgfs 271G 42G 229G 16% /mnt/hgfs
tmpfs tmpfs 73M 16K 73M 1% /run/user/42
tmpfs tmpfs 73M 0 73M 0% /run/user/1000

根目录(/)的挂载点此处为/dev/mapper/centos_niesh-root,我们可以查看其是否支持ACL权限

[root@niesh ~]# dumpe2fs -h /dev/centos_niesh/root
dumpe2fs 1.42.9 (28-Dec-2013)
dumpe2fs: Bad magic number in super-block 当尝试打开 /dev/centos_niesh/root 时
找不到有效的文件系统超级块.

很郁闷,居然报这个错误,查了很多资料,发现dumpe2fs命令为ext文件系统家族的命令,我的系统为CentOS7,文件系统为XFSXFS默认支持ACL:

[root@niesh ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.2.1511 (Core)
Release: 7.2.1511
Codename: Core [root@niesh ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos_niesh-root xfs 18G 8.5G 9.1G 49% /

可以使用 xfs_info /dev/xxx查看'XFS`文件系统信息:

[root@niesh ~]# xfs_info /dev/centos_niesh/root
meta-data=/dev/mapper/centos_niesh-root isize=256 agcount=4, agsize=1144832 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=4579328, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

但是,貌似看不到是否支持ACL权限,我也只能这样了 (谁知道怎么查看请留言告诉我,不胜感激) 

1). 安装ACL

系统默认的是不会安装ACL权限的,因此需要我们自己动手:

  • RPM 包
    前提:能够获取到系统安装包
    命令:rpm -ivh libacl-x.x.xx-x.x acl-x.x.xx-x.x.rpm
  • yum:
    前提:主机已经联网,且yum可用
    命令:yum -y insatll libacl acl

2). 开启ACL

首先,我们查看一下我们Linux系统的ACL权限有没有开启:
使用 mount命令:

[root@niesh ~]# mount
/dev/mapper/centos_niesh-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=34,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)

很明显,/dev/mapper/centos_nie-root没有ACL权限,我们需要自己手动开启。
开启的方式有两种:

  • 命令开启
    命令: mount -o remount,acl /
    特点:临时性,重启失效
  • 文件开启
    命令: vim /etc/fstab
    特点:永久开启

完成修改后,需要重启或者重新挂载你设置的分区,此处我需要重新挂载根分区:

  • 挂载: mount -o remount /
  • 重启: restart

3). ACL文件设置

最常用的有以下2个命令:

  • getfacl: 获取文件或目录的ACL设置信息
    命令: getfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
    参数:

    -a , --access:显示文件或目录的访问控制列表
    -d , --default:显示文件或目录的默认(缺省)的访问控制列表
    -c , --omit-header:不显示默认的访问控制列表
    -R , --recursive:操作递归到子目录

  • setfacl: 设置文件或目录的ACL设置信息
    命令:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
    参数:

    -m, --modify=acl:修改文件或目录的扩展ACL设置信息
    -x, --remove=acl:从文件或目录删除一个扩展的ACL设置信息
    -b, --remove-all:删除所有的扩展的ACL设置信息
    -k, --remove-default:删除缺省的acl设置信息
    -n, --no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定
    -d, --default:设置默认的ACL设置信息(只对目录有效)
    -R, --recursive:操作递归到所有子目录和 文件

针对我们最开始讨论问题,此处我们进行实战练习。
首先,我建立一个目录Project:

[niesh@niesh tmp]$ mkdir -m 770 Project
[niesh@niesh tmp]$ ll
总用量 0
drwxrwx---. 2 niesh niesh 6 7月 28 15:44 Project

其次,我增加一个新用户叫做Sherry:

[root@niesh ~]# useradd Sherry
[root@niesh ~]# passwd Sherry
[root@niesh ~]#

再次,查看我和Sherry分别属于哪一个组:

[root@niesh ~]# groups Sherry
Sherry : Sherry
[root@niesh ~]# groups niesh
niesh : niesh wheel

很明显我俩不属于同一个组,因此Sherry对我建立的 Project 目录不具备任何权限:

[Sherry@niesh tmp]$ cd Project/
bash: cd: Project/: 权限不够
[Sherry@niesh tmp]$ ^C
[Sherry@niesh tmp]$ ll Project/
ls: 无法打开目录Project/: 权限不够

然后,我增加Sherry的ACL权限:

[niesh@niesh tmp]$ setfacl -m u:Sherry:rx Project/
[niesh@niesh tmp]$ ll
总用量 4
drwxrwx---+ 2 niesh niesh 6 7月 28 15:44 Project

看到了吧,以上权限第11位有一个 + 号,代表的就是ACL权限

4). 查看ACL权限

我们可以使用 getfacl命令查看刚才设置好的权限:
设置之前:

[niesh@niesh tmp]$ getfacl Project/
# file: Project/
# owner: niesh
# group: niesh
user::rwx
group::rwx
other::---

设置之后:

[niesh@niesh tmp]$ getfacl Project/
# file: Project/
# owner: niesh
# group: niesh
user::rwx
user:Sherry:r-x
group::rwx
mask::rwx
other::---

多了几行:

  • user:Sherry:r-x: 表示Sherry具备的ACL权限为 r-x
  • mask::rwx: 表示ACL的最大权限,用你分配给用户的权限与mask相与(类似于子网掩码)

5). 删除ACL

采用 setfacl -d <dir>命令:

[niesh@niesh tmp]$ setfacl -b Project/
[niesh@niesh tmp]$ ll
总用量 0
drwxrwx---. 2 niesh niesh 6 7月 28 15:44 Project [niesh@niesh tmp]$ getfacl Project/
# file: Project/
# owner: niesh
# group: niesh
user::rwx
group::rwx
other::---

删除我刚才建立的Sherry用户:

[root@niesh ~]# userdel -r Sherry
[root@niesh ~]# cat /etc/passwd

linux文件权限多一个+啥意思的更多相关文章

  1. 修改linux文件权限

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  2. Linux 文件权限总结

    在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,Linux 文件权限系统就 ...

  3. Linux&shell 之Linux文件权限

    写在前面:案例.常用.归类.解释说明.(By Jim) Linux文件权限用户useradd test (添加用户test)userdel test (删除用户test)passwd test(修改用 ...

  4. linux文件权限整理

    网上对linux文件权限的已经很多,不过还是要自己整理一下,不然每次都要查资料. linux下所有东西都是文件,包括设备,所以这里的文件也包括文件夹. 先是查看文件权限:ls -lh xzc@xzc- ...

  5. 修改linux文件权限命令:chmod 【转载】

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. chmod  命令可以改变所有子目录的权限,下面有2种方法 改变一个文件的权限: chmod ...

  6. 《Linux命令行与shell脚本编程大全》 第七章理解Linux文件权限

    Linux沿用了Unix文件权限的方法,允许用户和组根据每个文件和目录的安全性设置来访问文件. 用户权限通过创建用户时分配的用户ID(UID)来跟踪的.每个用户有唯一的ID,但是登录时用的不是UID, ...

  7. linux文件权限总结(创建root不可以删除文件、只可追加的日志文件等)

    文件类型 对于文件和目录的访问权力是根据读访问,写访问,和执行访问来定义的. 我们来看一下 ls 命令的输出结果 [root@iZ28dr6w0qvZ test]# ls -l 总用量 72 -rw- ...

  8. Linux 文件权限于目录配置

    用户与用户组 我們以王三毛為例,王三毛這個『檔案』的擁有者為王三毛,他屬於王大毛這個群組, 而張小豬相對於王三毛,則只是一個『其他人(others)』而已. 不過,這裡有個特殊的人物要來介紹的,那就是 ...

  9. Linux文件权限与属性详解 之 SUID、SGID & SBIT

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

随机推荐

  1. tomcat热部署.class

    本人是在维护公司系统时遇到的问题,由于公司的系统是部署到客户服务器上,而系统中存在的问题又比较多,需要经常维护.如果每次修改完class文件后都需要去重启服务器, 那会给用户的使用造成不便,所以需要使 ...

  2. velocity.js 动画插件

    1. velocity.js 插件介绍 Velocity 是独立于jQuery的,但两者可以结合使用的动画插件.用法类似 jq 的 animate ,但是支持更高级动画. ( 颜色动画.转换动画(tr ...

  3. mysql防注入

    1.对用户输入的数据进行过滤 2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取. 3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库 ...

  4. LOJ6072苹果树

    虽然结合了很多算法,但是一步一步地推一下还不算太难的一道题. 首先考虑枚举枚举有用的苹果的集合,然后去算生成树个数. 先考虑怎么计算生成树个数. 发现可以使用matrix-tree. 所有有用点可以和 ...

  5. poj2891 扩展中国剩余定理

    求a1x1+r1=y...anxn+rn=y,crt合并 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optim ...

  6. link标签实现给网页标题前加一个小图标favicon.ico

    使用方法如下:1.<link rel="shortcut icon " type="images/x-icon" href="./favicon ...

  7. Navicat 的安装及破解

    本地环境: ubutun 14 1.安装. ①先老实选择官方试用版安装(不推荐在各个下载平台去下载) 中文版:http://www.navicat.com.cn/download/navicat-fo ...

  8. python写网络爬虫的环境搭建

    网上找了好多资料,都不全,通过资料的整理,包括自己的测试,终于把环境打好了,真是对于一个刚接触爬虫的人来说实属不易,现在分享给大家,若有不够详细之处,希望各位网友能补充. 第一步,下载python, ...

  9. 牛客练习赛30-A/C

    链接:https://ac.nowcoder.com/acm/contest/216/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...

  10. vs 2017 Integrated Security 为sspi 含义

    关于sql连接语句中的Integrated Security=SSPI解决方法:即:Security Support Provider Interface设置Integrated Security为 ...