• Linux学习-30-chgrp、chown等修改文件和目录的所有者和所属组命令


    9 Linux权限管理详解

    • 所谓权限管理,其实就是指对不同的用户和用户组,设置不同的文件访问权限,包括对文件的读、写、删除等,在 Linux 系统中,每个用户都具有不同的权限,拿非 root 用户来说,它们只能在自己的主目录下才具有写权限,而在主目录之外,只具有访问和读权限。
    9.1 Linux权限管理的重要性
    • Linux 系统中为什么需要设定不同的权限,为什么所有用户不可以直接使用管理员(root)身份。若是个人计算机,使用者一般都是被信任的人。在这种情况下,大家都可以使用管理员身份直接登录。但在服务器上就不是这种情况了,往往运行的数据越重要,价值越高,则服务器中对权限的设定就要越详细,用户的分级也要越明确。

    • Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux 系统对不同的
      用户访问同一文件(包括目录文件)的权限做了不同的规定。

    • 和 Windows 系统不同,Linux 系统为每个文件都添加了很多的属性,最大的作用就是维护数据的安全。举个简单的例子,在你的 Linux 系统中,和系统服务相关的文件通常只有 root 用户才能读或写,就拿 /etc/shadow 这个文件来说,此文件记录了系统中所有用户的密码数据,非常重要,因此绝不能让任何人读取(否则密码数据会被窃取),只有 root 才可以有读取权限。

    • 若一个软件开发团队,让团队中的每个人都可以使用某一些目录下的文件,而非团队的其他人则不予以开放。通过前面章节的学习我们知道,只需要将团队中的所有人加入新的群组,并赋予此群组读写目录的权限,即可实现要求。反之,如果你的目录权限没有做好,就很难防止其他人在你的系统中乱搞。

    • 比如说,本来 root 用户才能做的开关机、ADSL 拨接程序,新增或删除用户等命令,一旦允许任何人拥有这些权限,系统很可能会经常莫名其妙的挂掉。而且,万一 root 用户的密码被其他人获取,他们就可以登录你的系统,从事一些只有 root 用户才能执行的操作,这是绝对不允许发生的。因此,在服务器上,绝对不是所有的用户都使用 root 身份登录,而要根据不同的工作需要和职位需要,合理分配用户等级和权限等级。对于 root 用户来说,一般情况下,文件的权限对其不起作用。

    • Linux 系统中,文件或目录的权限信息,可以使用 ls 命令查看,

    [root@CncLucZK ~]# ll -al /home/u1-test
    total 36
    drwx------  5 u1-test group1-test 4096 Oct 15 13:50 .
    drwxr-xr-x. 7 root    root        4096 Oct 15 13:44 ..
    -rw-------  1 u1-test group1-test  495 Oct 15 13:58 .bash_history
    drwxr-xr-x  2 u1-test group1-test 4096 Oct 15 13:49 utxt1
    drwxr-xr-x  2 u1-test group2-test 4096 Oct 15 13:50 utxt2
    drwxr-xr-x  2 u1-test group3-test 4096 Oct 15 13:50 utxt3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    9.2 chgrp命令:修改文件和目录的所属组
    • 对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所属组的同组用户和其他用户。因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
    • chgrp(change group) 命令用于修改文件(或目录)的所属组。chgrp 命令其基本格式为:
    [root@CncLucZK ~]# chgrp [-R] 所属组 文件名(目录名)
    
    • 1

    -R(注意是大写)选项长作用于更改目录的所属组,表示更改连同子目录中所有文件的所属组信息。

    注意的一点是,要被改变的群组名必须是真实存在的,否则命令无法正确执行,会提示 “invaild group name”。

    #查看utxt2文件的所属组
    [root@CncLucZK u1-test]# ll -l
    total 12
    drwxr-xr-x 2 u1-test group1-test 4096 Oct 15 13:49 utxt1
    drwxr-xr-x 2 u1-test group2-test 4096 Oct 15 13:50 utxt2
    drwxr-xr-x 2 u1-test group3-test 4096 Oct 15 13:50 utxt3
    #修改utxt2文件的所属组为group1-test
    [root@CncLucZK u1-test]# chgrp group1-test utxt2
    #查看utxt2文件的所属组
    [root@CncLucZK u1-test]# ll -l
    total 12
    drwxr-xr-x 2 u1-test group1-test 4096 Oct 15 13:49 utxt1
    drwxr-xr-x 2 u1-test group1-test 4096 Oct 15 13:50 utxt2
    drwxr-xr-x 2 u1-test group3-test 4096 Oct 15 13:50 utxt3
    #修改生效
    [root@CncLucZK u1-test]# chgrp group4-test utxt2
    chgrp: invalid group: ‘group4-test’
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    可以看到,在具有 group1-test群组的前提下,我们成功修改了utxt2 文件的所属组,但我们再次试图将所属组修改为 group4-test时,命令执行失败,就是因为系统的 /etc/group 文件中,没有group4-test 群组。

    9.3 chown命令:修改文件和目录的所有者和所属组
    • chown (change owner)命令:用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件(或目录)的所属组。当只需要修改所有者时,可使用如下 chown 命令的基本格式:
    [root@CncLucZK ~]# chown [-R] 所有者 文件或目录
    
    • 1

    -R(注意大写)选项表示连同子目录中的所有文件,都更改所有者。

    • 如果需要同时更改所有者和所属组,chown 命令的基本格式为:
    [root@CncLucZK ~]# chown [-R] 所有者:所属组 文件或目录
    
    • 1

    注意,在 chown 命令中,所有者和所属组中间也可以使用点(.),但会产生一个问题,如果用户在设定账号时加入了小数点(例如 zk.u1),就会造成系统误判。因此,建议大家使用冒号连接所有者和所属组。

    注意:使用 chown 命令修改文件或目录的所有者(或所属者)时,要保证使用者用户(或用户组)存在,否则该命令无法正确执行,会提示 “invalid user” 或者 “invaild group”。

    • 当然,chown 命令也支持单纯的修改文件或目录的所属组,例如 chown :group demo.txt 就表示修改 demo.txt 文件的所属组,但修改所属组通常使用 chgrp 命令,因此并不推荐大家使用 chown 命令。

    • 修改文件的所有者,更多时候是为了得到更高的权限,举实例:

    #root用户查看demo.txt的信息
    [root@CncLucZK test]# ll -d demo.txt
    -rw-r--r-- 1 root root 2612 Oct 12 23:10 demo.txt
    #文件的所有者是root,普通用户zk对这个文件拥有只读权限
    [root@CncLucZK test]# chown zk demo.txt
    #修改文件的所有者
    [root@CncLucZK test]# ll -d demo.txt
    -rw-r--r-- 1 zk root 2612 Oct 12 23:10 demo.txt
    #所有者变成了zk用户,这时zk用户对这个文件就拥有了读、写权限
    
    #若是修改编辑一个对当前只读权限的文件则会提示这是只读文件
    -- INSERT -- W10: Warning: Changing a readonly file     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 可以看到,通过修改 demo.txt文件的所有者,zk用户从其他人身份(只对此文件有读取权限)转变成了所有者身份,对此文件拥有读和写权限。

    • Linux 系统中,用户等级权限的划分是非常清楚的,root 用户拥有最高权限,可以修改任何文件的权限,而普通用户只能修改自己文件的权限(所有者是自己的文件)

    #切换到普通用户
    [root@CncLucZK test]# su - zk
    #查看txt目录下的文件权限
    [zk@CncLucZK test]$ ll -d *.txt
    -rw-r--r-- 1 root root   90 Oct 13 18:56 demo2.txt
    -rw-r--r-- 1 root root   90 Oct 13 20:06 demonew.txt
    -rw-r--r-- 1 root root   90 Oct 14 00:53 demoold.txt
    -rw-r--r-- 1 root root 2612 Oct 12 23:10 demotmo.txt
    -rw-r--r-- 1 zk   root 2612 Oct 15 23:01 demo.txt
    -rw-r--r-- 1 root root    0 Oct 13 19:03 differ.txt
    -rw-r--r-- 3 root root   95 Oct 12 23:10 hardlink.txt
    -rw-r--r-- 1 root root   37 Oct 12 23:10 replace.txt
    lrwxrwxrwx 1 root root    7 Oct 12 23:10 tmp_s.txt -> tmp.txt
    -rw-r--r-- 1 root root    6 Oct 12 23:10 tmp.txt
    #修改所属用户是root的demo2.txt文件的所属组
    [zk@CncLucZK test]$ chown zk demo2.txt
    chown: changing ownership of 'demo2.txt': Operation not permitted
    [zk@CncLucZK test]$ chmod 755 demo2.txt
    chmod: changing permissions of 'demo2.txt': Operation not permitted
    chmod:更改"demo2.txt"的权限:不允许的操作 #zk用户不能修改demo2.txt文件的权限,且只能读取,不能编辑修改
    #退回到root身份
    [zk@CncLucZK test]$ exit
    logout
    #由root用户把demo2.txt文件的所有者改为zk用户
    [root@CncLucZK test]# chown zk demo2.txt
    [root@CncLucZK test]# ll -d *.txt
    -rw-r--r-- 1 zk   root   90 Oct 13 18:56 demo2.txt
    -rw-r--r-- 1 root root   90 Oct 13 20:06 demonew.txt
    -rw-r--r-- 1 root root   90 Oct 14 00:53 demoold.txt
    -rw-r--r-- 1 root root 2612 Oct 12 23:10 demotmo.txt
    -rw-r--r-- 1 zk   root 2612 Oct 15 23:01 demo.txt
    -rw-r--r-- 1 root root    0 Oct 13 19:03 differ.txt
    -rw-r--r-- 3 root root   95 Oct 12 23:10 hardlink.txt
    -rw-r--r-- 1 root root   37 Oct 12 23:10 replace.txt
    lrwxrwxrwx 1 root root    7 Oct 12 23:10 tmp_s.txt -> tmp.txt
    -rw-r--r-- 1 root root    6 Oct 12 23:10 tmp.txt
    #切换为user用户
    [root@CncLucZK test]# su - zk
    
    [zk@CncLucZK test]$ ll -d *.txt
    -rw-r--r-- 1 zk   root   90 Oct 13 18:56 demo2.txt
    #zk用户由于是demo2.txt文件的所有者,所以可以修改文件的权限
    [zk@CncLucZK test]$ chmod 755 demo2.txt
    #查看权限
    [zk@CncLucZK test]$ ll -d demo2.txt
    -rwxr-xr-x 1 zk root 90 Oct 13 18:56 demo2.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 可以看到,zk 用户无权更改所有者为 root 用户文件的权限,只有普通用户是这个文件的所有者,才可以修改文件的权限。
    [root@CncLucZK test]# ll -d demo2.txt
    -rwxr-xr-x 1 zk root 90 Oct 13 18:56 demo2.txt
    [root@CncLucZK test]# chown zk:zk demo2.txt
    [root@CncLucZK test]# ll -d demo2.txt
    -rwxr-xr-x 1 zk zk 90 Oct 13 18:56 demo2.txt
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参考文献:
    Linux 文件基本属性
    Linux chgrp命令:修改文件和目录的所属组

    下一篇:Linux学习-31-Linux权限位及修改文件和目录的权限命令
  • 相关阅读:
    《PyTorch深度学习实践》第十一课(卷积神经网络CNN高级版)
    【Call for papers】USENIX ATC-2023(CCF-A/计算机体系结构/2023年1月12日截稿)
    nginx的配置加载
    关于uniapp小程序的分包问题
    [附源码]java毕业设计乡村振兴惠农推介系统
    Cocos Creator3.8 实战问题(三)去除scrollview背景色和label 对齐方式设置无效问题
    echarts如何画地图
    shiro反序列化和log4j
    《精通特征工程》学习笔记(5):数据(特征)降维
    【C++初阶6-模版初阶】“多个愿望一次满足~”
  • 原文地址:https://blog.csdn.net/weixin_42045639/article/details/127786231