• Linux权限


    目录 

    shell命令以及运行原理
    Linux权限的概念
    权限的管理
    粘滞位
    默认权限

    shell命令以及运行原理

    下图中的被叫作命令行,而后面可以输入的则是命令+选项

    广义上,Linux发行版 = Linux内核 + 外壳程序

    狭义上,Linux = Linux内核

    外壳程序相等于Windows中的gui,即窗口图形

    bash是外壳程序的名称,而shell则是它所扮演的角色,比如李明是一名老师,bash相当于李明这

    个名字,而shell则相当于老师这个职业

    如下图,shell有两个作用

    传递请求指令,让OS去执行

    保护内核

    另外,shell也能创建子进程来进行执行具有风险的事情,程序运行起来就是一个进程,而shell本

    身也是一个进程

    Linux权限的概念

    Linux下的两种用户:超级用户(root)和普通用户

    超级用户:具有非常高的权限
    普通用户:具有一般权限,需要受权限的约束,比如创建用户就不能做,需要超级用户才行
    超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
    su - :切换至root用户
    su name:切换至普通用户
    注意:最好不要将root用户和普通用户的密码设成一致,否则可能会造成对权限界限不清楚以及其
    它问题
    如果要回到原来的用户,用su指令则会增加bash,
    直接输入exit或Ctrl+D也能返回,且比su指令更好一些

    权限:一件事情是否允许被特定的人做

    权限 = 人+ 事物的属性

    权限约束的是人,文件本身具有的天然的权限属性:r(读) + w(写) + x(可执行)

    权限的管理

    权限的操作则是修改人或者修改属性

    Linux中的用户类型

    拥有者:owner;所属组:group;其它:other

    而之所以有所属组,则是为了方便组内协同,比如两组进行竞争,其中一组的一个人写了一段好的

    代码,希望组内的人来找bug,这时他就需要开放权限让别人看到,而又不能让另一组的人看到,

    这时就只需开放所属组的权限即可

    用户的区别

    拥有者,所属组,other:指的是一种角色

    root和普通用户:指的是具体的一个人,他能是拥有者,所属组或other

    第一个字符标识文件的类型 ,Linux中,不以文件后缀作为区分文件类型的方式

    文件分类

    -:普通文件(文本、各种动静态库,可执行程序,源程序)

    d:目录文件

    c:字符设备文件:键盘与显示器

    b:块设备文件:磁盘

    p:管道文件:通信

    l:链接文件:软连接

    Linux下一切皆文件

    如下图,有r则有读权限,为-则没有读权限,有w则有写权限,为-则没有写权限,为x则有可执行

    权限,为-则没有可执行权限 

    注意:rwx的顺序是不能被改变的

    修改权限

    需要用到的指令是chmod,格式chmod  所属  +/-某权限  文件,所属就有拥有者,所属组和

    other,缩写为u、g、o,+/-表示添加权限或去除权限,文件就是要改变权限的文件,例子如下:

    如下图,就是去除拥有者的读权限,然后就不能读取文件内容了

    如下图,就是去除拥有者的写权限,可以继续写入,但是保存不了,所以只能不写退出

    如下图,就是去除的所属组的权限 

    如下图,a是all的缩写,能同时对三种角色的权限进行修改

    权限的另一种修改格式(数字)

    比如是r和是-就表示有读权限和没有读权限,所以也可以用1/0来表示有无权限,而每个所属都有3

    个权限,这里就能用一个8进制数字表示,比如rw-变成r--,用数字就是100,即4,让rw-rw-r--变

    成r--rw-r--,则是464,如下图

    权限对root用户的限制几乎无效,如下图,other无读和写权限,但root依然可以读和写

     

    修改文件所属

    改变拥有者是chown,改变所属组则是chgrp,而other则随着前两者变化,无需手动修改

    将文件给别人,需要得到对方的同意,所以这里可以在前面加个sudo强制给别人,但暂时无法演

    示,这里直接将用户切换为root来做 

    如下图,将文件的拥有者进行了改变

    root则可以直接拿和给,不受此约束 

    如下图,将文件的拥有者和所属组同时改变

    进入目录需要的权限是可执行权限(x)

    如下图,lesson目录没有了可执行权限,则无法进入目录,而ls因为有读权限,却可以查看目录内

    容,就看似显得很矛盾,但只能看到文件/目录名,属性看不到,这样看,就不觉得矛盾了 

    粘滞位
    如果目录本身对other具有w权限,那other可以删除任何目录下的文件,否则,other不可以删
    除任何文件,这里因为sudo暂时无法使用,所以直接用root执行
    这时就有一种需求:other可以在特定的目录下创建文件,并写入但是不想让任何人删掉自己的文
    件,这就看起来很矛盾,因为让你创建文件,就需要有w权限,而不让你删除文件,就不能有w权
    限,所以就有了粘滞位t权限,能满足上述情况,它可以理解为一种特殊的x
    添加粘滞位,用root创建文件,因为暂时无法使用sudo,所以只能用root去做,同时无法删除文
    件,因为root权限太高,粘滞位对它无影响,所以还是可以删除文件,就无法演示

    默认权限

    新创建的普通文件或目录的权限是我们所看到的样子的原因
    如下图,目录p1的权限是775,文件test.c的权限是664,首先普通文件的起始权限是666,而目录
    文件的起始权限是777,而下方的0002则是权限掩码,凡是在umask中出现的,都应在起始权限中
    去掉,002则是000 000 010,而777则是111 111 111,所以从右往左第二个1要变为0,方法则是
    将002按位取反,再按位与777就得到了775,同理,普通文件就从666变为了664
    同时权限掩码还能更改,如下图,不过只在本次登录有效 

  • 相关阅读:
    《深入理解Spark RDD缓存机制》(第4天)
    装饰器模式和 AOP 面向切片编程(设计模式与开发实践 P15)
    LongAdder原理浅析
    论文投稿指南——收藏|SCI写作投稿发表全流程
    【springboot】3、自动配置
    Jackson指定json的key
    GIT提示Another git process seems to be running in this repository
    Vue2.0简介
    Ubuntu22.04安装Cuda11.3和Cudnn8.5的深度学习GPU环境
    MySQL事务管理
  • 原文地址:https://blog.csdn.net/weixin_58867976/article/details/126574124