首页 > 代码库 > linux学习之路之ACL的使用和查看系统上登录的用户的命令使用

linux学习之路之ACL的使用和查看系统上登录的用户的命令使用

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


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

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

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

Owner-->Group-->Other


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

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

访问流程为:

Owner-->FACL,user-->Group-->FACL,group-->Other


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

setfacl [-m|-x] [ug]:[USERNAME|GROUPNAME]:PERM FILE    (PREM是八进制数

    -m:设定ACL

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

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

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

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

getfacl FILE

    


接下里介绍几种命令查看系统上有哪些用户登录进去了

whoami:查看当前系统上面登入的有效用户

who:查看有哪些用户登入到系统上面来了。

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

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

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

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

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

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

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

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

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


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

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

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



本文出自 “linux学习之路” 博客,谢绝转载!