• 【Linux系统编程】第七弹---权限管理操作(上)


     ✨个人主页: 熬夜学编程的小林

    💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】【Linux系统编程】

    目录

    1、修改文件权限的做法(一)

    2、有无权限的表现

    总结


    上一弹我们讲解了Linux权限概念相关的知识,但是我们只知道有什么权限,如何查看权限,但是根据我们常识可以知道,限制是可以解除和添加的,因此权限也不例外,也可以进行修改操作,这一弹我们就详细讲解权限的管理的相关操作

    1、修改文件权限的做法(一)

    一个文件的权限,谁能够修改呢?

    在Linux中,只有文件的拥有者和root能够修改文件的权限。


    1.chmod 指令

    语法:

    chmod [选项] 权限 文件名

    
功能:

    改变文件或目录的访问权限,用它控制文件或目录的访问权限。


    常用选项:

    -R :递归处理,将指定目录下的所有文件及子目录一并处理


    用户表示符+/-=权限字符

    + : 向权限范围增加权限代号所表示的权限
    - :  向权限范围取消权限代号所表示的权限
    = : 向权限范围赋予权限代号所表示的权限
    用户符号:
    u:拥有者
    g:拥有者同组
    o:其它用户
    a:所有用户

    举例:

    1. [lin@VMCentos7 ~]$ touch 1.txt # 创建一个文件
    2. [lin@VMCentos7 ~]$ ll
    3. -rw-rw-r-- 1 lin lin 0 Mar 27 18:15 1.txt
    4. [lin@VMCentos7 ~]$ chmod u+x 1.txt # 给1.txt文件的拥有者增加x(执行)权限
    5. [lin@VMCentos7 ~]$ ll # 查看文件详细信息
    6. -rwxrw-r-- 1 lin lin 0 Mar 27 18:15 1.txt
    7. [lin@VMCentos7 ~]$ chmod u-rw 1.txt # 给1.txt文件的拥有者取消rw(读写)权限 可有对个顺序,且与顺序无关
    8. [lin@VMCentos7 ~]$ chmod g-r 1.txt # 给1.txt文件的所属组取消r(读)权限
    9. [lin@VMCentos7 ~]$ ll
    10. ---x-w-r-- 1 lin lin 0 Mar 27 18:15 1.txt
    11. [lin@VMCentos7 ~]$ chmod o+x 1.txt # 给1.txt文件的其他用户添加x(执行)权限
    12. [lin@VMCentos7 ~]$ ll
    13. ---x-w-r-x 1 lin lin 0 Mar 27 18:15 1.txt
    14. [lin@VMCentos7 ~]$ chmod a+r 1.txt # 给1.txt文件的所有用户添加r(读)权限
    15. [lin@VMCentos7 ~]$ ll
    16. -r-xrw-r-x 1 lin lin 0 Mar 27 18:15 1.txt

     注意:选项还可以用逗号隔开,分别增加/取消权限

    1. [lin@VMCentos7 ~]$ ll
    2. -r-xrw-r-x 1 lin lin 0 Mar 27 18:15 1.txt
    3. [lin@VMCentos7 ~]$ chmod u+w,g+x,o+w 1.txt # 给1.txt文件拥有者增加w权限,所属组增加x权限,其他用户添加w权限
    4. [lin@VMCentos7 ~]$ ll
    5. -rwxrwxrwx 1 lin lin 0 Mar 27 18:15 1.txt
    6. [lin@VMCentos7 ~]$ chmod u-rw,o-wx 1.txt
    7. [lin@VMCentos7 ~]$ ll
    8. ---xrwxr-- 1 lin lin 0 Mar 27 18:15 1.txt


     

    2.chown 指令

    语法:

    chown [选项] 用户名 文件名                  # 仅更改拥有者

    chown [选项] 拥有者:所属组 文件名      # 更改拥有者和所属组


    功能:

    更改文件或目录的拥有者和所属组。

    常见选项:

    -R:递归处理,将指定目录下的所有文件及子目录一并处理

    注意:普通用户不能强制修改拥有者,需使用root权限修改,即sudo。

    普通用户举例:

    1. [lin@VMCentos7 ~]$ ll
    2. -rwxrwxr-- 1 lin lin 0 Mar 27 18:15 1.txt
    3. [lin@VMCentos7 ~]$ chown jkl 1.txt # 将1.txt文件的拥有者改为jkl
    4. chown: changing ownership of '1.txt': Operation not permitted # 普通用户不允许强制修改拥有者,解决办法是用root权限
    5. [lin@VMCentos7 ~]$ chown xiao 1.txt # 将1.txt文件的拥有者改为xiao 但是没有xiao这个用户,因此报错
    6. chown: invalid user: ‘xiao’
    7. # 解决办法:
    8. [lin@VMCentos7 ~]$ ll
    9. -rwxrwxr-- 1 lin lin 0 Mar 27 18:15 1.txt
    10. [lin@VMCentos7 ~]$ sudo chown jkl 1.txt # 使用sudo提权
    11. [sudo] password for lin: # 输入用户密码
    12. lin is not in the sudoers file. This incident will be reported. # 说明sudo没有配置,不能使用,此时我们用一个配置的用户来演示
    13. [jkl@VMCentos7 linux-learning-warehouse]$ ll
    14. -rw-rw-r-- 1 jkl jkl 0 Mar 27 19:19 1.txt # 当前拥有者为jkl
    15. [jkl@VMCentos7 linux-learning-warehouse]$ sudo chown lin 1.txt # 将拥有者修改成lin
    16. [sudo] password for jkl:
    17. [jkl@VMCentos7 linux-learning-warehouse]$ ll
    18. -rw-rw-r-- 1 lin jkl 0 Mar 27 19:19 1.txt # 拥有者确实修改成了lin

    root用户举例:

    1. [root@VMCentos7 ~]# ll
    2. -rw-r--r-- 1 root root 0 Mar 21 00:39 1.txt
    3. [root@VMCentos7 ~]# chown lin 1.txt # 将拥有者改成lin
    4. [root@VMCentos7 ~]# ll
    5. -rw-r--r-- 1 lin root 0 Mar 21 00:39 1.txt # 拥有者确实被改成lin

    3.chgrp 指令

    格式:

    chgrp [选项] 用户组名 文件名


    功能:

    修改文件或目录的所属组



    常用选项:

    -R :递归修改文件或目录的所属组

    注意:普通用户不能强制修改所属组,需使用root权限修改,即sudo。

    普通用户举例:

    1. [jkl@VMCentos7 linux-learning-warehouse]$ ll
    2. -rw-rw-r-- 1 lin jkl 0 Mar 27 19:19 1.txt # 所属组为jkl
    3. [jkl@VMCentos7 linux-learning-warehouse]$ chgrp lin 1.txt # 普通用户不允许修改所属组
    4. chgrp: changing group of '1.txt': Operation not permitted
    5. [jkl@VMCentos7 linux-learning-warehouse]$ sudo chgrp lin 1.txt # 使用root权限修改所属组
    6. [sudo] password for jkl:
    7. [jkl@VMCentos7 linux-learning-warehouse]$ ll
    8. -rw-rw-r-- 1 lin lin 0 Mar 27 19:19 1.txt # 所属组修改成lin

    同时修改拥有者和所属组举例(root演示):

    1. [root@VMCentos7 ~]# ll
    2. -rw-r--r-- 1 root root 0 Mar 21 00:39 2.txt # 拥有者所属组均为root
    3. [root@VMCentos7 ~]# chown lin:jkl 2.txt # 将拥有者改为lin 所属组改为jkl
    4. [root@VMCentos7 ~]# ll
    5. -rw-r--r-- 1 lin jkl 0 Mar 21 00:39 2.txt # 修改成功

    2、有无权限的表现

    拥有者满足举例:

    1. [lin@VMCentos7 ~]$ ll
    2. total 0
    3. ---------- 1 lin lin 0 Mar 27 18:15 1.txt # 将1.txt的所有权限改为-,即没有任何权限
    4. [lin@VMCentos7 ~]$ cat 1.txt # 以lin用户查看1.txt文件,虽然拥有者为lin,但是没有读权限,因此不能查看该文件
    5. cat: 1.txt: Permission denied
    6. [lin@VMCentos7 ~]$ echo "hello Linux" > 1.txt # 没有写权限因此不允许给文件写入数据
    7. -bash: 1.txt: Permission denied
    8. [lin@VMCentos7 ~]$ ./1.txt # 没有可执行权限
    9. -bash: ./1.txt: Permission denied

     所属组满足举例:

    1. [lin@VMCentos7 ~]$ ll
    2. total 0
    3. ----rwx--- 1 jkl lin 0 Mar 27 18:15 1.txt # 拥有者为jkl 所属组为lin
    4. [lin@VMCentos7 ~]$ cat 1.txt # 所属组为lin 且有读权限 因此可以查看文件
    5. [lin@VMCentos7 ~]$ echo "hello Linux" > 1.txt # 所属组为lin 且有写权限 因此可以将数据写入文件
    6. [lin@VMCentos7 ~]$ cat 1.txt
    7. hello Linux
    8. [lin@VMCentos7 ~]$ ll
    9. total 4
    10. ----rwx--- 1 lin lin 12 Mar 27 19:51 1.txt # 拥有者所属组均为jkl
    11. [lin@VMCentos7 ~]$ cat 1.txt # 所属组有读权限为什么不能查看文件呢?
    12. cat: 1.txt: Permission denied

    上述两大段命令中,为什么拥有者均有读写执行权限,但是第二种情况却不能读写执行操作呢?

    因为Linux对用户的识别只有一次

    第一种情况:拥有者为jkl,拥有者于当前用户不匹配,因此会去匹配所属组,所属组与当前用户匹配,因此执行所属组的权限,所以可以执行读写执行操作。

    第二种情况:拥有者为lin,拥有者于当前用户匹配,因此执行拥有者的权限,所以不可以执行读写执行操作。

    总结


    本篇博客就结束啦,谢谢大家的观看,如果公主少年们有好的建议可以留言喔,谢谢大家啦!

  • 相关阅读:
    一、python Django基础配置[基础内容]
    数学建模笔记-第四讲-拟合
    【10. 差分】
    Java基础之《Ajax+JQuery(JavaEE开发进阶Ⅱ)》—JQuery与Ajax的应用(1)
    【深入理解Kotlin协程】协程的创建、启动、挂起函数【理论篇】
    入门力扣自学笔记110 C++ (题目编号1374)
    windows安装zabbix-agent
    (二)Linux 基础命令
    vue实现el-menu与el-tabs联动
    [MyBatis] SQL动态标签,SelecKey标签
  • 原文地址:https://blog.csdn.net/2201_75584283/article/details/136999183