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

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

[复制链接]

该用户从未签到

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

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的话,就会把默认的都加上去,针对目录哦。
  • 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 13:49 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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