Linux:Linu文件权限管理、文件权限修改chmod、修改属主属组chown、特殊权限SUID、SGID、Sticky、umask



文件权限


1、权限修改 chmod

chmod命令(change modify)

使用该命令:所有用户者

语法:

chmod [ugoa...] [[+-=][rwx]...] [,...]

  • u (user)表示该文件的拥有者,g (group)表示与该文件的拥有者属于同一个群体者,o (other)表示其他以外的人,a (all)表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
  • 最后参数为需要修改权限的对象

其他参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
  • –help : 显示辅助说明
  • –version : 显示版本

示例:

-r–r--r-- file.txt

chmod u+w file.txt
// 给file1.txt的属主添加w写权限   -rw-r--r-- file.txt

chmod go+w,u-w file.txt 
// 给file.txt的属主删除w写权限,属组和其他用户添加w写权限 -r--rw-rw- file.txt

-r–r--rw- file1.txt

-r–r--rw- file2.txt

chmod ug+w,o-w file1.txt file2.txt
// 给file1.txt和file2.txt的属主和属组添加w写权限,给其他用户删除w写权限
// -rw-rw-r-- file1.txt
// -rw-rw-r-- file2.txt

-rw-rw-rw- file.txt

chmod a+x,a-w file.txt
// 给file.txt的属主,属组,其他用户都增加执行权限,删除写权限 -r-xr-xr-x file.txt

chmod 777
# 将文件的属主,属组,陌生的权限全部改成可读可写可执行

2、修改属主属组 chown

chown命令(change own)

使用该命令:root

语法:

chown [-cfhvR] [--help] [--version] user[:group] file...

参数:

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • –help : 显示辅助说明
  • –version : 显示版本

示例:

将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :

chown runoob:runoobgroup file1.txt

将目前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:

chown -R runoob:runoobgroup *

将文件 file1.txt 的拥有者设为 runoob:

chown runoob file1.txt

3、修改属组 chgrp

chmod 命令可修改属主和属组,chgrp 命令只能修改属组

[root@localhost test]# ll
---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chgrp -v bin log2012.log

“log2012.log” 的所属组已更改为 bin

[root@localhost test]# ll
---xrw-r-- 1 root bin  302108 11-13 06:03 log2012.log

4、特殊权限SUID、SGID、Sticky

SUID(set user ID):如果设置了suid,那么其他用户执行该文件时,会以属主的身份执行

SGID(set group ID):如果设置了sgid,那么其他用户执行该文件时,会以属组的身份执行

Sticky:如果设置了sticky,那么其他用户执行该文件时,会议陌生用户身份执行


设置特殊权限

设置SUID:执行权限以s表示

chmod u+s file.txt
// 此时file.txt就设置了SUID权限  -rwsrwxrwx file.txt

设置SGID:执行权限以s表示

chmod g+s file.txt
// 此时file.txt就设置了SUID权限  -rwxrwsrwx file.txt

设置Sticky:执行权限以t表示

chmod o+s file.txt
// 此时file.txt就设置了SUID权限  -rwxrwxrwt file.txt

特殊权限数字表示

在这里插入图片描述


5、umask

umask命令指定在建立文件时预设的权限掩码。将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。

通俗的讲,就是创建新文件时,生成的默认权限。特权位不参与减法运算,特权位设置什么特权就是什么。后3位由最高权限减去权限掩码得到默认权限。

最高权限为7777

第一个7:特权位,有SUID、SGID、Sticky

第二个7:拥有者权限,rwx

第三个7:所在群组权限,rwx

第四个7:默认用户权限,rwx

示例1:

设置权限掩码

umask 0002

创建一个目录

mkdir test

查询权限

ls -l
drwxrwxr-x ... test/

示例2:

设置权限掩码

umask 5002

创建一个目录

mkdir test

查询权限

ls -l
drwsrwxr-t ... test/

案例:用户创建 分组 设置权限

管理用户和用户组相关命令

情景模拟:

假设某一个开发团队,有user和admin这两个用户,这两个用户创建的文件全部存放在/var/data目录下。设这个目录的属组为public。如果设置这个目录,使得user和admin创建的文件可以相互访问和修改,并且不允许其他用户的访问,且user不能删除admin用户创建的文件,admin不能删除user用户创建的文件?写出详细的步骤和并操作验证截图。

  1. root用户下,创建两个用户 user 和 admin

    useradd user
    useradd admin
    // 查看用户是否查看成功
    cat /etc/passwd
    
    // 补充:删除用户
    userdel user
    userdel admin
    // 补充:添加用户
    useradd -g public admin // 在有public组的情况下,可以在创建用户时指定所属组
    
  2. root用户下,创建 public 组群

    groupadd public
    
    // 补充:删除组
    groupdel public
    
  3. root用户下,将两个用户归到public组中

    usermod -g public user
    usermod -g public admin
    
  4. root用户下,查看用户与用户组的情况

    groups user admin
    // 展示结果
    user : public
    admin : public
    

    此时,已成功将两个用户归为一组

  5. root用户下,创建 / data目录

    mkdir /data
    
  6. root用户下,查看data目录的权限情况

    cd /
    ls -l
    

    在这里插入图片描述

  7. root用户下,将该目录的属组改为public

    chgrp public data
    
  8. root用户下,如果设置这个目录,使得user和admin创建的文件可以相互访问和修改,并且不允许其他用户的访问

    chmod g+w,o-rx data
    

    在这里插入图片描述

  9. user不能删除admin用户创建的文件,admin不能删除user用户创建的文件

    user用户创建一个user目录,设置权限;admin用户创建admin目录,设置权限

    // user 用户下
    mkdir user
    chmod o-rx user
    
    // admin 用户下
    mkdir admin
    chmod o-rx admin
    

    在这里插入图片描述

  10. 在user目录下创建了a.txt,在admin目录下创建了b.txt。验证,user用户不能删除admin用户的文件,admin用户不能删除user用户的文件

    在这里插入图片描述

原文地址:https://www.cnblogs.com/turbo30/p/13688191.html