zoukankan      html  css  js  c++  java
  • 文件及目录权限

    当我们使用 ls -l 命令查看详细文件内容时,可以看到查询出的内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    root@CHJ-20190520VPS:/usr/lib# ls -l
    total 920
    drwxr-xr-x 1 root root 4096 May 21 22:39 kernel
    drwxr-xr-x 1 root root 4096 May 21 22:39 klibc
    drwxr-xr-x 1 root root 4096 May 21 22:40 language-selector
    lrwxrwxrwx 1 root root 21 Feb 12 16:55 libDeployPkg.so.0 -> libDeployPkg.so.0.0.0
    -rw-r--r-- 1 root root 31280 Feb 12 16:55 libDeployPkg.so.0.0.0
    lrwxrwxrwx 1 root root 20 Feb 12 16:55 libguestlib.so.0 -> libguestlib.so.0.0.0
    -rw-r--r-- 1 root root 22656 Feb 12 16:55 libguestlib.so.0.0.0

    一共查询出七列内容,分别表示:

    文件属性(占10个字符空间)、拥有的文件数量、文件的创建者、所属的group、文件大小、建档日期、文件名

    文件属性

    Linux的文件基本上分为三个属性:可读(r),可写(w),可执行(x)

    但是这里有十个格子可以填(具体程序实现时,实际上是十个bit位)

    文件类型

    第一个小格是特殊表示格,表示目录或连结文件等等

    1. d 表示目录,这个是在创建下来文件的类型就固定了下来,不可以人为进行更改

    2. l 表示链接文件,类似于快捷方式

    3. - 表示这是普通文件

    4. b 块特殊文件,其实是指的是设备,比如我们插入一个移动硬盘,插入一个硬盘之后,Linux系统就会把他当成一个特出文件块文件来表示

    5. c 字符特殊文件,就是终端

    6. f 命名管道

    7. s 套接字文件

    文件权限表示方法

    字符权限表示方法:

    1. r

    2. w

    3. x 执行

    数字权限的表示方法(8进制数字表示):

    1. r=4

    2. w=2

    3. x=1

    其余剩下的格子就以每3格为一个单位,因为Linux是多用户多任务系统,所以一个文件可能同时被许多人使用,所以我们一定要设好每个文件的权限,其文件的权限位置排列顺序是(以-rwxr-xr-x为例):

      rwx(Owner)r-x(Group)r-x(Other)

    这个例子表示的权限是:使用者自己可读,可写,可执行;同一组的用户可读,不可写,可执行;其它用户可读,不可写,可执行。

    另外,有一些程序属性的执行部分不是X,而是S,这表示执行这个程序的使用者,临时可以有和拥有者一样权力的身份来执行该程序。一般出现在系统管理之类的指令或程序,让使用者执行时,拥有root身份。

    文件权限的修改

    修改权限命令

    chown命令

    修改属主或数组命令,使用方法:

    1. 修改属主:chown 用户名称 文件名称

    2. 修改属组:chown :用户组名称 文件名称

    修改文件、目录权限。Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用

    首先我们新创建一个目录,查看root用户新创建目录的默认权限,如下:

    1
    2
    root@CHJ-20190520VPS:/tmp# ls -ld testdir/
    drwxr-xr-x 1 root root 4096 Jul 27 15:05 testdir/

    表示文件的属主是root用户,root用户可以读写删除等,所属用户组不能删除,其他其他用户不能删除

    这里我们需要了解,Linux权限限制是非root用户的,这里既是我们将文件或目录的权限给root修改了,但是root用户还是不受限制的

    所以为了方便测试我们不要用root用户来操作,命令使用示例如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 修改属主
    root@CHJ-20190520VPS:/tmp# chown wangjia3 testdir
    root@CHJ-20190520VPS:/tmp# ls -ld testdir
    drwxr-xr-x 1 wangjia3 root 4096 Jul 27 15:05 testdir

    # 修改属组
    root@CHJ-20190520VPS:/tmp# groupadd group01
    root@CHJ-20190520VPS:/tmp# chown :group01 testdir
    root@CHJ-20190520VPS:/tmp# ls -ld testdir
    drwxr-xr-x 1 wangjia3 group01 4096 Jul 27 15:05 testdir

    # 属主属组一起修改
    root@CHJ-20190520VPS:/tmp# chown wangjia3:group01 testdir/
    root@CHJ-20190520VPS:/tmp# ls -ld testdir/
    drwxr-xr-x 1 wangjia3 group01 4096 Aug 3 12:35 testdir/

    可以看到文件的属主和属组已经改变

    chgrp命令

    修改属组命令,使用方法:chgrp 用户组名称 文件名称

    使用示例:

    1
    2
    3
    root@CHJ-20190520VPS:/tmp# chgrp root testdir
    root@CHJ-20190520VPS:/tmp# ls -ld testdir
    drwxr-xr-x 1 wangjia3 root 4096 Jul 27 15:05 testdir

    可以看到文件的属组已经被修改回为root分组

    创建文件的默认权限

    我们创建一个新的文件,默认的权限如下所示:

    1
    2
    3
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    -rw-r--r-- 1 root root 0 Aug 3 12:35 demoFile

    那它是怎么来的呢?其实创建新的文件默认的权限是数字表示法:666,表示属主属组其他都是拥有读写权限,但它会根据数字权限表示减去一个uumask,umask表示如下:

    1
    2
    root@CHJ-20190520VPS:/tmp/testdir# umask
    0022

    所以这就是我们创建文件的默认权限的由来,是使用 666 减去 umask 得到的默认权限

    chmod命令

    chmod是Linux/Unix中修改文件或者目录权限的命令,通过修改权限可以让指定的人对文件可读、可写、可运行,极大地保证了数据的安全性

    使用方法:chmod [修改内容 修改符号 权限] 文件

    修改字符权限

    参数详解

    修改内容
    1. u 修改文件属主的权限

    2. g 修改文件属组的权限

    3. r 修改其他以外的权限

    4. a 以上三者都修改

    具体权限修改
    1. + 增加权限

    2. - 取消权限

    3. = 直接设定权限

    此三条具体设置的权限就是我们之前了解的:r、w、x

    使用示例:

    1
    2
    3
    4
    大专栏  文件及目录权限e">5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    -rw-r--r-- 1 root root 0 Aug 3 12:35 demoFile

    # 属主增加执行权限
    root@CHJ-20190520VPS:/tmp/testdir# chmod u+x demoFile
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    -rwxr--r-- 1 root root 0 Aug 3 12:35 demoFile

    # 属组取消读权限
    root@CHJ-20190520VPS:/tmp/testdir# chmod o-r demoFile
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    -rwxr----- 1 root root 0 Aug 3 12:35 demoFile

    # 其他设置执行和读权限
    root@CHJ-20190520VPS:/tmp/testdir# chmod o=xr demoFile
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    -rwxr--r-x 1 root root 0 Aug 3 12:35 demoFile

    # 所有设置读写执行权限
    root@CHJ-20190520VPS:/tmp/testdir# chmod a=xwr demoFile
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    -rwxrwxrwx 1 root root 0 Aug 3 12:35 demoFile

    修改数字权限

    修改方法:chmod [数字] 文件

    注意:以上参数中数字为3位数

    参数详解

    三位数字第一位代表属主权限,第二位代表属组权限,第三位代表其他权限

    数字则分别用 1、2、4 来分别表示 执行、写、读

    使用示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    -rwxrwxrwx 1 root root 0 Aug 3 12:35 demoFile

    # 设置取消所有权限
    root@CHJ-20190520VPS:/tmp/testdir# chmod 000 demoFile
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    ---------- 1 root root 0 Aug 3 12:35 demoFile

    # 设置属主读写权限,属组和其他读权限
    root@CHJ-20190520VPS:/tmp/testdir# chmod 644 demoFile
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    -rw-r--r-- 1 root root 0 Aug 3 12:35 demoFile

    特殊权限

    SUID

    用于二进制可执行文件,执行命令时取得文件的属主权限,例如 /usr/bin/password

    1
    2
    wangjia3@CHJ-20190520VPS:/tmp/testdir$ ls -l /usr/bin/passwd
    -rwsr-xr-x 1 root root 59640 Mar 23 03:05 /usr/bin/passwd

    如上示例中:属主权限是 wss 之前是我们没有解释过的,它表示的是不管是root用户还是普通用户,它在执行这条命令时,它都会以文件的属主的这种身份来进行操作

    它的作用就是,我们有些文件用户是没有任何权限的,例如保存用户账户密码的文件,/etc/shadow:

    1
    2
    wangjia3@CHJ-20190520VPS:/tmp/testdir$ ls -l /etc/shadow
    -rw-r----- 1 root shadow 1153 Jul 27 13:38 /etc/shadow

    我们当前登录的用户是没有此文件的任何权限的,而root用户有此文件的权限,那我们普通用户为什么能修改密码呢,就是我们在修改密码例如passwd文件的时候,它能以root用户的身份来执行,这样就避免了我们需要主动去切换用户的修改密码的问题。

    SGID

    用于目录,在该目录下创建新的文件和目录,权限自动更改为该目录的数组,一般是我们在文件共享的时候,一般会用到SET GID

    SBIT

    用于目录,该目录下新建的文件和目录,仅root和自己可以删除,如/tmp

    1
    2
    wangjia3@CHJ-20190520VPS:/$ ls -ld /tmp
    drwxrwxrwt 1 root root 4096 Aug 3 13:50 /tmp

    注意在其他位有一个t,这样就可以防止自己创建的文件被其他的普通用户修改或删除

    设置特殊权限

    使用的也是 chmod命令,用法与上述修改权限用法一致,只不过多了由三位数变为了四位数,第一位为特殊权限的表示数字

    特殊权限数字表示:

    • 4 SET UID
    1
    2
    3
    4
    5
    6
    7
    8
    9
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    ----rw---- 1 wangjia3 wangjia3 0 Aug 3 12:35 demoFile

    root@CHJ-20190520VPS:/tmp/testdir# chmod 4644 demoFile

    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    -rwSr--r-- 1 wangjia3 wangjia3 0 Aug 3 12:35 demoFile
    • 1 SET BIT
    1
    2
    3
    4
    root@CHJ-20190520VPS:/tmp/testdir# chmod 1644 demoFile
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    -rw-r--r-T 1 wangjia3 wangjia3 0 Aug 3 12:35 demoFile
    • 2 SET GID
    1
    2
    3
    4
    root@CHJ-20190520VPS:/tmp/testdir# chmod 2644 demoFile
    root@CHJ-20190520VPS:/tmp/testdir# ls -l
    total 0
    -rw-r-Sr-- 1 wangjia3 wangjia3 0 Aug 3 12:35 demoFile

    注意特殊权限一般不要去自己随便指定,使用系统默认就行

    × 请我吃糖~
    打赏二维码
  • 相关阅读:
    Python学习系列之类与对象(二十三)
    面向过程和面向对象的异同点
    js 数值精确运算使用math.js
    js实现复制 、剪切功能-clipboard.min.js 示例
    css div嵌套层中button的margin-top不起作用解决方法
    IPhone中H5页面用on绑定click无效的解决方法
    This is a good start.
    element之input输入搜索联想框
    vue + element-ui 国际化实现
    async/await 处理多个网络请求同步问题
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12370613.html
Copyright © 2011-2022 走看看