公司动态
Linux操作系统-权限管理
一、Linux权限管理Linux权限是操作系统用来限制对资源访问的机制权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作。Linux每个进程都是以某个用户身份运行进程的权限与该用户的权限一样用户的权限越大则进程拥有的权限就越大。Lnux中有的文件及文件夹都有至少权限三种权限常见的权限如表所示:权限对文件的影响对目录的影响r读取可读取文件内容可列出目录内容w写入可修改文件内容可在目录中创建删除内容x执行可作为命令执行可访问目录内容目录必须拥有x权限否则无法查看其内容Linux 文件及文件及权限Linux权限授权默认是授权给三种角色分别是user、group、otherLinux权限与用户之间的关联如下U代表UserG代表GroupO代表Other每个文件的权限基于UGO进行设置权限三位一组rwx同时需授权给三种角色UGO每个文件拥有一个所属用户和所属组对应UGO不属于该文件所属用户或所属组使用O来表示在Linux系统中可以通过ls –l查看/data/test2目录的详细属性如图所示drwxr-xr-x. 2 root root 22 Apr 10 11:00 test2/data/test2目录属性参数详解如下d 表示目录同一位置如果为-则表示普通文件l表示链接文件b表示块设备文件c表示字符设备文件rwxr-xr-x 表示三种角色的权限每三位为一种角色依次为ugo权限如上则表示user的权限为rwxgroup的权限为r-xother的权限为r-x2表示文件夹的链接数量可理解为该目录下子目录的数量从左到右第一个root表示该目录的属主第二个root则为属组其他人角色默认不显示22表示该文件夹占据的字节数Apr 10 11:00表示文件创建或者修改的时间test2为目录的名或者文件名。二、更改属主及属组chown命令用于修改某个用户、组对文件夹的属主及属组。1、修改/data/test2文件夹所属的用户为zhang其中-R参数表示递归处理所有的文件及子目录。chown -R zhang /data/test22、修改/data/test2/文件夹所属的组为zhang。chown -R :zhang /data/test23、同时修改/data/test2文件夹的属主和属组都为root。三、修改用户权限chmod可以用于修改某个用户、组对文件夹的权限其中以代指ugoa,、、-、代表加入、删除和等于对应权限.1、授予用户对/data/test2目录拥有rwx权限2、授予组对/data/test2目录拥有rwx权限3、授予用户、组、其他人对/data/test2目录拥有rwx权限4、撤销用户对/data/test2目录拥有w权限5、撤销用户、组、其他人对/data/test2目录拥有x权限6、授予用户、组、其他人对/data/test2目录只有rx权限四、修改用户权限二进制方式Linux权限默认使用rwx来表示为了更简化在系统中对权限进行配置和修改Linux权限引入二进制表示方法如下代码Linux权限可以将rwx用二进制来表示其中有权限用1表示没有权限用0表示Linux权限用二进制显示如下rwx111r-x101rw-110r--100依次类推转化为十进制对应十进制结果显示如下rwx1114217r-x1014015rw-1104406r--1004004得出结论用r4,w2,x1来表示权限。如下使用二进制方式来修改权限因为umask默认为022故目录的默认权限是755文件的默认权限是6441、授予用户对test2目录拥有rwx权限chmod –R 755 test22、授予组对test2目录拥有rwx权限chmod –R 775 test23、授予用户、组、其他人对test2目录拥有rwx权限chmod –R 777 test24、撤销用户对test2目录拥有w权限chmod –R 555 test25、撤销用户、组、其他人对test2目录拥有x权限chmod –R 644 test26、授予用户、组、其他人对test2目录只有rx权限chmod –R 555 test2五、Linux特殊权限及掩码Linux权限除了常见的rwx权限之外还有一些特殊的权限。每个Linux终端都拥有一个umask属性umask熟悉可以用来确定新建文件、目录的默认权限默认系统权限掩码为022。在系统中每创建一个文件或者目录文件默认权限是666而目录权限则为777权限对外开放比较大所以设置了权限掩码之后默认的文件和目录权限减去umask值才是真实的文件和目录的权限。对应目录权限为777-022755对应文件权限为666-022644执行umask命令可以查看当前默认的掩码umask -S 023可以设置默认的权限掩码。如果要修改umask只针对某个用户生效其他用户保持默认值可以进行如下修改su - testuser2cd /home/testuser2umask 023 .bash_profilesource .bash_profile在Linux权限中除了普通权限外还有如下表所示三个特殊权限权限对文件的影响对目录的影响Suid以文件的所属用户身份执行而非执行文件的用户无sgid以文件所属组身份去执行在该目录中创建任意新文件的所属组与该目录的所属组相同sticky无对目录拥有写入权限的用户仅可以删除其拥有的文件无法删除其他用户所拥有的文件Linux中设置特殊权限方法如下设置suidchmod us test2设置sgidchmod gs test2设置stickychmod ot test2特殊权限与设置普通权限一样可以使用数字方式表示SUID4SGID2Sticky1可以通过chmod 4755 test2对该目录授予特殊权限为s的权限Linux系统中s权限的应用常见包括su、passwd、sudo如图所示当文件/目录有x权限且拥有特殊权限时显示为__s__s__t如果没有x权限但有特殊权限显示为__S__S__T。六、访问控制列表ACLACL允许我们为单个用户或用户组设置特定权限突破了传统权限模型的限制。比如:允许测试用户Alice只读访问日志文件赋予开发用户Bob对配置文件的读写权限给项目经理Carol完全控制项目目录的权限所有这些都可以在不改变文件所有者或主要用户组的情况下实现通过ACL简化权限管理工作.setfacl:用于设定文件访问控制列表。用法setfacl -m u:testuser2:rx file/directory #-m更改文件的访问控制列表。u:表示用户也可为g:表示用户组getfacl:获取文件访问控制列表用法getfacl file/directory七、LINUX文件特殊属性传统的 chmod 权限模型控制的是用户对文件的访问能力读、写、执行。但在某些场景下我们需要更底层的控制——不是“谁能写”而是“能否被修改、删除、重命名甚至是能否被追加数据”。chattr a file #只能追加不能覆盖chattr i file #防止重要文件被误删lsattr file #列出文件属性如果需要移除属性执行chattr -i/a file即可。