• Linux权限理解以及shell理解


    今天的内容相对比较简单理解

    Linux权限理解

    这里主要想谈的就是目录的权限问题,至于用户和超级用户的权限问题,这个太简单了,查一查su和sudo命令即可

    接下来重点看一看文件中的三个权限:r w x 分别是读取,写入和执行

    如下图我们进入一个目录中的文件

     左边的红框代表文件权限,中间的数字是连接数,我们不管这个,右边分别是拥有者user,所属组group,其实还有一个other没有显示出来,这里提出一个问题,为什么要存在group,其实就是为了保证项目安全,方便组内协作,能够使得多个组内成员写一份代码,而且还能避免其他搞破坏的。

    接下来在说一下如何修改权限:

    第一种方法:chmod指令:比如添加和取消拥有者的读权限:chmod u+r text.txt和
    chmod u-r text.txt

    所有的人都添加读权限:chmod a+r file.txt

    覆盖user之前的权限,改为只有r权限:chmod u=r file.txt

    第二种方法:八进制法

    其实一个用户的权限有三个,用0和1分别来代表没有和有,三个0和1正好组成八进制的数,如下:

    111 —表示rwx都拥有

    110 —表示rw拥有,x不拥有

    000 —表示rwx都不拥有

    那么就可以这样改:

    chmod 110 text.txt 这就表示,user和group拥有执行权,other无权限。

    接下来修改拥有者和所属组

    chown指令:改变拥有者,这里注意格式:chown 改变后的owner 文件或目录名

    比如在普通用户权限下,sudo chown root file.txt就是把file.txt的拥有者给root

     chgrp指令:改变所属组,与上同理

    接下来就是本文的重点,目录的权限到底是什么意思,

    目录的读权限:就是字面意思,目录的内容是否可读,而不是目录里面文件的内容是否可读,比如目录yzy,普通用户没有读权限,然后在普通用户权限下,进行 ls yzy的操作,然后就会出现permission denied的提示,但是我们知道yzy中有一个file.txt 里面有内容hello linux,我们输入cat yzy/file.txt 就可以显示hello linux

    目录的写权限:是否允许特定角色在指定目录下创建文件file(和file的内容无关),其实就是修改目录,和上面的理解是一样的。

    目录的可执行权限:能否进入该目录

    这里存在一个问题,如果我们取消掉可执行权限,那么读和写还能进行吗?

    结论是不能,读和写的前提就是目录是能进入的!

    接下里介绍一个概念:粘滞位,这个功能其实就是为了解决非root用户能够删除其他人和以root为user的目录的问题,就是说普通用户可以删别人的也可以删root的。

    那么粘滞位设置就是:sudo chmod +t 目录名,这时就会发现other的x权限变为t权限,此时普通用户去删除root时,就会operation not permitted

    最后再介绍一个umask的概念

    当我们去touch和mkdir操作时,文件默认的权限如图,为什么是这样子的?

     这里就是umask发挥了作用,导致了默认文件权限是664,默认目录权限是775

     我们可以看到系统默认的umask是0002,第一个0可以不管,那就是002,对应八进制就是000 000 010,那么umask是怎么影响文件或者目录的默认权限的呢?

    Linux中有这样一个规则:创建普通文件起始权限从666(八进制)开始,创建目录起始权限从777(八进制)开始,凡是在umask中出现的权限,就要在默认的权限中去掉

    那么我们先看普通文件,666对应的二进制:110 110 110,此时umask是000 000 010,umask当中出现的权限是other的写权限拥有,那么默认的权限就需要去掉这个权限,就变成了:110 110 100,所以我们的test.c文件默认为110 110 100,即664

    我们再看目录,777对应的二进制:111 111 111,此时umask是000 000 010,umask当中出现的权限是other的写权限拥有,那么默认的权限就需要去掉这个权限,就变成了:111 111 101,所以我们的test.c文件默认为111 111 101,即775

    所以这里的凡是在umask中出现的权限,都不应该在最终权限中出现该怎么理解呢?是减去吗?

    最终权限=起始权限&(~umask)

    举个例子,目录起始权限111 111 111,umask是0002 也就是000 000 010 按位取反111 111 101 然后做与运算,结果为111 111 101即775

    umask的数字是可以修改的 如果设置umask是0777 那么文件和目录的所有权限都会消失。

    Shell理解

    shell外壳概念:

    当用户登录Linux系统的时候,系统会给用户创建一个进程,一般叫做bash(命令行解释器),shell的中文意思就为外壳,bash就是shell的一种。

    shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。

         shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilities and application programs)所调用。

        不论何时你键入一个命令,它都被Linux shell所解释。

    至此shell的作用其实也体现出来了,首先是交互作用,第二个就是保护操作系统。


     

  • 相关阅读:
    【二叉树的遍历】
    点云从入门到精通技术详解100篇-基于几何特征的三维点云配准(续)
    PCIe系列专题之二:2.1 TLP的前世今生
    PyQT6关联信号槽 (六) 百篇文章学PyQT6
    Qt Quick Effect Maker 工具使用介绍
    Go 语言基础
    工作分配问题——算法设计与分析(C实现)
    定制化图标——Element UI 组件图标替换指南
    SuperMap iPortal 与独立代理服务的 session 共享通过redis配置实现
    7-Spring架构源码分析-IoC 之注册 BeanDefinitions
  • 原文地址:https://blog.csdn.net/yzy521wjm/article/details/126168326