|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
4 ]) n: M. d1 o4 r, ]
acl库4 C" Y& f' ~7 g- A
作用:限制Linux某用户的访问权限) z( g, r% D2 N& ]
3 N: q2 t' Z( e0 B
acl库的安装
8 V( g* c1 m3 |( I% I: p首先github中下载acl代码:" a5 {7 V* m/ ^" P) {+ W7 k" O
git clone https://github.com/acl-dev/acl& Z7 q; V0 l6 o7 H0 W6 v h
进入acl, 执行make( s( k2 K* i9 x$ Q6 B' ^% q3 }
cd acl ; B: g4 T0 E* r9 L' B u% D, C
make& S( h7 r3 d Y! x- h) a& {: G: e
注意: [因为acl是由c/c++编写的,需要提前安装好gcc, g++]& r. S/ C# M! s* l6 o& F
& J( Z, a! p! G7 h1 U
安装到用户根目录:1 X# G3 S. ]9 s
make packinstall* M `' o/ p6 e, @3 U% X' w/ n
一般到这儿就能编译安装成功了,在/user/include/ 目录下会有acl-lib目录。
) r/ Z4 x: j0 m- p& ^( e4 c ?/ P) m8 P1 e$ ~/ }/ [' Z
如果是centos系统,可直接安装
, F; T4 i. h7 Eyum install zlib-devel" `$ o. {4 l) o9 `) t" u! P
setfacl命令的基本用法
! _+ G' ]( V- c1 {, I1、setfacl的用途) {9 Q7 k$ g9 }+ ~
setfacl命令可以用来细分linux下的文件权限。
1 I# _1 p$ S+ [& Q o6 m8 `chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。! Z* x* D. e5 }' ]
换句话说,setfacl可以更精确的控制权限的分配。
4 B, |. U/ I1 i6 w" w1 y, p比如:让某一个用户对某一个文件具有某种权限。
# I) G- Q- t- k" q1 G1 T' T, N# ~4 I [
这种独立于传统的u,g,o的rwx权限之外的具体权限设置叫ACL(Access Control List)
3 O: J. g/ i2 G4 uACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。) ^4 C! n; t7 ]1 S5 j
如,某一个文件,不让单一的某个用户访问。2 g# P2 I; U1 a7 W
+ l2 u4 U7 `- G1 a. u+ p/ h. b2、setfacl的用法
- w: a' U& m* X) a7 V9 P用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
* G3 ]$ r0 }3 }+ ~-m, --modify-acl 更改文件的访问控制列表
* p! ]4 J5 A# a2 J-M, --modify-file=file 从文件读取访问控制列表条目更改! w1 R4 L$ p; E: w0 g4 N
-x, --remove=acl 根据文件中访问控制列表移除条目" e0 O( q N H: x& B X
-X, --remove-file=file 从文件读取访问控制列表条目并删除
/ s7 E8 ]8 G: _6 w' S-b, --remove-all 删除所有扩展访问控制列表条目 c$ w6 O0 i$ i E
-k, --remove-default 移除默认访问控制列表6 N+ e4 j( y( q, E5 z% G3 X5 U
--set=acl 设定替换当前的文件访问控制列表
9 z* `& {& Y2 Q& ^/ y --set-file=file 从文件中读取访问控制列表条目设定6 k9 J( ~* W5 {
--mask 重新计算有效权限掩码 i' `3 n- R9 M( x
-n, --no-mask 不重新计算有效权限掩码
6 Q# N+ T, b* I-d, --default 应用到默认访问控制列表的操作7 n& V; t) G+ {2 [) k$ |7 V; Y9 \
-R, --recursive 递归操作子目录" x: v; w3 X1 l9 [
-L, --logical 依照系统逻辑,跟随符号链接0 B t. ^+ B4 Y J) E p* P3 w; y
-P, --physical 依照自然逻辑,不跟随符号链接
; r' G2 s3 V4 H$ B+ s* t$ [" h7 \3 } --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
+ | L- ]- F; V5 d& e' t --test 测试模式,并不真正修改访问控制列表属性& F! A% {. ^6 r" e3 w; _
-v, --version 显示版本并退出& i4 i, w! B8 I3 K0 M' Y, ?) Z8 [
-h, --help 显示本帮助信息5 U9 z" q/ |$ r! u7 }- Y, `
3、几个例子/ l* ?; F9 [1 B W' ?
查看mysql-5.5.32安装目录的acl/ Y9 w' n$ w1 f
7 i+ y, P2 B, u! e+ S
查看
4 ]; @/ ]7 q) n8 C, g[root@localhost software]# getfacl mysql-5.5.32& g: y; }0 e* R' |* ^& ?
# file: mysql-5.5.328 _9 f4 L9 b5 W* h c4 g
# owner: mysql {9 r, r1 I- U" w' U5 o
# group: mysql
4 {+ D+ o1 k! r* Iuser::rwx* n$ [2 W3 S# s, p, V
user:mysql:r-x* }' b2 K+ p4 r' S: p+ ^" U! c
group::r-x( l' B; s7 {7 q; z8 D: w C
group:mysql:r-x: P! E- U, B( `+ P( q
mask::r-x
# w2 V$ ^/ O6 ^. J L% i" H% Eother::r-x
; n1 x- o4 y, u' n* ?5 R修改
( B: V2 I% Q$ B8 E- `" \设置默认用户,读,写,可执行
# \; k; D4 F# \' B- {& C4 `) w[root@localhost ~]# setfacl -m u::rwx test # D8 Q% m, Y5 Z. ]$ x+ @- M
修改文件的acl权限,添加一个用户权限6 b6 ]7 \/ R: `/ U& N; i
[root@localhost ~]# setfacl -m u:mmzs:rw- test : a$ X& ^: |6 x/ n
添加一个组
. H0 J) E/ l& {% `[root@localhost ~]# setfacl -m g:mmzsit:r-w test
3 c0 Q0 `% V( e给mmzs用户向test文件增加读和执行的acl规则: W% z( L: q2 \( w( s& E# V7 r' b
[root@localhost ~]# setfacl -m u:mmzs:rx test
6 q( V6 R k! ?' S, y' V- t: b* t- |给mmzsit用户向test文件增加读和执行的acl规则
" }4 |. B0 Y' k7 q! g% h[root@localhost ~]# setfacl -m u:mmzsit:rx test 8 a$ Q# y$ O4 V+ ]# a9 ?! f5 }
移除2 b& }* q7 P* j5 v' D4 S" S, O/ P
移除mysql-5.5.32目录的root组和root用户的acl规则
- @+ Y- x' S: E7 Z! P: f[root@localhost software]# setfacl -R -x g:root /software/mysql-5.5.32/
- P2 _. [+ J* m8 G) q[root@localhost software]# setfacl -R -x u:root /software/mysql-5.5.32/
& Y# R: M; G$ Y* u0 E% h清除tank用户,对test文件acl规则9 f& K7 b# I' ]9 q. L. |
[root@localhost ~]# setfacl -x u:mmzs test 0 r W% T- f- x
清除所有acl
( e8 s0 q ?3 f0 c+ X[root@localhost ~]# setfacl -b test
$ v8 g' V! `: @( p; V1 S ?说明事项:
" A! ~8 G: l( Q1 w1 W. g7 S& q设置组的话只需要把setfacl -m u::rwx 中的u改为g即可,大致差不多。( o H( x* r1 y9 y# N4 e
/ C' `, B j9 w% p设置mask的话,setfacl -m u::rwx 中的u改为m,并且这个可不针对用户和组哦,其他的大致差不多。4 J1 d& e+ s' n3 }9 ?6 o
* |- [: b8 E: W3 ?4 v9 B3 q
在使用-R时,记得放在-m前面,否则不可以地
! K( \2 O! {3 l$ B7 a: w; ]1 N7 Y+ ~4 Z9 H& p3 x
使用-d的话,就会把默认的都加上去,针对目录哦。 |
|