|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
# ^/ l0 U) a ?& p6 ]6 E5 Qacl库/ w6 C: u/ j- ^) j+ x+ S; n* P
作用:限制Linux某用户的访问权限# S: I" k* O5 C4 n- g( i5 c
. `5 R$ H; H# {" L/ Facl库的安装( x: N4 K% A! }$ E+ r1 k% O+ D
首先github中下载acl代码:
$ m( S. G( A& P1 A$ l6 ~ P5 [git clone https://github.com/acl-dev/acl# c9 h8 K$ @# @& p% X
进入acl, 执行make
0 N4 Y8 \- ~( h; d! B+ q. Xcd acl % ~% E7 s Q4 S% |& s8 j
make
. V; w5 E N. ]0 L, P) K) U4 \注意: [因为acl是由c/c++编写的,需要提前安装好gcc, g++]
" c% J7 b2 ~0 \# ?" K6 f7 I4 a" b/ V' K: M* g5 Y2 p
安装到用户根目录:( n0 m0 |* i4 E' X# Y' Q* q
make packinstall) k2 f5 Z. u" c" q6 P8 s& S7 b" B
一般到这儿就能编译安装成功了,在/user/include/ 目录下会有acl-lib目录。9 d$ g6 M( f1 K/ f: G* L' ]
" V, s5 Y0 `0 N* ^+ B- E如果是centos系统,可直接安装
/ u" G) E/ Z0 r( H' ]9 i# {yum install zlib-devel z, R! M5 l* p; q
setfacl命令的基本用法
7 o" n- p+ n X; ]1 z- o1、setfacl的用途
' P$ }5 n1 k, p5 H# e0 Asetfacl命令可以用来细分linux下的文件权限。% H5 a7 Y& B8 B/ @
chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。
1 y. a5 n8 E9 R4 w换句话说,setfacl可以更精确的控制权限的分配。
! M2 ^4 H! F, C w! y) j& i T比如:让某一个用户对某一个文件具有某种权限。
' k' z& W% N& X9 f& e( G7 G$ k7 i3 P) ]% ]& Z3 x
这种独立于传统的u,g,o的rwx权限之外的具体权限设置叫ACL(Access Control List). w: L O4 k. {
ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。1 ?/ x2 H& X" P% Z6 u) ~
如,某一个文件,不让单一的某个用户访问。
6 e; u* g2 g* M" V- s" x. i5 H* r, e; s/ m! x: a" Z% e
2、setfacl的用法/ U, \7 h6 @* v& D$ G
用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...2 L3 G5 ^' n6 D+ \
-m, --modify-acl 更改文件的访问控制列表2 N1 d* ^8 T6 ]2 ~( l! u' M8 S: s- Y
-M, --modify-file=file 从文件读取访问控制列表条目更改- U4 `% a+ j$ n1 f. A
-x, --remove=acl 根据文件中访问控制列表移除条目4 m% a7 u0 {* Q p7 l6 p* [
-X, --remove-file=file 从文件读取访问控制列表条目并删除5 P5 J& a+ z, y2 r9 Z2 M; p: l
-b, --remove-all 删除所有扩展访问控制列表条目
$ v/ n. g+ `! i-k, --remove-default 移除默认访问控制列表9 e4 p% @) n+ b( r
--set=acl 设定替换当前的文件访问控制列表
4 v: V3 F6 ~8 t/ ?; G2 m --set-file=file 从文件中读取访问控制列表条目设定$ {/ @9 O8 J `. P7 Y. K8 \1 a2 @
--mask 重新计算有效权限掩码
8 B1 k+ R" e; \- ?( R; H-n, --no-mask 不重新计算有效权限掩码0 h0 i& w: I* X. N+ D5 f" E; f
-d, --default 应用到默认访问控制列表的操作$ H# p7 ~" J" i' ]1 o$ Q. @
-R, --recursive 递归操作子目录
1 g. b7 J0 c" b7 _- L% P-L, --logical 依照系统逻辑,跟随符号链接2 d" J+ b a$ q* |1 h" N# u- p" z3 C
-P, --physical 依照自然逻辑,不跟随符号链接
9 i) f; S: e. C' r --restore=file 恢复访问控制列表,和“getfacl -R”作用相反/ L; g! m9 D4 m- d* Z
--test 测试模式,并不真正修改访问控制列表属性! U( m O2 A! h% D( ^4 `# w
-v, --version 显示版本并退出5 v+ |) I1 I$ |# k! W5 d; ?
-h, --help 显示本帮助信息
/ N Q# G- E9 H3、几个例子- q$ R) e; r# _; C0 P% K
查看mysql-5.5.32安装目录的acl
: r" Q% u7 [) S/ t/ L& N* h. |" |6 t0 ?" z' O: W# ?+ R
查看
+ j. Q) `' m9 o- o4 {1 o6 W. J[root@localhost software]# getfacl mysql-5.5.32
5 b/ S( Q1 |4 x- I# file: mysql-5.5.32# Y/ H% `9 I6 |1 y
# owner: mysql
; T8 f: w! B' ]2 Z# group: mysql# t. N/ }9 A7 c$ e9 E; ]
user::rwx* M G/ U7 N/ w1 F; c
user:mysql:r-x
% H5 T: U# z: kgroup::r-x- M9 ]4 D+ K3 P; ~ t% t
group:mysql:r-x1 K2 U p* R& \
mask::r-x7 x! |; E1 m, D/ e
other::r-x
o8 A# R) `4 e+ L9 d. P. ~修改2 A- B N" m$ B- m+ C$ V
设置默认用户,读,写,可执行1 z: I" S! t. H. n& h
[root@localhost ~]# setfacl -m u::rwx test ! g1 O# u3 f' X! W+ R" j
修改文件的acl权限,添加一个用户权限1 D7 @! c3 r, l. t# I
[root@localhost ~]# setfacl -m u:mmzs:rw- test $ w9 [: W$ S% V J
添加一个组6 ]; D0 p1 P6 c$ ]' v/ {2 m
[root@localhost ~]# setfacl -m g:mmzsit:r-w test
/ f; v$ i( ]; q1 V6 V* M0 d2 T给mmzs用户向test文件增加读和执行的acl规则
7 a6 A4 ?6 _7 Z4 ]& X! [[root@localhost ~]# setfacl -m u:mmzs:rx test 4 j! W$ Q/ w- g9 A: h7 r
给mmzsit用户向test文件增加读和执行的acl规则
4 u/ C- M; ?& q[root@localhost ~]# setfacl -m u:mmzsit:rx test ! R( @) }7 }: ^8 P7 J! f: Q" b! @5 y! F
移除- [9 D% E M/ u* ]- E/ J6 z0 M6 Q
移除mysql-5.5.32目录的root组和root用户的acl规则' u' h! `5 m+ @
[root@localhost software]# setfacl -R -x g:root /software/mysql-5.5.32/
1 h% D% t% W) m' h[root@localhost software]# setfacl -R -x u:root /software/mysql-5.5.32/
7 x8 ~* K, p8 e( C清除tank用户,对test文件acl规则
# } p( u9 Y0 l6 s6 D; v8 N[root@localhost ~]# setfacl -x u:mmzs test
$ Q$ Q3 D: g% ^5 v3 o% `! s1 n清除所有acl
# a# A1 h% V4 v E' \: D7 Y' b/ f[root@localhost ~]# setfacl -b test ! i( k5 ]8 i, {
说明事项:
P! S9 Z a3 Z设置组的话只需要把setfacl -m u::rwx 中的u改为g即可,大致差不多。
4 t# G S+ X* j1 k% P+ U
8 d& T# \9 E8 K) f) G; x设置mask的话,setfacl -m u::rwx 中的u改为m,并且这个可不针对用户和组哦,其他的大致差不多。 {) h t4 S8 _2 m( `
; K4 @; `; x+ ^/ ^# U
在使用-R时,记得放在-m前面,否则不可以地
1 E1 o+ \; C: [
1 v: G: M$ l2 x0 P Q$ o5 |& H! ~使用-d的话,就会把默认的都加上去,针对目录哦。 |
|