ACL的使用

我们知道文件的访问权限的是根据文件的属主、属组和其他用户这三种来设置,而ACL是提供这三种之外的更加细部的权限设定。ACL可以对单一用户和目录及文件来设置权限,这对于需要特殊的权限来说很有帮助。在之前谈到的SUID和SGID这些特殊权限,不过这些特殊权限和ACL相比,ACL可以对特定的用户来设定更加细部的权限,而SUID和SGID则是对于多个用户或者一组用户来说比较合适。


在谈ACL的使用之前,我们先一起来谈谈用户访问文件时的顺序是如何进行的?
在这里暂时不讨论有关SElinux的使用。

在没有使用ACL的前提下,用户是这样来访问文件的:

    首先当某一个用户访问一个文件时,在用户访问这个文件的时候会产生一个相应的进程,例如,使用cat /etc/inittab命令查看文件时,系统会为cat命令产生一个进程。而这个进程的属主为启动这个文件的用户,进程的属组则是启动这个文件用户的基本组(默认和用户名相同)。当这个进程访问文件时,首先会查看进程的属主和文件的属主是否相同;如果不相同,则查看进程的属主是否是文件的属组中的成员(不是查看进程的属组是否和文件的属组是否一样);最后如果都不想相同,则是以其他用户的身份来访问的。在这种情况下,用户访问文件的顺序流程为:

Owner-->Group-->Other


如果文件使用了ACl,用户是这样来访问的:

    首先当某一个用户来访问一个文件时,会检查进程的属主是否和文件的属主的是否一致;如果不一致,在检查这个文件是否设置了ACL,不过此时检查的是哪些用户对文件有权限(基于用户来检查的);如果仍然不一致,在检查该进程的属主是否是文件的属组中的成员;如果也不是,在检查这个文件是否设置了基于用户组的ACL(原理同用户的访问方法);如果这些都不行,则以其他用户的身份来访问。

访问流程为:

Owner-->FileACL(user) -->Group-->FileACL(group)-->Other


使用ACL来为文件设定额外的权限

setfacl [-m|-x] [ug]:[USERNAME|GROUPNAME]:PERM FILE    (PREM是rwx形式的

    -m:设定ACL

    -x:取消ACL,注意取消ACL的是时候,不需要加权限。

    -b:删除该文件的所有acl参数

    u:指定用户对该文件所具有的的权限

    g:指定用户组对该文件所具有的权限

    m:PREM:设置mask的值(指定文件的有效权限,使用者和群组的权限必须在mask范围内才能生效,否则使用者和群组的真正的权限为mask权限

    如:# setfacl -m m:r  file1

那么如何获取已经设定好的ACL呢?

getfacl FILE

    wKioL1OuiCqDBy3oAADQuFr5lR8505.jpg


接下里介绍几种命令系统查看命令

whoami:查看当前系统上面登入的有效用户。(注意:使用su命令切换的用户不算是登陆进去的用户)

who:查看有哪些用户登入到系统上面来了。(注意:使用su命令切换的用户不算是登陆进去的用户)

    终端类型:
    console:控制台
    pty:物理终端(VGA)
    tty:虚拟终端(VGA)
    ttys:串行终端
    pts/#:伪终端

who -r:显示当前系统运行的级别(注意:使用su命令切换的用户不算是登陆进去的用户

w:查看已经登入进去的用户以及他们正在做些什么


last:显示/var/log/wtmp文件的内容,显示的是用户登入历史及用户重启历史

    -n #:显示最近几次的历史信息

lastb:显示/var/log/btmp文件的内容,显示的是用户错误的登入尝试

    -n #:显示最近几次的错误登入尝试

lastlog:显示系统上面每一个用户最近一次登入的时间

    -u USERNAME:显示特定用户的最近一次的登入时间信息


basename /PATH/TO/SOMEFILE :显示路径的基名

所谓基名就是指定路径的最后一个名称。

例如/etc/passwd的基名就是passwd


关于mail的使用在此简略介绍

mail:不加任何选项表示查看邮件,看完的邮件存放在~/mbox下

#(序号):表示查看第几个邮件的内容

mail -s '主题' USERNAME 内容  表示给某个用户发送邮件

使用.结束邮件内容


关于hostname的语法

hostname:不加选项时显示当前的主机名

hostname NAME:修改当前的主机名

HOSTNAME:用来保存主机名

使用 echo $HOSTNAME 来显示保存的主机名


关于随机生成数的产生RANDOM

RANDOM变量产生的随机数的范围为0-32768

使用echo $RANDOM可以显示产生的随机数

产生随机数的随机生成器有两个:

/dev/random

/dev/urandom

wKiom1Oup-fTMFzrAAH8zev_4d4560.jpg