在linux 系统中利用 facl 实现目录下创建文件继承父目录的权限的所属组

在linux 系统中,可以通过setfacl 来实现目录下创建文件或子目录,并继承父目录的权限。

下面以 root 用普通用户 user1 .在目录/mnt下

[[email protected] mnt]# setfacl -m u:user1:rwx share        //为目录添加ower = user1 ,并赋予rwx 的权根。
[[email protected] mnt]# setfacl -d -m  u:user1:rwx share    //为目录添加默认的acl权限,此目录下创建目录和文件都会继承此权限信息
[[email protected] mnt]#
[[email protected] mnt]#
[[email protected] mnt]# getfacl share        //查看share的facl信息
# file: share
# owner: root
# group: root
user::rwx
user:user1:rwx                            // 此时user1才能对share有写权限
group::r-x
mask::rwx
other::r-x
default:user::rwx                        //默认子目录或文件的权限信息
default:user:user1:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
[[email protected] mnt]# cd share/
[[email protected] share]# ls
[[email protected] share]# touch roota
[[email protected] share]# touch rootb
[[email protected] share]# mkdir rootdir1
[[email protected] share]# mkdir rootdir2
[[email protected] share]# ls
roota  rootb  rootdir1  rootdir2
[[email protected] share]# getfacl roota
# file: roota
# owner: root
# group: root
user::rw-
user:user1:rwx                  #effective:rw-       
group::r-x                      #effective:r--
mask::rw-
other::r--

[[email protected] share]# getfacl rootdira
getfacl: rootdira: No such file or directory
[[email protected] share]# getfacl rootdir
rootdir1/ rootdir2/
[[email protected] share]# getfacl rootdir1
# file: rootdir1
# owner: root
# group: root
user::rwx
user:user1:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:user1:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

[[email protected] share]#

现在用user1 进入此目录来检测权限:

[[email protected] share]$

[[email protected] share]$

[[email protected] share]$

[[email protected] share]$ ll

total 8

-rw-rw-r--+ 1 root root 0 Nov 19 22:52 roota

-rw-rw-r--+ 1 root root 0 Nov 19 22:52 rootb

drwxrwxr-x+ 2 root root 6 Nov 19 22:52 rootdir1

drwxrwxr-x+ 2 root root 6 Nov 19 22:52 rootdir2

[[email protected] share]$ touch user1a

[[email protected] share]$ touch user1dir1

[[email protected] share]$ getfacl user1a        //查看新文件的权限

# file: user1a

# owner: user1

# group: user1

user::rw-

user:user1:rwx                  #effective:rw-

group::r-x                      #effective:r--

mask::rw-

other::r--

[[email protected] share]$ rm roota        //尝试删除root创建的文件,成功

[[email protected] share]$ rm rootdir1     //尝试删除root创建的目录,成功

rm: cannot remove arootdir1a: Is a directory

[[email protected] share]$ rm rootdir1 -r

[[email protected] share]$ ll

total 4

-rw-rw-r--+ 1 root  root  0 Nov 19 22:52 rootb

drwxrwxr-x+ 2 root  root  6 Nov 19 22:52 rootdir2

-rw-rw-r--+ 1 user1 user1 0 Nov 19 22:57 user1a

-rw-rw-r--+ 1 user1 user1 0 Nov 19 22:57 user1dir1

[[email protected] share]$

所以,当有需求要做权根的继承操作时,可以使用这个方来实现。

在新的rhel7 中, 会有新的工具chacl 类似于 setfacl .

时间: 2024-09-30 06:54:32

在linux 系统中利用 facl 实现目录下创建文件继承父目录的权限的所属组的相关文章

Linux中通过setfacl实现目录下创建文件

在Linux 系统中,可以通过setfacl 来实现目录下创建文件或子目录,并继承父目录的权限. 下面以 root 用普通用户 user1 .在目录/mnt下 [[email protected] mnt]# setfacl -m u:user1:rwx share        //为目录添加ower = user1 ,并赋予rwx 的权根. [[email protected]redhat-7 mnt]# setfacl -d -m  u:user1:rwx share    //为目录添加

实例讲解Linux系统中硬链接与软链接的创建

导读 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接.硬链接与软链接的区别从根本上要从Inode节点说起,下面就以实例讲解Linux系统中硬链接与软链接的创建,来实际看看Linux中两种链接方式的不同. 首先要弄清楚,在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现

Linux系统中有关/dev/null和/dev/zero文件说明及实践

Linux系统中有关/dev/null和/dev/zero文件说明 提示:这个题目完全可以作为一个面试题考考运维的应聘者: 面试题:请解释Linux中/dev/null和/dev/zero两个文件的作用和区别. 在类Unix操作系统中,设备节点并不一定要对应物理设备.没有这种对应关系的设备被称之为伪设备.操作系统运用了它们实现多种多样的功能,/dev/null和/dev/zero就是这样的设备,类似的还有/dev/urandom./dev/tty等. 先检查下/dev/null和/dev/zer

(转)Inno Setup入门(六)——在程序目录下创建文件夹

本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250789 创建文件夹可以使用[dirs]段实现,代码如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName="E:\TEST" AppVersion=1.0 [files] Source: "F:\desktop\test\ipmsg.exe"; Dest

【原】linux系统中,执行nosetests无法遍历以“test”开头的目录或文件的问题

最近在centos下面安装使用了nose,发现了一个问题:在命令行中执行nosetests无法遍历该目录下面以“test”开头的目录或者文件并执行文件中的测试. 1 # nosetests -v 2 3 ---------------------------------------------------------------------- 4 Ran 0 tests in 0.000s 5 6 OK 而在windows下面是可以的: 1 nosetests -v 2 here ... ok

Recovery模式下/cache/recovery/目录下创建文件,开机后文件被删除

在一次需求的实现过程中需要在remcovery模式下,在/cache/recovery/目录下创建一个日志文件用于记录相关的日志信息,以便于在开机后读取这些日志信息,再根据日志信息做出相应的处理,但是奇怪的是每当开机完成该文件不被系统自动删除,而系统中原有的日志文件(如升级log---last_log_r)等却依然保留,因此在全局中搜索关键字"/cache/recovery/"发现了这其中的原因. 也就是说系统会在系统启动完成后删除/cache/recovery/目录下不是以"

IOS在Document目录下创建文件夹、保存、读取、以及删除文件

1 // 在Documents目录下创建一个名为LaunchImage的文件夹 2 NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"LaunchImage"]; 3 NSLog(@"%@",path); 4 5 NSFileManager *fileManager =

linux系统中利用vagrant创建虚拟开发环境

Vagrant简介 作为程序员,可能需要同时开发多个项目,使用多种编程语言,需要使用各种操作系统,如果将很多东西放在同一个电脑上,肯定会被各种配置环境搞晕.一个比较好的办法就是每个项目都有一个干净的开发环境,虚拟机的一个主要用处就在于此,虚拟机可以给每一个项目配置一个虚拟机,从而让各个开发环境互相独立,干干净净.现在的项目不大可能由一个人单独完成,协同开发时候需要保障大家的开发环境都一样,为了避免每个开发人员一个个的单独配置参数,安装软件,我们想要的是环境只配置一遍,然后大家可以共享,Vagra

C#远程执行Linux系统中Shell命令和SFTP上传文件

一.工具:SSH.Net 网址:https://github.com/sshnet/SSH.NET 二.调用命令代码: Renci.SshNet.SshClient ssh = new Renci.SshNet.SshClient("192.168.1.104", "sindrol", "123456"); ssh.Connect(); while (true) { Console.WriteLine("please input com