linux get权限放开,Linux文件、目录管理权限命令--setfacl与getfacl

简    介:setfacl与getfacl是一对对应的命令.而且都有acl,ACL 有两种,一种是存取 ACL (access ACLs),针对文件和目录设置访问控制列表。一种是默认 ACL (default ACLs),只能针对目录设置。如果目录中的文件没有设置 ACL,它就会使用该目录的默认 ACL,传统的 Linux 文件系统的权限控制是通过 user、group、other 与 r(读)、w(写)、x(执行) 的不同组合来实现的。

参    数:

[test1@localhost ~]$ setfacl -h

setfacl 2.2.49 -- set file access control lists

Usage: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

-m, --modify=acl modify the current ACL(s) of file(s)#更改文件的访问控制列表

-M, --modify-file=file read ACL entries to modify from file#从文件读取访问控制列表条目更改

-x, --remove=acl remove entries from the ACL(s) of file(s)#根据文件中访问控制列表移除条目

-X, --remove-file=file read ACL entries to remove from file#从文件读取访问控制列表条目并删除

-b, --remove-all remove all extended ACL entries #删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留

-k, --remove-default remove the default ACL #删除缺省的acl规则。

--set=acl set the ACL of file(s), replacing the current ACL#设定替换当前的文件访问控制列表

--set-file=file read ACL entries to set from file#从文件中读取访问控制列表条目设定

--mask do recalculate the effective rights mask#重新计算有效权限掩码

-n, --no-mask don't recalculate the effective rights mask #不要重新计算有效权限。setfacl默认会重新计算acl mask,除非mask被明确的制定

-d, --default operations apply to the default ACL#设定默认的acl规则

-R, --recursive recurse into subdirectories#递归的对所有文件及目录进行操作

-L, --logical logical walk, follow symbolic links#跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录

-P, --physical physical walk, do not follow symbolic links#跳过所有符号链接,包括符号链接文件

