Linux文件权限、用户及组权限

前言

这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题

权限

设置好了用户和组,那么接下来就可以对其进行权限控制

由于linux下处处皆文件,所谓权限也就是对文件的读、写、执行,至少这三种

当操作系统下某个进程在运行时,进程的权限,也相当于这个进程的运行用户身份权限

权限 文件 目录 r 读取文件 列出目录 w 修改文件 修改目录内文件 x 执行文件 进入目录
    权限分组

默认的linux的权限分为三种角色

user、group、other

每个文件将基于UGO三种权限进行设置,一般一个文件创建之后,谁创建该文件,默认成为该文件的所有者

用户及组权限

ls -ahl
# 查看文件所有者
chmod g+rwx file
# 给file文件增加rwx权限
chmod g-x file
# 给file文件减少x权限

用户及组修改

修改某个文件或目录所属用户或组
chown -R root file
# 修改file文件所属用户为root
chown -R :root file
# 修改file文件所属用户为root
chgrp -R root file
# 修改file文件所属组为root

二进制权限

linux下具备权限设置为1,反之为0,那么一个权限按照二进制位数来计算,如下所示
--x: 001 1
-wx: 011 3
rwx: 111 7
很清晰,对应的权限位置所代表的数字分别是:r=4,w=2,x=1
chmod 775 file
# 修改file文件权限为 rwxrwxr-x

权限掩码

神奇的事情需要我们考虑,每次创建文件,默认都会具备一定的权限,而这个权限是如何分配而来的呢?

是通过一个叫做权限掩码的东西来维护的,这个码可以通过umask命令看到

默认系统的掩码是022**

    文件权限由默认权限减去掩码

文件默认权限:666 那么创建一个文件真实的权限是:666-022=644

目录的默认权限:777

一个目录的真实权限是:777-022=755

    设置默认掩码
umask -S 011

特殊权限

权限 对文件的影响 对目录的影响 suid 以文件的所属用户身份执行,而非执行文件的用户 无 sgid 以文件所属组身份去执行 在该目录中创建任意新文件的所属组与该目录的所属组相同 sticky 无 对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件
经验分享 程序员 微信小程序 职场和发展