文件权限管理

文件权限管理之基本权限

一、基本权限介绍

1603960956(1)

  1. 基本权限类型

    • r:可读=》4

    • w:可写=》2

    • x:可执行=》1

    • -:没有权限=》0

  2. 权限的归属

    • User(u):属主用户(文件所有者)

    • Group(g):属组用户(包含组成员)

    • 其他人:o 其他用户

  3. 一个用户访问文件流程如下:

    • 判断用户是否为文件的所有者,如果是,按所有者的权限进行访问

    • 判断是否为文件的所有组成员,如果是,就按组的权限去访问

    • 最终用户就是文件的其他的人,按其他人的权限去访问

二、修改权限

  1. 修改属主、属组

    • chown(设置用户和组)


    mkdir dir               //创建目录
    touch dir/file_test     //创建文件
    mkdir dir/dir_test      //创建目录

    示例1:
    chown bin dir/  //修改所属主为bin
    ll -d dir/      //检查属主
    drwxr-xr-x 2 bin root 4096 7月  22 00:50 dir/


    示例2:
    chown .adm dir/     //修改所属组为adm
    ll -d dir/          //检查属组
    drwxr-xr-x 2 bin adm 4096 7月  22 00:50 dir/


    示例3:
    chown -R root.root dir/ //递归修改目录及目录下的所有文件属主和属组
  2. 修改u、g、o对应的权限

    • chmod(设置权限)

      • +:增加权限

      • -:删除权限

      • =:设置权限

    #u、g、o方式
    chmod   //修改文件目录权限rwx  -R递归修改

    [root@db04 ~]# touch file
    [root@db04 ~]# chmod a=rwx file
    [root@db04 ~]# chmod a+rwx file
    [root@db04 ~]# ll file
    -rwxrwxrwx 1 root root 0 6月  20 23:23 file

    [root@db04 ~]# chmod a-rwx file
    [root@db04 ~]# chmod a=-rwx file
    [root@db04 ~]# ll
    总用量 0
    ---------- 1 root root 0 6月  20 23:23 file

    [root@db04 ~]# chmod u+rw,g+r,o+rx file
    [root@db04 ~]# ll
    总用量 0
    -rwxrwxrwx 1 root root 0 6月  20 23:23 file
    [root@db04 ~]# chmod u=rwx,g=rw,o=rx file
    [root@db04 ~]# ll
    总用量 0
    -rwxrw-r-x 1 root root 0 6月  20 23:23 file

     

  3. 1603966805(1)

    • chown: Linux中用来改变某个文件属主的命令, 如漫画中所示, 将某个"资源"(门)的访问权限给予别人。(卖房)

    • chmod: Linux中用来改变某个文件的访问模式的命令, 如漫画中所示, chmod 777会将大门敞开, 谁都可以进出。(租房)

