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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

- K6 c. J& C' x: y9 i" uacl库- b2 J4 H4 G" t, v9 \, L, U* s3 w7 b
作用:限制Linux某用户的访问权限
! j. k$ ]* x# l8 Z; a/ b& C5 a+ U& i) Q- \5 n( i
acl库的安装
4 s7 c; L) E2 F  m" P) r首先github中下载acl代码:
; ?+ Z7 e1 z- e, E/ Ygit clone https://github.com/acl-dev/acl% n" V& v: Z: G
进入acl, 执行make4 {% |6 k; Q0 B. ]6 }+ J
cd acl 3 L" g7 \  M2 h
make% {1 {2 v% Y% @# k. g
注意: [因为acl是由c/c++编写的,需要提前安装好gcc, g++], |4 Z: _4 `2 ~0 u8 R* k, w( s& ^
7 r3 ^+ N7 {+ I) l; A6 F
安装到用户根目录:1 I1 m( F# }( J0 _% B7 y; E
make packinstall' t0 x. [. |- T
一般到这儿就能编译安装成功了,在/user/include/ 目录下会有acl-lib目录。# ^: o% }! I# f; n2 V. x$ |9 O

( l) {/ X. f& P# o4 d' v# T- U如果是centos系统,可直接安装
- I2 e7 _' T' u% ?$ A( c" V7 Qyum install zlib-devel, \& B/ ~2 J! M- i& d6 L* }
setfacl命令的基本用法! L. C7 x0 |' ?
1、setfacl的用途2 h* b) u5 `+ q7 u" y2 Q% W/ O8 ?
setfacl命令可以用来细分linux下的文件权限。
9 L6 s8 |" y4 F1 lchmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。
, a- Q& Y  u) H换句话说,setfacl可以更精确的控制权限的分配。  _1 e! @- U( X3 E
比如:让某一个用户对某一个文件具有某种权限。
( z0 B* g) m8 f) _% w
- r6 O* F3 H) ^1 Q$ j" T这种独立于传统的u,g,o的rwx权限之外的具体权限设置叫ACL(Access Control List)
, O3 @& C8 V) f) }; KACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。
7 U) r) G* `3 A如,某一个文件,不让单一的某个用户访问。3 g) H5 I. Z; _7 h1 t1 T7 `3 ^- J0 {

9 G, ~3 F% K. t9 p; i9 }2、setfacl的用法
6 H) J8 s! q$ I7 h9 ^% _4 W2 G. a用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...' `3 n+ r- J. g( _8 G/ K) x
-m,       --modify-acl 更改文件的访问控制列表
' ~7 r; b, S3 Z4 V9 @& H. [-M,       --modify-file=file 从文件读取访问控制列表条目更改* L5 U3 U% z; g- t: h
-x,       --remove=acl 根据文件中访问控制列表移除条目
+ G( @/ B) [& {) g-X,       --remove-file=file 从文件读取访问控制列表条目并删除; L7 m! m. b  y: i: b3 W" u9 Z
-b,       --remove-all 删除所有扩展访问控制列表条目; F0 k  S) c  m0 ?" Y! i  s' a' e
-k,       --remove-default 移除默认访问控制列表: \0 C* p& |* o$ g9 W7 R6 L
          --set=acl 设定替换当前的文件访问控制列表' L7 n8 O; C4 i  X9 t. U
          --set-file=file 从文件中读取访问控制列表条目设定
