Linux文件权限策略setfacl命令

“春风得意马蹄疾,一日看尽长安花。” ——《登高》 杜甫

Linux文件权限策略setfacl命令

前言

Linux的文件权限策略使用setfacl命令来管理的。setfacl命令允许用户在文件和目录上添加删除修改权限。它可以根据用户、组、用户组和其他条件来定义文件和目录的权限。

命令语法

setfacl命令的语法如下:

    [root@mysql5_7 ~]# setfacl -m user:username permissions file/directory

其中,-m选项用于添加或修改权限,user:username表示要授予权限的用户名,permissions表示要授予或修改的权限。

例如,如果要授予用户 test读、写和执行权限,可以使用以下命令:

   setfacl -m user:test:rwx file.txt

要列出当前文件和目录的所有权限,可以使用 getfacl 命令:

    [root@mysql5_7 ~]# getfacl file.txt
    # file: file.txt
    # owner: root
    # group: root
    user::rw-
    group::r--
    other::r--

这将列出file.txt文件的所有权限,并将它们打印到终端上。

操作案例

创建了一个名为test的用户。

    [root@mysql5_7 ~]# useradd  test

使用getfacl命令查看file.txt文件的ACL权限。

    [root@mysql5_7 ~]# getfacl file.txt
    # file: file.txt
    # owner: root
    # group: root
    user::rw-
    group::r--
    other::r--

使用setfacl命令将test用户添加到file.txt文件的ACL权限中,并赋予读写权限。

    [root@mysql5_7 ~]# setfacl -m user:test:rw file.txt

使用echo命令并通过管道方式将密码"123456"传递给passwd命令,将test用户的密码更改为"123456"。

    [root@mysql5_7 ~]# echo "123456" | passwd --stdin test
    Changing password for user test.
    passwd: all authentication tokens updated successfully.

使用ls -l命令查看file.txt文件的详细权限信息。

    [root@mysql5_7 ~]# ls -l file.txt
    -rw-rw-r--+ 1 root root 0 Aug  9 20:33 file.txt

使用chmod命令将file.txt文件的权限修改为只有root用户有访问权限。

    [root@mysql5_7 ~]# chmod 000 file.txt
    

使用ls -l命令再次查看file.txt文件的详细权限信息。

    [root@mysql5_7 ~]# ls -l file.txt
    ----------+ 1 root root 0 Aug  9 20:33 file.txt

使用su命令切换到test用户。

    [root@mysql5_7 ~]# su test
    [test@mysql5_7 root]$ ls
    ls: cannot open directory .: Permission denied

尝试使用ls命令查看根目录下的文件,但因权限不足而失败。

使用usermod命令将test用户添加到wheel组(提权)

    [root@mysql5_7 /]# usermod test -G  wheel 

使用echo命令将"1234567"写入file.txt文件。

    [test@mysql5_7 /]$ echo "1234567" > file.txt

使用cat命令查看file.txt文件的内容。

    [test@mysql5_7 /]$ cat file.txt
    1234567

创建了一个名为test2的用户。

    [root@mysql5_7 /]# useradd test2
    [root@mysql5_7 /]# echo "123456" | passwd --stdin test2
    Changing password for user test2.
    passwd: all authentication tokens updated successfully.

使用ls -l命令查看file.txt文件的详细权限信息,发现已经对其他用户进行了限制。

    [test2@mysql5_7 /]$ ls -l file.txt
    ----rwx---+ 1 root root 8 Aug 11 23:41 file.txt
    [test2@mysql5_7 /]$ vim file.txt
    [test2@mysql5_7 /]$ cat file.txt
    cat: file.txt: Permission denied
    [test2@mysql5_7 /]$ echo "12334" > file.txt
    bash: file.txt: Permission denied
    [test2@mysql5_7 /]$
  • 使用vim命令尝试编辑file.txt文件,但因权限不足而失败。

  • 使用cat命令尝试查看file.txt文件的内容,但因权限不足而失败。

  • 使用echo命令尝试向file.txt文件写入内容,但因权限不足而失败