三、权限对文件的or 目录的意义

  1. 基础权限设置案例

    权限对文件的影响对目录的影响
    读取权限(r) 具有读取\阅读文件内容权限 具有浏览目录及子目录
    写入权限(w) 具有新增、修改文件内容的权限 具有增加和删除目录内文件
    执行权限(x) 具有执行文件的权限 具有访问目录的内容(取决于目录中文件权
    • 文件权限实验案列

      //默认文件匿名用户仅有读权限
      [root@zls ~]# echo "date" >> filename
      [root@zls ~]# ll filename
      -rw-r--r-- 1 root root 5 Jan 24 08:24 filename

      //测试读权限(无法执行或删除)
      [root@zls ~]# su - zls
      [zls@zls ~]$ cat  /root/filename
      date

      //增加x执行权限
      [root@zls ~]# chmod o+x /root/filename
      [root@zls ~]# ll /root/filename
      -rw-r--r-x 1 root root 5 Jan 24 08:24 /root/filename
      //测试执行权限
      [zls@zls ~]$ /root/filename
      Wed Jan 24 08:28:34 EST 2018

      //增加w执行权限
      [root@zls ~]# chmod o+w /root/filename
      [root@zls ~]# ll /root/filename
      -rw-r--rwx 1 root root 5 Jan 24 08:24 /root/filename
      //测试执行权限
      [zls@zls ~]$ vim /root/filename

       

  2. rwx对文件的影响(只对文件内容有影响)

    • r:读取文件的内容

    • w:修改文件内容

    • x:可以把文件当成一个命令/程序运行

  3. 文件权限需要组合:

    • rw: 文件可读可写,不能执行

    • rx: 文件可读,不可写,可以执行

    • rwx:文件可读,可写,也可以执行

  4. 操作文件夹下的子文件与子文件夹(不是文件内容)

    例1:在目录下创建、删除、移动文件需要的权限=对所有文件夹的x权限+对目标文件夹有r权限

    /t1/t2/t3/

    例2:浏览一个目录下的子目录名与子文件名需要的权限=对所有文件夹的x权限+对目标文件夹有r权限

    总结例1与例2:
    只要涉及到操作文件夹下的东西,当前用户
    1、首选需要具备对沿途所有文件夹的x权限
    2、其他需要具备对目标文件夹的r或者w权限
    r代表可以浏览
    w代表可以创建、删除、移动

     

  5. rwx对目录的影响

    • 目录只有r权限: 可以浏览该目录下的子目录名和子文件名字,不能进入目录

      • 1.能使用ls命令浏览目录及子目录, 同时会提示权限拒绝

      • 2.能使用ls -l命令浏览目录及子目录, 会带问号,同时只能看到文件名

      • 总结: 目录只有r权限,仅仅只能浏览内的文件名,无其他操作权限

     

    • 写入权限(w)

      • 单纯的w权限没有任何意义。 如果目录只有w权限: 具有增加、删除或修改目录内文件名权限(需要x配合)

      • 注意: 如果目录有w权限, 可以在目录内创建文件, 删除文件(跟文件本身权限无关) 不能进入目录、不能复制目录、不能删除目录、不能移动目录

     

    • 执行权限(x)

      • 目录只有x权限

        • 1.只能进入目录

        • 2.其他什么都做不了

          # ps:只要我们要操作目录下的内容,一定要对该目录有x权限
    注意:权限必须组合使用

     

  6. 操作文件夹下的文件内容

    例1:查看某一个文件内容需要具备的权限=对沿途所有文件夹的x权限以及对目标件的r权限
    例2:改某一个文件内容需要具备的权限=对沿途所有文件夹的x权限以及对目标文件的w权限

    操作文件夹的文件内容,当前用户
    1、首选需要具备对沿途所有文件夹的x权限
    2、其他需要具备对目标文件的r或者w权限
    r代表可以读文件内容
    w代表可以改文件内容
  7. 目录权限实验案列:

    实战案例1: 对目录没有w,对文件有rwx 
    [root@zls ~]# mkdir /dirname
    [root@zls ~]# echo "test" >> /dirname/filename
    [root@zls ~]# chmod 777 /dirname/filename
    [root@zls ~]# ll -d /dirname/
    drwxr-xr-x 2 root root 22 Jan 24 08:40 /dirname/
    [root@zls ~]# ll -d /dirname/filename
    -rwxrwxrwx 1 root root 5 Jan 24 08:41 /dirname/filename

    //普通用户验证权限
    [zls@zls ~]$ cat /dirname/filename
    test
    [zls@zls ~]$ rm -f /dirname/filename
    rm: cannot remove /dirname/filename’: Permission denied


    实战案例2: 对目录有w,对文件没有任何权限
    [root@zls ~]# chmod 777 /dirname/
    [root@zls ~]# chmod 000 /dirname/filename
    [root@zls ~]# ll -d /dirname/
    drwxrwxrwx 2 root root 22 Jan 24 08:40 /dirname/
    [root@zls ~]# ll -d /dirname/filename
    ---------- 1 root root 5 Jan 24 08:41 /dirname/filename

    file_zls//普通用户验证权限
    [zls@zls ~]$ cat /dirname/filename
    cat: /dirname/filename: Permission denied
    [zls@zls ~]$ rm -f /dirname/filename
    [zls@zls ~]$ touch /dirname/filename_2
  8. 权限小结:

    • 文件rw权限, 可以查看和编辑文件内容

    • 文件rx权限, 只能查看和执行文件、不能编辑、复制、移动、删除

    • 目录rx权限, 允许浏览目录内文件以及子目录、并允许在目录内新建文件, 不允许创建、删除文件和目录

文件管理之特殊权限

SUID:

  • SUID权限仅对可执行文件有效

  • 如果执行者对该可执行文件具有x的权限,执行者将在该文件的执行过程中拥有该文件属主的权限。

    # 如果一个文件有SUID权限且属主对该文件有x权限,则会在属主对应的x权限显示为小写s。如果没有x权限,则会显示大写S。
    [chirou@duorou ~]$ ll /usr/bin/passwd
    -rwsr-xr-x. 1 root root 27856 4月   1 2020 /usr/bin/passwd

    # passwd命令本质是在修改/etc/shadow文件,但我们查看该文件权限发现是000,也就是说只有root用户能修改该文件内容。通过给passwd命令设置SUID权限能让普通用户执行该命令时拥有root权限,以此达到修改密码的目的。

SGID:

  • SGID作用于普通文件时:

    • 与SUID类似,在执行该文件时,用户将在文件执行过程中拥有该文件属组的权限。

  • SGID作用于目录时:

    • 当一个用户对目录有写和执行权限,该用户就可以在该目录下新建文件,文件的属组都是该目录的属组。如果创建的是目录,那么此目录也会继承SGID权限。

    [chirou@duorou /home/chirou]# mkdir t1  # 用chirou用户创建目录
    [root@duorou /home/chirou]# chown .panghu t1 # 改变属组方便辨别
    [root@duorou /home/chirou]# chmod g+s t1 # 添加SGID权限
    [root@duorou /home/chirou]# ll
    drwxrwsr-x. 2 chirou panghu 6 10月 29 19:23 t1 # 属组如果有x权限则显示小写s,如果没有x权限则显示大写S。
    [root@duorou /home/chirou]# mkdir t1/t2
    [root@duorou /home/chirou]# ll t1/
    drwxr-sr-x. 2 root panghu 6 10月 29 19:46 t2
    -rw-r--r--. 1 root panghu 0 10月 29 19:25 f1
    # 会发现即便是root在该目录下创建文件,文件的属组依然是该目录的属组,如果创建的是目录,那么此目录也会继承SGID权限。

SBIT:粘滞位

SBIT是the restricted deletion flflag or sticky bit的简称,有时也称为sticky。SBIT目前只对目录有效,用来阻止非文件的所有者删除文件。例如系统自带/tmp目录,SBIT会在其他人权限的x位显示t,如果其他人对该文件没有x权限,则会显示大写T。在设置SBIT目录内创建的文件,仅有用户自身和root才能退删除,主要用作共享目录。

# tmp目录所有用户拥有全部权限,如果没有SBIT那么会造成一个普通用户创建的文件,另一个普通用户也能删除。

[root@duorou /]# ll -d /tmp
drwxrwxrwt. 10 root root 4096 10月 29 20:46 /tmp

三种特殊权限用数字的表示方式为:

权限对应数字
SUID 4
SGID 2
SBIT 1

使用chmod命令设置特殊权限:

# 加减法
chmod u+s /PATH/File # 设置SUID

# 赋值法
chmod u=rwxs,g=xs /PATH/File # 设置SUID和SGID

# 数字法
chmod 4644 /PATH/File  # 相当于-rwSr--r--
chmod 7755 /PATH/File  # 相当于-rwsr-sr-x

权限管理之umask

umask是权限掩码的意思,新建文件或目录的默认权限是由umask决定的。

Linux中文件起始权限为0666、目录权限为0777,通过与umask运算得出最后的权限结果。

文件的权限计算方法:偶数位直接相减,奇数位相减后加1

文件起始权限umask值计算方法计算后的文件权限
0666 0022(每位都是偶数) 直接相减 0644
0666 0033(有奇数有偶数) 奇数位相减后在其原奇数位加1 0644
0666 0325(有奇数有偶数) 奇数位相减后在其原奇数位加1 0442

目录的计算方法:直接相减即可

目录的起始权限umask值计算方法计算后的文件权限
0777 0022 相减 0755
0777 0033 相减 0744
0777 0325 相减 0452

能看出umask设置的越小,创建新文件的权限越大,一般而言不要修改umask的值。

查看umask值:

# 直接执行umask命令即可查看,root和普通用户的umask值不同。
# 第一位是特殊权限,后三位对应u、g、o的权限。
[root@duorou /]# umask
0022
[chirou@duorou ~]$ umask
0002

临时设置umask:

# 第一位是特殊权限,后三位对应u、g、o的权限。
[chirou@duorou ~]$ umask 0000

永久修改umask:

修改/etc/profile文件或/etc/bashrc文件。

if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
  umask 002 # 表示UID大于199且属主与属组相同的用户umask值,指普通用户。
else
  umask 022 # 除上述条件以外的用户,指root。
fi

img

 

posted @ 2020-10-29 23:13  贾维斯Echo  阅读(332)  评论(0编辑  收藏  举报