|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
' D: d* k4 c( Y" G* ?, D/ racl库
" `" C4 Q- \# w3 s& j7 F* j作用:限制Linux某用户的访问权限
4 O/ R7 A7 H6 E' K; U# s) \
( ~# S' ?' n; L0 ~9 yacl库的安装. u r' S4 g7 {/ p( u
首先github中下载acl代码:. u7 v* |6 F8 E5 W6 @- _! f
git clone https://github.com/acl-dev/acl
- z% D0 U% J% P进入acl, 执行make
[# i, q; M* m8 {0 C) Y( zcd acl # V- d1 F/ R5 Y( n
make
, w6 @$ |! t6 b* l' t' r注意: [因为acl是由c/c++编写的,需要提前安装好gcc, g++]' t3 v; j* Z1 O4 t& g6 V
( [" }1 a. L9 e; I( R& g/ m安装到用户根目录:7 b1 b$ l: b- i4 t- x
make packinstall
+ Z6 G7 F7 b4 y4 |* ^, b一般到这儿就能编译安装成功了,在/user/include/ 目录下会有acl-lib目录。
: g8 Q) W$ k* T; J0 T
8 ]( M* v# Y; c3 T y如果是centos系统,可直接安装- b3 B* w1 \$ L0 Y: I0 U5 z0 P
yum install zlib-devel J0 G9 ^/ r' k) }7 M
setfacl命令的基本用法
* u8 y; A0 s6 F; J1、setfacl的用途
: V" G! s$ @* {setfacl命令可以用来细分linux下的文件权限。
/ O5 w& Z/ S* ?! [$ schmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。
5 r' m8 u( u& w3 m& w- ~/ E. U换句话说,setfacl可以更精确的控制权限的分配。
. o2 i2 L; G; y6 f比如:让某一个用户对某一个文件具有某种权限。
/ b7 ^0 T' }5 w4 x7 F6 C0 _ N: ]$ X% n1 c, }
这种独立于传统的u,g,o的rwx权限之外的具体权限设置叫ACL(Access Control List)" e! f% ~2 @ {+ E% x
ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。
; ~4 R0 q6 r8 O; w5 E0 D8 H: Y2 X如,某一个文件,不让单一的某个用户访问。! |, r+ L$ g3 ^& C! G* Z& i
) O& l- ?$ n2 W1 `2、setfacl的用法3 L5 M) e) w3 V8 L& e/ ?
用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...! q' p/ _# e- i- \1 S/ Y8 t% ?) ?& @+ U
-m, --modify-acl 更改文件的访问控制列表
2 v9 Z7 t/ m4 P9 q2 P/ X1 O! h-M, --modify-file=file 从文件读取访问控制列表条目更改) j0 q( c% o! B% |# g8 _) k/ F
-x, --remove=acl 根据文件中访问控制列表移除条目' y2 S# ^( ]0 |
-X, --remove-file=file 从文件读取访问控制列表条目并删除
) \% o, m+ ^) V* G- s! ^. K# O-b, --remove-all 删除所有扩展访问控制列表条目9 {0 P+ }0 f' E6 v& q6 W
-k, --remove-default 移除默认访问控制列表 Z' a5 q5 i& D: P2 V* B
--set=acl 设定替换当前的文件访问控制列表
* ?+ s; b$ B1 L J" O- b --set-file=file 从文件中读取访问控制列表条目设定
3 r, W$ T9 `! Y --mask 重新计算有效权限掩码/ @7 {. ^' X" \" `
-n, --no-mask 不重新计算有效权限掩码/ L$ j$ d& K& F8 Q; W
-d, --default 应用到默认访问控制列表的操作9 Q& J: T* }) X- N) L+ h
-R, --recursive 递归操作子目录
1 d, U5 S* B( u; U* P) C$ F+ @$ b-L, --logical 依照系统逻辑,跟随符号链接
* Z8 l5 a2 R2 J# i o" V-P, --physical 依照自然逻辑,不跟随符号链接1 @( Z- M6 T8 ]2 ]6 f5 j
--restore=file 恢复访问控制列表,和“getfacl -R”作用相反
" V% J) K. b" ? J: Z --test 测试模式,并不真正修改访问控制列表属性5 O/ C& s( x- H3 N
-v, --version 显示版本并退出
+ D. k3 e1 |( w+ P3 q$ s- O-h, --help 显示本帮助信息
/ g1 x7 r! C" |- d' B& s5 s3、几个例子# b# F. E2 o, V1 b6 ?
查看mysql-5.5.32安装目录的acl2 T" t% Y2 P5 U0 E/ a7 E g
) D1 c3 {! }! u* D( d* r0 [" E查看
" b6 M m1 C1 M[root@localhost software]# getfacl mysql-5.5.32
) C8 A6 B3 t! ~3 a" _) K9 Q g# file: mysql-5.5.32
: m. ?0 d1 w; R3 b3 {# owner: mysql
- r& B4 _& q, s) O$ H: j# group: mysql
8 P% C [. A" ]7 r0 z0 ]user::rwx. |; L5 y. f' i, P
user:mysql:r-x
. L8 \% f! C' Y! A _group::r-x) S2 j' O7 F- }9 l7 N P
group:mysql:r-x
, R j$ l6 T P6 emask::r-x0 E0 s# F5 ]4 B; N2 C9 [+ q% r, D
other::r-x
1 y$ M9 L8 i s$ ?修改5 l, g. o% x' P& O/ q
设置默认用户,读,写,可执行
- Z, A' c* y E2 M/ o[root@localhost ~]# setfacl -m u::rwx test ' s; s8 r/ r2 j' A9 E2 O# m7 e
修改文件的acl权限,添加一个用户权限" N% [$ Y5 h- x* ]+ W3 w
[root@localhost ~]# setfacl -m u:mmzs:rw- test
, |$ H; N6 z$ [1 I% j. R' S添加一个组
' n! }" L% F! k! N+ _, E[root@localhost ~]# setfacl -m g:mmzsit:r-w test
! L6 K! {2 `8 ]: _! g8 N- p给mmzs用户向test文件增加读和执行的acl规则5 e5 p0 F- b* H) W( U
[root@localhost ~]# setfacl -m u:mmzs:rx test
; C$ j. H' t" Q8 z2 E7 t给mmzsit用户向test文件增加读和执行的acl规则
D+ Y) G3 |/ `- ?[root@localhost ~]# setfacl -m u:mmzsit:rx test
/ u3 w: l8 l1 c5 ^+ O移除
" g1 }5 _7 t. ]: h移除mysql-5.5.32目录的root组和root用户的acl规则! ?; z- N8 e# D( x9 E9 M6 V
[root@localhost software]# setfacl -R -x g:root /software/mysql-5.5.32/
# [9 P& ]* P0 d* S1 t/ A, l[root@localhost software]# setfacl -R -x u:root /software/mysql-5.5.32/
$ y" \) M% Y, R1 @: N8 c清除tank用户,对test文件acl规则
* Y4 c/ C2 M% p8 @[root@localhost ~]# setfacl -x u:mmzs test
2 s8 }) [7 S4 W$ B. ~% z清除所有acl
0 w0 f) `% z! D6 M7 W[root@localhost ~]# setfacl -b test 2 L( d2 E' U8 N* R( j Z }
说明事项:
) s& q4 A) S) l设置组的话只需要把setfacl -m u::rwx 中的u改为g即可,大致差不多。
- b1 [6 U5 j; R8 I2 Y+ e4 h
2 d2 ?3 r7 \. C" I0 ^: k设置mask的话,setfacl -m u::rwx 中的u改为m,并且这个可不针对用户和组哦,其他的大致差不多。
% e$ R8 l% E: j% r* U1 z
. h6 Z( \" L6 G7 @: b在使用-R时,记得放在-m前面,否则不可以地
. b# B. o. n0 c0 H0 H0 N! N6 ~) R7 n \, o& }
使用-d的话,就会把默认的都加上去,针对目录哦。 |
|