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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
4 ]) n: M. d1 o4 r, ]
acl库4 C" Y& f' ~7 g- A
作用:限制Linux某用户的访问权限) z( g, r% D2 N& ]
3 N: q2 t' Z( e0 B
acl库的安装
8 V( g* c1 m3 |( I% I: p首先github中下载acl代码:" a5 {7 V* m/ ^" P) {+ W7 k" O
git clone https://github.com/acl-dev/acl& Z7 q; V0 l6 o7 H0 W6 v  h
进入acl, 执行make( s( k2 K* i9 x$ Q6 B' ^% q3 }
cd acl ; B: g4 T0 E* r9 L' B  u% D, C
make& S( h7 r3 d  Y! x- h) a& {: G: e
注意: [因为acl是由c/c++编写的,需要提前安装好gcc, g++]& r. S/ C# M! s* l6 o& F
& J( Z, a! p! G7 h1 U
安装到用户根目录:1 X# G3 S. ]9 s
make packinstall* M  `' o/ p6 e, @3 U% X' w/ n
一般到这儿就能编译安装成功了,在/user/include/ 目录下会有acl-lib目录。
) r/ Z4 x: j0 m- p& ^( e4 c  ?/ P) m8 P1 e$ ~/ }/ [' Z
如果是centos系统,可直接安装
, F; T4 i. h7 Eyum install zlib-devel" `$ o. {4 l) o9 `) t" u! P
setfacl命令的基本用法
! _+ G' ]( V- c1 {, I1、setfacl的用途) {9 Q7 k$ g9 }+ ~
setfacl命令可以用来细分linux下的文件权限。
1 I# _1 p$ S+ [& Q  o6 m8 `chmod命令可以把文件权限分为u,g,o三个组,而setfacl可以对每一个文件或目录设置更精确的文件权限。! Z* x* D. e5 }' ]
换句话说,setfacl可以更精确的控制权限的分配。
4 B, |. U/ I1 i6 w" w1 y, p比如:让某一个用户对某一个文件具有某种权限。
# I) G- Q- t- k" q1 G1 T' T, N# ~4 I  [
这种独立于传统的u,g,o的rwx权限之外的具体权限设置叫ACL(Access Control List)
3 O: J. g/ i2 G4 uACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,对于需要特殊权限的使用状况有一定帮助。) ^4 C! n; t7 ]1 S5 j
如,某一个文件,不让单一的某个用户访问。2 g# P2 I; U1 a7 W

+ l2 u4 U7 `- G1 a. u+ p/ h. b2、setfacl的用法
- w: a' U& m* X) a7 V9 P用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
* G3 ]$ r0 }3 }+ ~-m,       --modify-acl 更改文件的访问控制列表
* p! ]4 J5 A# a2 J-M,       --modify-file=file 从文件读取访问控制列表条目更改! w1 R4 L$ p; E: w0 g4 N
-x,       --remove=acl 根据文件中访问控制列表移除条目" e0 O( q  N  H: x& B  X
-X,       --remove-file=file 从文件读取访问控制列表条目并删除
/ s7 E8 ]8 G: _6 w' S-b,       --remove-all 删除所有扩展访问控制列表条目  c$ w6 O0 i$ i  E
-k,       --remove-default 移除默认访问控制列表6 N+ e4 j( y( q, E5 z% G3 X5 U
          --set=acl 设定替换当前的文件访问控制列表
9 z* `& {& Y2 Q& ^/ y          --set-file=file 从文件中读取访问控制列表条目设定6 k9 J( ~* W5 {
          --mask 重新计算有效权限掩码  i' `3 n- R9 M( x
-n,       --no-mask 不重新计算有效权限掩码
6 Q# N+ T, b* I-d,       --default 应用到默认访问控制列表的操作7 n& V; t) G+ {2 [) k$ |7 V; Y9 \
-R,       --recursive 递归操作子目录" x: v; w3 X1 l9 [
-L,       --logical 依照系统逻辑,跟随符号链接0 B  t. ^+ B4 Y  J) E  p* P3 w; y
-P,       --physical 依照自然逻辑,不跟随符号链接
; r' G2 s3 V4 H$ B+ s* t$ [" h7 \3 }          --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
+ |  L- ]- F; V5 d& e' t          --test 测试模式,并不真正修改访问控制列表属性& F! A% {. ^6 r" e3 w; _
-v,       --version           显示版本并退出& i4 i, w! B8 I3 K0 M' Y, ?) Z8 [
-h,       --help              显示本帮助信息5 U9 z" q/ |$ r! u7 }- Y, `
3、几个例子/ l* ?; F9 [1 B  W' ?
查看mysql-5.5.32安装目录的acl/ Y9 w' n$ w1 f
7 i+ y, P2 B, u! e+ S
查看
4 ]; @/ ]7 q) n8 C, g[root@localhost software]# getfacl mysql-5.5.32& g: y; }0 e* R' |* ^& ?
# file: mysql-5.5.328 _9 f4 L9 b5 W* h  c4 g
# owner: mysql  {9 r, r1 I- U" w' U5 o
# group: mysql
4 {+ D+ o1 k! r* Iuser::rwx* n$ [2 W3 S# s, p, V
user:mysql:r-x* }' b2 K+ p4 r' S: p+ ^" U! c
group::r-x( l' B; s7 {7 q; z8 D: w  C
group:mysql:r-x: P! E- U, B( `+ P( q
mask::r-x
# w2 V$ ^/ O6 ^. J  L% i" H% Eother::r-x
; n1 x- o4 y, u' n* ?5 R修改
( B: V2 I% Q$ B8 E- `" \设置默认用户,读,写,可执行
# \; k; D4 F# \' B- {& C4 `) w[root@localhost ~]# setfacl -m u::rwx test   # D8 Q% m, Y5 Z. ]$ x+ @- M
修改文件的acl权限,添加一个用户权限6 b6 ]7 \/ R: `/ U& N; i
[root@localhost ~]# setfacl -m u:mmzs:rw- test    : a$ X& ^: |6 x/ n
添加一个组
. H0 J) E/ l& {% `[root@localhost ~]# setfacl -m g:mmzsit:r-w test  
3 c0 Q0 `% V( e给mmzs用户向test文件增加读和执行的acl规则: W% z( L: q2 \( w( s& E# V7 r' b
[root@localhost ~]# setfacl -m u:mmzs:rx test     
6 q( V6 R  k! ?' S, y' V- t: b* t- |给mmzsit用户向test文件增加读和执行的acl规则
" }4 |. B0 Y' k7 q! g% h[root@localhost ~]# setfacl -m u:mmzsit:rx test 8 a$ Q# y$ O4 V+ ]# a9 ?! f5 }
移除2 b& }* q7 P* j5 v' D4 S" S, O/ P
移除mysql-5.5.32目录的root组和root用户的acl规则
- @+ Y- x' S: E7 Z! P: f[root@localhost software]# setfacl -R -x g:root /software/mysql-5.5.32/
- P2 _. [+ J* m8 G) q[root@localhost software]# setfacl -R -x u:root /software/mysql-5.5.32/
& Y# R: M; G$ Y* u0 E% h清除tank用户,对test文件acl规则9 f& K7 b# I' ]9 q. L. |
[root@localhost ~]# setfacl -x u:mmzs test    0 r  W% T- f- x
清除所有acl
( e8 s0 q  ?3 f0 c+ X[root@localhost ~]# setfacl -b test     
$ v8 g' V! `: @( p; V1 S  ?说明事项:
" A! ~8 G: l( Q1 w1 W. g7 S& q设置组的话只需要把setfacl -m u::rwx 中的u改为g即可,大致差不多。( o  H( x* r1 y9 y# N4 e

/ C' `, B  j9 w% p设置mask的话,setfacl -m u::rwx 中的u改为m,并且这个可不针对用户和组哦,其他的大致差不多。4 J1 d& e+ s' n3 }9 ?6 o
* |- [: b8 E: W3 ?4 v9 B3 q
在使用-R时,记得放在-m前面,否则不可以地
! K( \2 O! {3 l$ B7 a: w; ]1 N7 Y+ ~4 Z9 H& p3 x
使用-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-6-24 05:13 , Processed in 0.062500 second(s), 23 queries , Gzip On.

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

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

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