美文网首页Linux学习之路Linux我用 Linux
文件或目录权限chmod、更改所有者和所属组chown、umas

文件或目录权限chmod、更改所有者和所属组chown、umas

作者: 强出头 | 来源:发表于2017-12-21 23:35 被阅读0次

    214 文件或目录权限chmod

    权限讲解

    [root@mylinux ~]# ls -l
    总用量 12
    -rw-r--r--. 1 root root    7 12月 20 21:29 1.txt (文件详情中rw-r--r--这九位表示权限)
    

    rw-r--r-- 这九位表示权限,分为三段
    rw- 前三个为第一段,表示所有者的权限,分别是可读r,可写w,可执行x,如果是不行就用-表示
    r-- 中间三个为第二段,表示所属组的权限。
    r-- 最后三个为第三段,表示剩余其它用户的权限。

    在上面这个文件中 所有者是root(为第一个root),所属组为root (第二个root)

    我们这里的读写权限不仅可以用rwx表示还可以用数字表示
    r = 4 w = 2 x = 1 rwx = 7 rw -= 6 r-- = 4 --x = 1
    rw-r--r-- 用数字表示就是 644

    chmod命令

    chmod == change mode

    更改一个文件的权限

    [root@mylinux ~]# ls -l 1.txt 
    -rw-r--r--. 1 root root 7 12月 20 21:29 1.txt
    [root@mylinux ~]# chmod 700 1.txt 
    [root@mylinux ~]# ls -l 1.txt 
    -rwx------. 1 root root 7 12月 20 21:29 1.txt
    

    在所有的ls -l里面的文件详情里面,-rw-r--r--.表示的是文件权限和文件类型,最后的那个.则表示受制于selinux(类似Windows防火墙),我们常常操作是关闭selinux。
    我们可以通过setenforce 0来更改SELinux的状态为Permissive,但是这仅仅是暂时的

    [root@mylinux ~]# setenforce 0
    [root@mylinux ~]# getenforce
    Permissive
    

    永久性的关闭SELinux需要更改配置文件

    vi /etc/selinux/config
    

    关闭后重启,那个.就没有了

    chmod只能更改单个文件或者目录的权限,如果想要更改目录权限的同时将子目录和目录下的文件

    chmod -R选项

    全部批量更改这时我们用到-R

    [root@mylinux ~]# ls -l 3  
    总用量 4
    -rw-r--r--. 1 root root 7 12月 20 21:29 1.txt
    [root@mylinux ~]# chmod -R 777 3/ (我们通过-R批量更改)
    [root@mylinux ~]# ls -l 3
    总用量 4
    -rwxrwxrwx. 1 root root 7 12月 20 21:29 1.txt (我们发现虽然我们改的是目录3的权限,但是这里
    1.txt也发生了改变)
    -rwxrwxrwx. 1 root root 7 12月 20 21:29 1.txt
    [root@mylinux ~]# ls -l
    总用量 8
    drwxrwxrwx. 2 root root   19 12月 20 23:50 3
    

    chmod 通过rwx的方式来表示并更改权限

    我们也可以通过rwx的方式来表示并更改权限

    [root@mylinux ~]# chmod u=rw,g=r,o=r ./3/
    [root@mylinux ~]# ls -l
    总用量 8
    drw-r--r--. 2 root root   19 12月 20 23:50 3
    

    也可以通过a来为所有用户增加或减少权限,同样也可以对单个u或者g或者o来进行操作

    [root@mylinux ~]# chmod a+w ./3/
    [root@mylinux ~]# ls -l
    总用量 8
    drw-rw-rw-. 2 root root   19 12月 20 23:50 3
    [root@mylinux ~]# chmod a-w ./3/
    [root@mylinux ~]# ls -l
    总用量 8
    dr--r--r--. 2 root root   19 12月 20 23:50 3
    

    215 更改所有者和所属组chown

    chgrp命令更改所属组

    chgrp == change group (更改所属组)

    [root@mylinux ~]# chgrp wsl 5.txt 
    [root@mylinux ~]# ls -l 5.txt 
    -rwxrwxrwx. 1 wsl wsl 16 12月 20 21:31 5.txt
    

    chown命令更改所有者和所属组

    chown == change owner (更改所有者和所属组)

    [root@mylinux ~]# cat /etc/passwd (查看用户,这里我们找到一个之前我们添加的wsl的用户)
    wsl:x:1000:1000::/home/wsl:/bin/bash
    
    
    [root@mylinux ~]# ls -l 5.txt 
    -rwxrwxrwx. 1 root root 16 12月 20 21:31 5.txt
    [root@mylinux ~]# chown wsl 5.txt 
    [root@mylinux ~]# ls -l 5.txt 
    -rwxrwxrwx. 1 wsl root 16 12月 20 21:31 5.txt
    

    chown一次性更改所有者和所属组

    [root@mylinux ~]# chown wsl:wsl 5.txt  (前面wsl是所有者,后面wsl是所属组)
    

    chown只更改所属组

    [root@mylinux ~]# chown :wsl 5.txt  (省略前面的wsl)
    

    chown -R 的更改也支持级联更改

    [root@mylinux ~]# chown -R wsl:wsl ./3/ (更改3目录及3目录下的所有文件及目录的所有者和所属组)
    

    216 umask

    umask初始权限详解

    目录要有x权限才能打开
    umask值是当前用户创建文件和目录时候控制权限的初始值
    这里我们查看当前用户的umask值

    [root@mylinux ~]# umask
    0022 (umask值为0022)
    

    当我们的用户umask值为0022的时候,我们来看创建目录和文件的权限值怎么计算
    目录:(rwxrwxrwx)-(----w--w-)=(rwxr-xr-x)(这里我们只取umask值的后三位)
    文件:(rw-rw-rw-)-(----w--w-)=(rw-r--r--)(我们的目录用(rwxrwxrwx)来减是因为目录打开需要x权限)
    如果是特殊的情况下,如
    目录:(rw-rw-rw-)-(-------wx)=(rw-rw-r--) (在最后一位 -减去x这里应该是-,本来就-就代表没有,减去x也还是没有)

    [root@mylinux ~]# ls -l
    总用量 4
    drwxr-xr-x. 2 root root    6 12月 21 17:08 1
    -rw-r--r--. 1 root root    0 12月 21 17:08 2.txt
    -rw-------. 1 root root 1418 12月 12 23:42 anaconda-ks.cfg
    drwxrwxr-x. 2 wsl  wsl   119 12月 17 22:02 frp_0.11.0_linux_amd64
    [root@mylinux ~]# umask
    0022
    

    umask权限更改

    我们来更改umask后再创建文件看看权限的变化

    [root@mylinux ~]# umask 002 (我们更改umask值只需要更改后三位)
    [root@mylinux ~]# mkdir 3
    [root@mylinux ~]# touch 4.txt
    [root@mylinux ~]# ls -l
    总用量 4
    drwxr-xr-x. 2 root root    6 12月 21 17:08 1
    -rw-r--r--. 1 root root    0 12月 21 17:08 2.txt
    drwxrwxr-x. 2 root root    6 12月 21 17:09 3
    -rw-rw-r--. 1 root root    0 12月 21 17:09 4.txt
    

    217 隐藏权限lsattr_chattr

    隐藏 i 只读权限

    增加特殊权限,只读权限

    [root@mylinux ~]# chattr +i 2.txt (为2.txt增加只读权限)
    

    我们在进入编辑模式后按i会得到提示这是一个只读文件,并且无论我们怎么写都不能保存

    提示不能写入内容

    查看特殊权限

    [root@mylinux ~]# lsattr 2.txt 
    ----i----------- 2.txt          (多了一个i)
    [root@mylinux ~]# lsattr 4.txt 
    ---------------- 4.txt          (正常应该是什么都没有)
    [root@mylinux ~]# ls -l
    总用量 4
    drwxr-xr-x. 2 root root    6 12月 21 17:08 1
    -rw-r--r--. 1 root root    0 12月 21 17:08 2.txt
    -rw-r--r--. 1 root root    0 12月 21 17:32 2.txt~ (我们写入失败后所产生的文件,系统用来保存我们写入的内容,写入成功该文件会覆盖源文件)
    
    

    i 权限不仅不能不能写入,还不能更改名字,连删除都只能强制删除

    删除 i 权限

    [root@mylinux ~]# chattr -i 2.txt (删除之后就恢复正常了)
    

    对于目录的操作是一样的,所有的权限也一样

    [root@mylinux ~]# lsattr -d 1/ (查看目录本身的特殊权限)
    ---------------- 1/
    [root@mylinux ~]# chattr +i 1/ (加上i权限)
    [root@mylinux ~]# lsattr -d 1/
    ----i----------- 1/
    [root@mylinux ~]# lsattr 1/  (发现其下面的子目录并没有加上)
    ---------------- 1/2
    

    特殊权限a只能追加权限

    a权限表示只能在文件的末尾进行追加,不能对文件进行改名删除或者更改原有文件内容等等,常用于日志类文件,用法和上一样。
    可以touch更改时间信息。

    [root@mylinux ~]# chattr +a 2.txt
    [root@mylinux ~]# lsattr 2.txt
    -----a---------- 2.txt
    [root@mylinux ~]# head -n2 /etc/passwd > 2.txt (覆盖就不行)
    -bash: 2.txt: 不允许的操作
    [root@mylinux ~]# head -n2 /etc/passwd >> 2.txt (追加就可以)
    [root@mylinux ~]# chattr -a 2.txt
    

    对于目录的操作,a 权限也是可以的touch 操作的

    [root@mylinux ~]# lsattr -R 1/  (-R 可以查看文件下的子文件和子目录)
    ---------------- 1/2
    
    1/2:
    

    相关文章

      网友评论

        本文标题:文件或目录权限chmod、更改所有者和所属组chown、umas

        本文链接:https://www.haomeiwen.com/subject/cannwxtx.html