|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
; X! ^+ x9 u" v" k
acl库
! Y( N# s# G% d4 j作用:限制Linux某用户的访问权限3 \6 m( {2 R3 | X9 @( O% a c
: w7 p4 Z+ ]/ b% v) nacl库的安装4 z. e6 F: k; {; ]' P8 \
首先github中下载acl代码:
% j, L6 k) r. Z: @git clone https://github.com/acl-dev/acl: G" y, N( l$ t5 R n* K
进入acl, 执行make
8 T1 U6 I/ J6 Ecd acl ! [! [5 j4 j( l% a+ d. s0 X
make/ o6 l* `, _7 |+ i' g& r. s5 l; F
注意: [因为acl是由c/c++编写的,需要提前安装好gcc, g++]
4 E2 r% m; q; K% a
: l. R( [8 x. W: O9 h; h安装到用户根目录:
# M/ |8 M* q9 Tmake packinstall ^! U% D; t0 k2 W3 ~
一般到这儿就能编译安装成功了,在/user/include/ 目录下会有acl-lib目录。: c- h1 J0 I$ ~! X6 H: _0 c4 q
_2 g v2 ^+ a2 L: q' H如果是centos系统,可直接安装) e6 P* n! N; J: ]9 d7 F" x/ V* N
yum install zlib-devel
, \( L* O6 r, ? u2 x$ O1 Isetfacl命令的基本用法% N3 d: [' ]4 u- ? @" L( I
1、setfacl的用途
# K6 u6 K* i( E* k" P P3 K t, J9 G4 dsetfacl命令可以用来细分linux下的文件权限。, ]" l) x7 P1 d g2 L7 L5 Q$ |
chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。
! [/ d6 P0 ]' G# J+ `4 a换句话说,setfacl可以更精确的控制权限的分配。
* f3 L0 T3 `* N* c' s; }: I% e比如:让某一个用户对某一个文件具有某种权限。
$ M* r l, j% D1 y N0 Z1 ? b/ C% X0 J! @0 g# U
这种独立于传统的u,g,o的rwx权限之外的具体权限设置叫ACL(Access Control List). h4 s$ T1 R) O( h$ x4 {4 S( ]3 t& _
ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。3 c$ K* u5 h! k+ V o) v
如,某一个文件,不让单一的某个用户访问。
1 c5 K$ k2 H; T% h2 D. q, X0 u- T0 I) I$ w! ^- U- a( l
2、setfacl的用法
u1 M9 h5 e! V& r9 q用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...- w- e2 D8 e+ o9 _6 P+ y
-m, --modify-acl 更改文件的访问控制列表$ ~+ ?% U w* n! J
-M, --modify-file=file 从文件读取访问控制列表条目更改8 n1 a' `- V+ x1 Y7 R. s5 @
-x, --remove=acl 根据文件中访问控制列表移除条目
7 I0 }# R% a9 E5 U9 A. H-X, --remove-file=file 从文件读取访问控制列表条目并删除5 K8 U I6 b. Q/ L4 r! k' N0 j
-b, --remove-all 删除所有扩展访问控制列表条目
& h. Z4 d# P, g, ]' v-k, --remove-default 移除默认访问控制列表- |. A1 L. S9 ]8 S
--set=acl 设定替换当前的文件访问控制列表8 y6 l# i; K# f+ t* l- I) @
--set-file=file 从文件中读取访问控制列表条目设定
4 ]- q$ p( } Z4 y --mask 重新计算有效权限掩码3 ?3 j& H" f) z1 y( r0 q0 W- U
-n, --no-mask 不重新计算有效权限掩码
; B# N/ n) l( b& H. A-d, --default 应用到默认访问控制列表的操作8 }) i% N0 `- ]9 }4 |2 z2 a
-R, --recursive 递归操作子目录: u) J) X' C* k( X( }& Y+ `. ?1 ]
-L, --logical 依照系统逻辑,跟随符号链接4 m* m1 L& u1 p# u
-P, --physical 依照自然逻辑,不跟随符号链接
( q; k& I0 O8 Q5 l6 r --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
& |4 Z r* o6 ]; a9 P @ --test 测试模式,并不真正修改访问控制列表属性5 q& Z! j! [/ K* M j7 a
-v, --version 显示版本并退出7 K+ o: S5 T5 ]0 N* K6 A
-h, --help 显示本帮助信息
7 b. K3 S5 K" W# S/ @% \3、几个例子
: e% r: t/ D" a0 y. X查看mysql-5.5.32安装目录的acl) _! U- Z4 w" h- |6 O
" _5 Q% L$ W- u
查看
- \' N8 w) \, n3 r0 O+ i3 ? f[root@localhost software]# getfacl mysql-5.5.32) g$ a5 [: m7 _5 n+ T4 u
# file: mysql-5.5.32
0 z' N& }" D8 j, y1 U+ h# owner: mysql
! w2 K, O7 r, q$ v- k' U# group: mysql2 T/ ^: u8 G7 k( f
user::rwx# r. ^4 w9 T4 S8 t! Z( t
user:mysql:r-x/ B3 ~( O( {) M" p3 N. W
group::r-x0 s' d; A+ ~- A/ l; A
group:mysql:r-x
; |" G, Z2 P6 k- Zmask::r-x2 E. a% O4 S2 @
other::r-x
g( x$ f' h& t5 h$ g修改 M! k9 p) ]& R
设置默认用户,读,写,可执行6 v G$ @5 W. | b7 Q
[root@localhost ~]# setfacl -m u::rwx test
- H6 p9 ]1 {9 t5 @: h* {8 y) {7 \修改文件的acl权限,添加一个用户权限6 N- h2 H/ h8 t% L9 X: f. Y
[root@localhost ~]# setfacl -m u:mmzs:rw- test
. l% O0 L! ~ x9 ? A( K/ r添加一个组 w0 H0 z/ s& o
[root@localhost ~]# setfacl -m g:mmzsit:r-w test / [4 n# K/ d( E2 N0 s2 @! m. s# r
给mmzs用户向test文件增加读和执行的acl规则* Y! I0 F6 v. o" F# ^
[root@localhost ~]# setfacl -m u:mmzs:rx test 1 P; j. A) | `: N
给mmzsit用户向test文件增加读和执行的acl规则
0 ]$ e* V5 Y* b0 K# ?2 ^[root@localhost ~]# setfacl -m u:mmzsit:rx test
) c7 @1 P7 Z5 s" y, d8 ~) N移除) a6 M, I* E. }- e, z
移除mysql-5.5.32目录的root组和root用户的acl规则4 c) K6 {( {- U. S: e2 ~) h
[root@localhost software]# setfacl -R -x g:root /software/mysql-5.5.32/
$ {6 w5 |, V- P5 x' p5 r[root@localhost software]# setfacl -R -x u:root /software/mysql-5.5.32/
( D) _8 f% t& l5 h* W. q0 p$ y清除tank用户,对test文件acl规则
4 m% _2 ^% L$ i, c[root@localhost ~]# setfacl -x u:mmzs test v; i& E7 a' S
清除所有acl
9 c T; Y0 N6 V. Z, D# c% e[root@localhost ~]# setfacl -b test
2 F; g* }" [: G& c2 {说明事项:; s/ k2 k: t2 G5 e5 f! w0 v
设置组的话只需要把setfacl -m u::rwx 中的u改为g即可,大致差不多。9 j2 ]0 I7 Y9 A2 k. n1 }
9 U1 J4 h/ C" z设置mask的话,setfacl -m u::rwx 中的u改为m,并且这个可不针对用户和组哦,其他的大致差不多。
/ G q# E3 T( Y* k. l4 K
4 |7 R4 p9 J- g# k! U在使用-R时,记得放在-m前面,否则不可以地
# v6 \& V9 s; g0 V
, r$ z1 [; P! v; S, I& \0 c使用-d的话,就会把默认的都加上去,针对目录哦。 |
|