--restore=file restore ACLs (inverse of `getfacl -R')#从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行

--test test mode (ACLs are not modified)#测试模式,不会改变任何文件的acl规则,操作后acl规则将被列出

-v, --version print version and exit#输出setfacl的版本号并退出

-h, --help this help text#输出帮助信息。

[test1@localhost ~]$

#选项-m和-x后面跟acl规则。多条acl规则以逗号(,)隔开。选项-M和-X用来从文件或标准输入读取acl规则。

#选项--set和--set-file用来设置文件或目录的acl规则,先前的设定将被覆盖。

#选项-m(--modify和-M(--modify-file)选项修改文件或目录的acl规则。

#选项-x(--remove)和-C(--remove-file)选项删除acl规则。

#当使用-M,-X选项从文件中读取规则时,setfacl接受getfacl命令输出的格式。

#当在不支持acls的文件系统上使用setfacl命令时,setfacl将修改文件权限位。如果acl规则并不完全匹配文件权限位,setfacl将会修改文件权限位使其尽可能的反应acl规则,并会向standard error发送错误消息,以大于0的状态返回。

说    明:对用户设置权限

[test1@localhost ~]$ setfacl -m u:username:rw- test.txt       //普通的文件

[test1@localhost ~]$ setfacl -m d:u:username:rw- test/       //对目录设置

对组设置权限

[test1@localhost ~]$ setfacl -m g:group:r-- test.txt

[test1@localhost ~]$ setfacl -m d:g:group:r-- test/

查看权限

[test1@localhost ~]$ getfacl filename/directory  //文件或目录名

注    意:设置的文件或目录是刚刚新挂载的,它会提示“Operation not supported”,原因是新挂载的硬盘默认没有acl权限!手动添加ACL权限

[test1@localhost ~]$ vim /etc/fstab

UUID="****************" /mnt/data   ext4 defaults,acl 0 0

/dev/sda1        /mnt/data2  ext4  defaults,acl  0 0

#挂载的时候,尽量都UUID方式,因为这样挂载起来比较安全,具体的uuid可以使用命令来查看

[test1@localhost ~]$ blkid

/dev/sda2: UUID="0e478849-816a-4d0f-b554-62341a611e80" TYPE="ext4"

实    例:

添加权限

#用户test创建一个目录dir一个文件fil

[test@localhost ~]$ mkdir dir

[test@localhost ~]$ touch fil

#修改fil权限使其他用户不可以访问

[test@localhost ~]$ chmod 750 fil

[test@localhost ~]$ ll

total 4

drwxrwxr-x 2 test test 4096 Jul 26 14:14 dir

-rwxr-x--- 1 test test 0 Jul 26 14:14 fil

#切换到用户test1验证权限

[test@localhost ~]$ su - test1

Password:

[test1@localhost ~]$ cd /home/test/d

-bash: cd: /home/test/d: Permission denied

#没有给test1进入/home/test权限

[test1@localhost ~]$ su - test

Password:

[test@localhost ~]$ getfacl /home/test

getfacl: Removing leading '/' from absolute path names

# file: home/test

# owner: test

# group: test

user::rwx

group::---

other::---

default:user::rwx

default:user:test1:rwx

default:group::---

default:mask::rwx

default:other::---

#给其他用户访问test目录权限

[test@localhost ~]$ chmod 755 /home/test

[test@localhost ~]$ getfacl /home/test

getfacl: Removing leading '/' from absolute path names

# file: home/test

# owner: test

# group: test

user::rwx

group::r-x

other::r-x

default:user::rwx

default:user:test1:rwx

default:group::---

default:mask::rwx

default:other::---

[test@localhost ~]$ su - test1

Password:

#创建好的目录其他用户是没有写权限

[test1@localhost ~]$ cd /home/test/dir

[test1@localhost dir]$ touch fil1

touch: cannot touch `fil1': Permission denied

#提示test1对dir没有写权限

[test1@localhost ~]$ cat /home/test/fil

cat: /home/test/fil: Permission denied

#提示test1对fil无访问权限

[test1@localhost ~]$ su - test

Password:

#修改test1对fil有访问权限,对dir有完全权限

[test@localhost ~]$ setfacl -m u:test1:r fil ;setfacl -m u:test1:4 fil

[test@localhost ~]$ setfacl -m u:test1:rwx dir ;setfacl -m u:test1:7 dir

[test@localhost ~]$ su - test1

Password:

[test1@localhost ~]$ touch /home/test/dir/file3

#test1对dir有写权限了

[test1@localhost ~]$ cat /home/test/fil

#test1可以访问fil了

#test1 test2都属于file dir的other组,通过test2依然无法访问fil 和dir的写操作

[root@localhost ~]# su - test2

[test2@localhost ~]$ cat /home/test/fil

cat: /home/test/fil: Permission denied

[test2@localhost ~]$ touch /home/test/dir/file4

touch: cannot touch `/home/test/dir/file4': Permission denied

[test2@localhost ~]$

删除权限

[test@localhost ~]$ getfacl /home/test/fil

getfacl: Removing leading '/' from absolute path names

# file: home/test/fil

# owner: test

# group: test

user::rwx

user:test1:r--

group::r-x

mask::r-x

other::---

[test@localhost ~]$ setfacl -x u:test1: /home/test/fil

[test@localhost ~]$ getfacl !$

getfacl /home/test/fil

getfacl: Removing leading '/' from absolute path names

# file: home/test/fil

# owner: test

# group: test

user::rwx

group::r-x

mask::r-x

other::---

[test@localhost ~]$ su - test1

Password:

[test1@localhost ~]$ cat /home/test/fil

cat: /home/test/fil: Permission denied

[test@localhost ~]$ getfacl /home/test/dir/

getfacl: Removing leading '/' from absolute path names

# file: home/test/dir/

# owner: test

# group: test

user::rwx

user:test1:rwx

group::rwx

mask::rwx

other::r-x

default:user::rwx

default:user:test:rwx

default:user:test1:rwx

default:group::rwx

default:mask::rwx

default:other::r-x

[test@localhost ~]$ setfacl -x u:test1 /home/test/dir/

[test@localhost ~]$ getfacl /home/test/dir/

getfacl: Removing leading '/' from absolute path names

# file: home/test/dir/

# owner: test

# group: test

user::rwx

group::rwx

mask::rwx

other::r-x

default:user::rwx

default:user:test:rwx

default:user:test1:rwx

default:group::rwx

default:mask::rwx

default:other::r-x

[test1@localhost ~]$ touch /home/test/dir/file6

touch: cannot touch `/home/test/dir/file6': Permission denied

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值