2020-09-03

tech2025-01-05  10

Linux ACL权限 ACL 访问控制列表; 主要目的是在提供的传统的owner group w x r 权限之外 的细部权限设定 ACL 可以针对某一个使用者,某一个文件或者目录来设定rwx权限,对于 需要特殊权限的使用状态非常有帮助 setfacl 命令 : 设定权限 [root@test tmp]# setfacl --help setfacl 2.2.51 – set file access control lists Usage: setfacl [-bkndRLP] { -m|-M|-x|-X … } file … 常用选项: -m : 添加acl设定参数 -x :删除acl设定参数 -b :移除所有的acl设定参数 -R :递归添加acl设定参数 -d : 添加默认acl设定参数(目录)

删除用户权限: setfacl -x u:username file 删除组权限: setfacl -x g:groupname file 删除整个acl权限: setfacl -b file 实例1 针对用户的设定方式: 设定规范:u:username:power 1.设定user对testfile有rwx权限 setfacl -m u:user:rwx testfile 2.设定user对testdirectory目录下所有文件有rwx权限 setfacl -R -m u:user:rwx testdirectory 3.去掉user对testdirectory的x权限 setfacl -x u:user testdirectory/ 4.去掉所有acl权限 setfacl -b 5.为testdirectory目录添加默认的acl权限,此目录下创建目录和文件,user都有rwx权限 setfacl -d -m u:user:rwx testdirectory/ 实例2: 针对用户组的设定方式 设定规范:g:groupname:power

给acl_test1文件添加mygropu1组rx权限设定 [root@study ~]# setfacl -m g:mygroup1:rx acl_test1 [root@study ~]# getfacl acl_test1

file: acl_test1

owner: root

group: root

user::rwx user:vbird1:rx group::r– group:mygroup1:rx # 组权限设定 mask::rx other::r–

getfacl命令:查看acl权限设定 [root@test tmp]# getfacl testfile

file: testfile

owner: root

group: root

user::rw- user:user:rwx # 针对user用户具有rwx权限 group::r– group:group1:rw- # 针对group1组具有rw权限 mask::rwx other::r-- # 如果没有其他设定 默认属于other [root@test tmp]# ll testfile -rw-rwxr–+ 1 root root 0 Feb 8 02:29 testfile [root@test tmp]# su user [user@test tmp]$ echo “hello” > testfile [user@test tmp]$ cat testfile hello 通配符: 是shell在做匹配的时候会用到,一般用于匹配文件名 它是由shell进行解析的,比如 find ls cp 等等命令都可以配合着通配符一起使用 shell常见的通配符 * : 匹配0或者多个字符 ?: 匹配任意1个字符 [list]: 匹配list中任意单个字符 [c1-c2]: 匹配c1-c2中任意单个字符 [^c1-c2]: 不匹配c1-c2中任意单个字符 {string1,string2…} : 匹配{}中任意单个字符

匹配条件:

?.txt[123]1.txt --> 11.txt 21.txt 31.txt[1-9].txt --> 1.txt 2.txt … 9.txt[^a-z].txt --> 除了a.txt … z.txt文件{A,B,C}.txt --> A.txt B.txt C.txt文件 shell元字符 IFS : // CR: = :设定变量 $ : 获取变量

< : 重定向 | : 管道 & : 后台执行命令 () : 在子shell中执行命令/运算或命令替换等 {}: 函数中执行/变量替换的范围定界 ; : 命令结束后,忽略其返回值,继续执行下一个命令 && : 命令结束后,若为true,继续执行下一个命令 || : 命令结束后,若为false,继续执行下一个命令 ! : 非

:注释

\ : 转义

shell转义符: 硬转义: 内部所有shell元字符、通配符等 都会被关闭掉 ’ ’ 软转义: 内部所有shell元字符、通配符等 都正常生效 " "

