找回密码
 注册
关于网站域名变更的通知
查看: 488|回复: 1
打印 上一主题 下一主题

Linux之acl库的安装与使用(限制Linux某用户的访问权限)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-3-15 09:31 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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的话,就会把默认的都加上去,针对目录哦。
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2021-3-15 10:50 | 只看该作者
    Linux之acl库的安装与使用
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 17:31 , Processed in 0.156250 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表