删除 test 用户,策略也会相应地被删除

[root@mysql5_7 /]# userdel -r test
[root@mysql5_7 /]# getfacl file.txt
# file: file.txt
# owner: root
# group: root
user::---
user:1000:rwx
group::r--
mask::rwx
other::---

# 可以看到用户策略消失了

要删除所有权限,可以使用以下命令:

    setfacl -u username:username file.txt

其中,-u选项用于删除权限。

除了-m选项之外,setfacl命令还可以使用其他选项来指定其他权限和条件。有关setfacl命令的完整语法和选项

    [root@mysql5_7 ~]# setfacl --help
    setfacl 2.2.51 -- set file access control lists
    Usage: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
      -m, --modify=acl        modify the current ACL(s) of file(s)
      -M, --modify-file=file  read ACL entries to modify from file
      -x, --remove=acl        remove entries from the ACL(s) of file(s)
      -X, --remove-file=file  read ACL entries to remove from file
      -b, --remove-all        remove all extended ACL entries
      -k, --remove-default    remove the default ACL
          --set=acl           set the ACL of file(s), replacing the current ACL
          --set-file=file     read ACL entries to set from file
          --mask              do recalculate the effective rights mask
      -n, --no-mask           don't recalculate the effective rights mask
      -d, --default           operations apply to the default ACL
      -R, --recursive         recurse into subdirectories
      -L, --logical           logical walk, follow symbolic links
      -P, --physical          physical walk, do not follow symbolic links
          --restore=file      restore ACLs (inverse of `getfacl -R')
          --test              test mode (ACLs are not modified)
      -v, --version           print version and exit
      -h, --help              this help text

总结

本文介绍了Linux中使用setfacl命令来管理文件和目录的权限策略。setfacl命令允许用户添加、删除和修改文件和目录的权限,并根据用户、组、用户组和其他条件来定义权限。文章给出了setfacl命令的语法和示例,以及如何使用getfacl命令列出当前文件和目录的所有权限,并使用setfacl -u username:username命令删除所有权限。此外,文章还提到了setfacl命令的其他选项和完整语法。要了解更多相关信息,请参阅Linux文档或相关文档。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
setfacl命令Linux系统中用于设置文件或目录ACL(Access Control List)的工具。ACL是一种可以在文件或目录上设置的权限控制方式,可以更加精细地控制文件或目录的权限setfacl命令的语法如下: ``` setfacl [-bkndRLP] [-m|-M] [user[:group]]:perms file/dir ``` 其中,常用的选项和参数说明如下: - -m:添加ACL。 - -M:替换文件或目录的ACL。 - -b:删除文件或目录的ACL。 - -k:设置默认ACL,该ACL将应用于新创建的文件或目录。 - -n:不解析用户名和组名。 - -d:设置默认ACL。 - -R:递归处理子目录和文件。 - -L:递归处理符号链接。 - -P:不递归处理符号链接。 - user:用户名。 - group:组名。 - perms:权限。 例如,要为文件test.txt设置一个ACL,允许用户tom读取、写入和执行该文件,可以使用以下命令: ``` setfacl -m u:tom:rwx test.txt ``` 如果要删除该ACL,可以使用以下命令: ``` setfacl -b test.txt ``` 如果要为目录/var/www/html设置一个ACL,允许用户tom对该目录及其子目录和文件有读取、写入和执行权限,并且设置默认ACL,可以使用以下命令: ``` setfacl -R -m d:u:tom:rwx,u:tom:rwx /var/www/html ``` 需要注意的是,使用ACL设置文件或目录的权限时,ACL权限会与文件或目录的基本权限进行合并,较高的权限将覆盖较低的权限。因此,在使用setfacl命令时,需要谨慎设置ACL权限,以确保文件或目录的安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清醒云思

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值