案例: [root@test test1]# a=1 [root@test test1]# echo ‘$a’ KaTeX parse error: Expected 'EOF', got '#' at position 20: …oot@test test1]#̲ echo "a" 1 find命令 实时查找工具,通过遍历指定路径下的文件系统完成文件查找 工作特点: 查找速度略慢 精确查找 实时查找 [root@test tmp]# find --help Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path…] [expression] find [选项] [路径] [查找条件 + 处理动作] 路径: 指定具体目录路径,默认是当前文件夹 查找条件: 指定查找的标准(文件名/大小/文件类型/权限等等),默认是找出所有文件 处理动作: 对符合条件的文件做什么操作,默认是输出屏幕

查找条件 根据文件名称查找: -name “filename” 根据文件名称查找(支持通配符global) -iname “filename” 根据文件名称查找;忽略大小写(支持通配符global) -regex “PATTERN” 以pattern匹配整个文件路径字符串,而不仅仅是文件名称

[root@test tmp]# find ./ -name “1[123].txt” 根据属主和属组查找: -user username : 查找属主为指定用户的文件 -group groupname: 查找属组为指定用户的文件 -uid UID : 查找属主为指定UID号的文件 -gid GID :查找数组为指定GID号的文件 -nouser: 查找没有属主的文件 -nogroup: 查找没有属组的文件

根据文件类型查找: -type TYPE : TYPE: f d l s b c p

组合条件: 与:-a 或:-o 非: -not 相关案例:找出/tmp目录下,属主不是root,且文件名不是fstab的文件 find /tmp ( -not -user root -a -not -name “fstab”\ ) 根据文件大小查找: -size [+|-]N[bkMG] 寻找/下文件大小超过10M的所有文件: [root@test tmp]# find / -size +10M 根据时间戳: 天: -atime [+|-]N -mtime [+|-]N -ctime [+|-]N

-atime +7 : 表示7天内

-amin [+|-]N -mmin [+|-]N -cmin [+|-]N

根据权限进行查找: -perm [+|-]MODE MODE : 精确查找 /MODE : 任何一类(u g o )对象的权限中只要能有一位匹配即可 -MODE : 每一类对象都必须同时拥有为其制定的权限标准 处理动作: -print: 默认处理动作,显示至屏幕上 -ls: 类似于对查找到的文件执行 ls -l 命令 -delete: 删除查找到的文件 -fls /path/to/somefile : 查找到的所有文件的长格式信息保存至指定文件中

-ok COMMAND {}\ :

对查找到的每个文件执行由COMMAND指定的命令 {}: 用于引用查找到的文件名称自身 交互式,每个文件执行命令前会让用户确定

-exec COMMAND {}\:

对查找到的每个文件执行由COMMAND指定的命令 {}: 用于引用查找到的文件名称自身

实例1: 对/tmp目录下所有属主为root用户的文件修改其属主为zhangsan [root@test tmp]# find /tmp -user root -ok chown zhangsan: {} ; (这里 {} \ 之间要有空格)

实例2: 对/tmp目录下所有属主为zhangsan用户或者属主为zhangsan的文件修改其为root:root [root@test tmp]# find /tmp -user zhangsan -o -group zhangsan -exec chown root:root {} ; 注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令; 另一种 方式可规避此问题 find | xargs COMMAND 等同于上面实例2的操作 [root@test tmp]# find /tmp -user zhangsan -o -group zhangsan | xargs chown root:root 练习题:

查找/var目录下属主为root,且属组为mail的所有文件或目录查找/usr目录下不属于root,bin或Hadoop的所有文件或目录查找/etc目录下周一内容曾被访问过的文件或目录查找当前系统上没有属主或属组,且近一周内曾被访问过的文件或目录查找/etc目录下大于1M且类型为普通文件的所有文件或目录查找/etc目录下所有用户都没有写权限的文件查找/etc目录下至少一类用户没有执行权限的文件查找/etc/init.d目录下,所有用户都执行权限,且其它用户写权限的文件
最新回复(0)