9 y: X5 ^- I. w! A% I1 _          --mask 重新计算有效权限掩码/ R) H. {# ~2 d5 ?2 S9 R4 Y% h
-n,       --no-mask 不重新计算有效权限掩码
9 c2 _+ n! @! ^7 I0 y1 j-d,       --default 应用到默认访问控制列表的操作: ~* {& ]9 o. i, l# j7 [- t" y
-R,       --recursive 递归操作子目录& Y. V4 M% M! p2 \& P; n. t
-L,       --logical 依照系统逻辑,跟随符号链接
# J3 V2 v% O( v$ h-P,       --physical 依照自然逻辑,不跟随符号链接, v4 ]* C: [; W- Z
          --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
6 E' L+ [) C# z9 W1 u- B          --test 测试模式,并不真正修改访问控制列表属性4 [7 D1 U" G9 C
-v,       --version           显示版本并退出6 M. Q# h3 B" x
-h,       --help              显示本帮助信息
% a, S% J0 G8 N" J6 U" r, Q- I5 J3、几个例子3 u4 S/ E  j, G; R( ]9 o
查看mysql-5.5.32安装目录的acl! H. H8 E6 ^" y( E

: a8 O$ ~1 Q4 N+ g# s1 h% _查看. M* U( l" ]. _0 l& ~
[root@localhost software]# getfacl mysql-5.5.32
/ L& `# @9 c! Z" L# Y8 V+ n4 J# file: mysql-5.5.32% \: ], ~! _. z+ e( T1 A; I
# owner: mysql
& r- o; l  }" M' W% c# group: mysql
2 ?* x: R8 z3 s- D+ L" Luser::rwx" q3 ?+ {5 W, G3 m
user:mysql:r-x
. F/ O. s' g0 r* N& qgroup::r-x
+ D; F+ b8 k' X3 U; Q# Jgroup:mysql:r-x
5 G2 C# O: }% e. R9 p! B& Omask::r-x1 D1 l  o7 m5 _
other::r-x8 E4 C) y8 d0 v$ {
修改8 c6 k. t, C3 V$ d# E4 h+ G
设置默认用户,读,写,可执行4 ?* }# a' u( C- Y+ O
[root@localhost ~]# setfacl -m u::rwx test   % m8 u6 Q- b, b% Q, ~9 t" G, m8 c# I9 D
修改文件的acl权限,添加一个用户权限5 e% {% ~# b% ~; P# B! Q
[root@localhost ~]# setfacl -m u:mmzs:rw- test    : b6 k8 ^: @- a8 N% z
添加一个组
% z) M# H, `9 x% r: \: D[root@localhost ~]# setfacl -m g:mmzsit:r-w test  
5 p, `* H) E5 C+ ]+ O. n4 d" h  l5 j给mmzs用户向test文件增加读和执行的acl规则; d7 Y! t# ^  F3 e, F# z$ `6 C
[root@localhost ~]# setfacl -m u:mmzs:rx test     & R9 R5 b: W/ U, q
给mmzsit用户向test文件增加读和执行的acl规则
: a: w& r" w, ]. ^# e9 i* q4 s) _[root@localhost ~]# setfacl -m u:mmzsit:rx test 1 a- A% H& u- }& a
移除
  Z  G5 Q: w$ \移除mysql-5.5.32目录的root组和root用户的acl规则
- M* K' o! S: x[root@localhost software]# setfacl -R -x g:root /software/mysql-5.5.32/
/ Y( n; |, ]& x1 |( n[root@localhost software]# setfacl -R -x u:root /software/mysql-5.5.32/6 M+ z+ V% F& Y3 p& t( Y+ {+ `
清除tank用户,对test文件acl规则0 \5 I9 e2 b/ y" b
[root@localhost ~]# setfacl -x u:mmzs test   
. ?( F8 K# P% Y2 s/ n清除所有acl9 _8 u3 a) r- @6 d6 K, X, K8 N
[root@localhost ~]# setfacl -b test     
* d9 f- V6 ~  I说明事项:' m/ F* Q) z0 O0 c* \
设置组的话只需要把setfacl -m u::rwx 中的u改为g即可,大致差不多。
/ j# ~( X& H* W' s5 E7 z- U# ^+ J$ @# I' k+ u: B+ H# h8 {
设置mask的话,setfacl -m u::rwx 中的u改为m,并且这个可不针对用户和组哦,其他的大致差不多。: v8 W- T' l- d3 a$ Y; l
, P/ J! [& p- o4 s# W
在使用-R时,记得放在-m前面,否则不可以地* F6 T: S; A- X  s+ D# W
1 m3 H; s; [: c( Z1 V
使用-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 14:34 , Processed in 0.234375 second(s), 24 queries , Gzip On.

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

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

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