Linux权限shell命令以及运行原理在Linux指令那篇文章中我们写了一大堆指令而上述的一大堆指令都是怎么运行起来的呢运行期间的命令行又是什么呢操作系统操作系统被分为两种类型上的认识即广义操作系统和狭义操作系统广义操作系统广义操作系统表示的既是操作系统的内核它是操作系统最核心的部分它包括操作系统内的进程文件内核设备以及各种管理工作的软件也是操作系统的外壳程序外壳程序在操作系统中对应的是命令行在Linux系统中是shell命令行在windos系统中就是图形化界面再加上系统自带的应用软件狭义操作系统狭义操作系统只表示操作系统的内核操作系统的结构无论是什么版本的Linux首先都要包括Linux内核。但是用户大多不擅于直接操作Linux内核所以其外部会包装一个软件层这个软件壳就称为内核的外壳程序这个外壳一般称为shell外壳。这样用户通过外壳程序访问内核内核在通过外壳将结果反馈给用户。这个外壳程序经常会对用户行为进行解析最典型的外壳程序就是Linux系统中的shell命令行。此前所有的指令并不是直接下达给内核而是给了外壳程序外壳程序再将命令交由内核执行windos系统中最常用的外壳程序就是图形化界面bash每次登录Linux操作系统都会给我们一个bash程序bash是一个死循环在循环体里就会输出命令行随后获取输入的命令bash内部再对输入的命令做解析执行。这个bash和shell外壳是什么关系呢shell外壳是对所有程序外壳的统称而bash是Centos或ubuntu版本下的外壳程序。就好比windos操作系统和windos11操作系统的关系一个是操作系统的统称一个是操作系统的具体版本。外壳程序可以不执行用户的非法请求也就是能够变相地保护内核Linux权限的概念什么是权限权限决定的是能否访问资源为什么要有权限Linux是一款多用户操作系统意味着会同时有多个人来登录访问即使没有也用普通用户和root的区别。权限本质是为了更好地进行用户管理权限 人 文件属性首先权限是针对特定群体的 ---- 与人有关这个“人”会分为普通用户和root其次目标主体必须天然具备对应的属性才能访问。这句话是什么意思呢Linux下一切皆文件所以未来在Linux中访问的目标主体不管做什么操作都会直接或间接与文件有关。我们这里说的目标主体就是文件。换句话说如果要对一个文件进行操作那么这个文件就要天然具备对应的权限文件固有的属性常见的有三种可读r可写w可执行xLinux用户的问题Linux中的用户会被分为两类一类是超级用户root另一类是普通用户超级用户几乎不受权限约束属于Linux系统中的特权级别。普通用户则受权限约束。root和普通账号之间可以进行转换用su账号名可以直接将root账号切换成普通账号而用su root将普通账号切成root账号时则需要root账号的密码当有多个账号时从一个普通账号a切换到另一个普通账号b必须要输入b的密码root超级账户转换为普通账户不需要输入密码这就是root作为特权级别不受权限约束的体现su-的作用也是切换用户但它是让目标用户以重新登录的方式进行切换su则是只进行切换不进行二次登录多账号体系下的最佳实践每个用户都只用自己的账号Linux多用户操作系统下有的用户要安装软件也就是将可执行文件拷贝到指定的目录下而操作系统不让普通账号进行拷贝。这时对于普通用户就有短暂提高权限的需求sudo指令普通用户要以超级用户身份执行命令时可以在相应命令前加上sudo指令它可以让普通账号的指令短暂提权sudo执行时需要用户密码随后的15分钟内再进行sudo操作不需要密码但是我们进行sudo命令时只用输入自己的密码就能获得root权限root账号的安全性不就不能保证了吗实际上在Linux里面普通账号默认是不得执行sudo命令的虚拟机除外root账号有一个白名单只有在白名单里面的普通账号才可以执行sudo命令Linux角色的问题Linux中通常有三种角色1.文件的拥有者角色2.文件的所属组角色3.other角色若访问文件的账号既不是拥有者角色也不是所属组角色那么就会被归类为other角色Linux中的角色是需要账号root普通账号来扮演的。所属组是什么组group是为了对文件权限进行组级别的管理一个文件可以让同一组的角色看但不让other角色看文件权限属性的问题文件权限分为r只读w只写以及x可执行权限以rw-为例r w - 是三个符号第一个位置表示是否可读第二个位置表示是否可写第三个位置表示是否可执行权限的指令操作权限 人 文件属性没有权限会怎么样root可以无视权限当拥有者和所属组是同一个角色时为什么所属组有rw权限而拥有者无权限的情况下用户无rw权限呢这是因为用户访问文件时确定自己相对于文件的身份角色系统只会从左向右验证一次关于可执行权限一个文件要被运行需要两个条件首先该文件本身就是一个可执行文件其次文件本身具有可执行权限文件拥有者具有修改文件权限的能力rwx三个权限用1和0来表示是否有对应权限那么可以用3位8进制来表示拥有者所属组和other的权限000-777用户可以将文件的角色改为自己而文件无法直接给另一个人或者组此时需要超级用户的权限sudo文件类型三个子问题进入一个目录需要什么权限对于这样一个rwx权限均具备的文件是哪个权限决定了用户能进入并进行访问如果我们删去r权限我们仍能进入但不能查看该目录下其他文件的属性所以r权限决定的是用户是否有权利查看指定目录下的文件属性w权限决定的是特定用户是否有权利在该目录下能否新增删除和修改文件/目录。但是可以通过echo命令向该目录中的文件写内容这是因为目录权限和目录下的文件权限是不统一的即使用户对目录没有w权限但用户仍可能对文件有w权限我们知道在Linux系统中文件 内容 属性而目录也是一种文件在我们的例子中lesson7是目录其下属的文件就是该lesson7目录的文件目录的内容就是其下属文件的名字下属文件的属性在其他地方存储。决定用户是否能进入一个目录的是x权限为什么我们新建一个文件默认权限是-rw-rw-r- -对于普通文件默认权限是从rw-rw-rw即666开始。对于目录文件默认权限是从rwx rwx rwx即777开始。Linux系统中为了对权限进行细粒度控制更精细的权限管理Linux会进行权限掩码凡是出现在权限掩码中的权限最终都应该在起始权限中去掉。那么文件所拥有的最终权限 起始权限 ”去掉“ umask权限掩码怎么去掉呢比如普通文件的起始权限是 rw- rw- rw-也就是110 110 110换成八进制就是666。而掩码是002八进制换成二进制就是 000 000 010。这两串二进制相减最终得到的就是110 110 100也就得到了普通文件的最终权限664上述过程只是为了好理解真正的过程应该是最终权限 起始权限 (~umask)所以如果我们改变umask的值就可以更改文件的最终权限为此这个子问题的答案就是Linux中存在一个权限掩码其会与文件的起始权限进行按位与运算最终得到文件的默认/最终稿权限没有rwx权限用户能删除这个文件吗我们先分别用普通账号命令和sudo命令创建几个文件再用sudo命令让其中一个文件失去所有权限我们对这个文件进行操作会发现这个文件不能读不能写不能执行但可以删除一个root创造的文件它针对普通用户的权限全部取消后普通用户不能对其读写执行却能删除。这实际上是因为文件的删除权限存在于其所处的目录中而这个目录是属于普通用户的因此普通用户可以删除该文件。所以我们可以得到一个结论在指定目录下一个其他人包括root新建的文件普通用户可能没有rw权限由文件的创造者赋予但是普通用户对该文件删除。接下来我们引出一个场景多用户之间共享文件家目录只对其对应用户开放所以在普通账号之间是不会发生A账号在B账号的目录下创建文件的情况的。所以如果多账号之间要共享文件则该文件一定不能在任意用户的家目录下必须在系统级别的路径下。粘滞位在一个共享目录下普通用户新建文件和其他人共享别人可以删除这个共享文件。那么我们可不可以做到在一个共享目录下每个人都能新建文件但只能删除自己建的文件而不能删除其他人的文件呢换句话说我们需要一种权限这个权限要在文件的other角色的w权限之上而这个权限就是粘滞位这个t就是粘滞位的意思。粘滞位实际上是给other设置的一种权限管理级别在指定t目录下每个人都能新建文件但只能删除自己的文件。粘滞位通常用来做文件共享的场景本章完
Linux学习笔记(3)Linux权限
Linux权限shell命令以及运行原理在Linux指令那篇文章中我们写了一大堆指令而上述的一大堆指令都是怎么运行起来的呢运行期间的命令行又是什么呢操作系统操作系统被分为两种类型上的认识即广义操作系统和狭义操作系统广义操作系统广义操作系统表示的既是操作系统的内核它是操作系统最核心的部分它包括操作系统内的进程文件内核设备以及各种管理工作的软件也是操作系统的外壳程序外壳程序在操作系统中对应的是命令行在Linux系统中是shell命令行在windos系统中就是图形化界面再加上系统自带的应用软件狭义操作系统狭义操作系统只表示操作系统的内核操作系统的结构无论是什么版本的Linux首先都要包括Linux内核。但是用户大多不擅于直接操作Linux内核所以其外部会包装一个软件层这个软件壳就称为内核的外壳程序这个外壳一般称为shell外壳。这样用户通过外壳程序访问内核内核在通过外壳将结果反馈给用户。这个外壳程序经常会对用户行为进行解析最典型的外壳程序就是Linux系统中的shell命令行。此前所有的指令并不是直接下达给内核而是给了外壳程序外壳程序再将命令交由内核执行windos系统中最常用的外壳程序就是图形化界面bash每次登录Linux操作系统都会给我们一个bash程序bash是一个死循环在循环体里就会输出命令行随后获取输入的命令bash内部再对输入的命令做解析执行。这个bash和shell外壳是什么关系呢shell外壳是对所有程序外壳的统称而bash是Centos或ubuntu版本下的外壳程序。就好比windos操作系统和windos11操作系统的关系一个是操作系统的统称一个是操作系统的具体版本。外壳程序可以不执行用户的非法请求也就是能够变相地保护内核Linux权限的概念什么是权限权限决定的是能否访问资源为什么要有权限Linux是一款多用户操作系统意味着会同时有多个人来登录访问即使没有也用普通用户和root的区别。权限本质是为了更好地进行用户管理权限 人 文件属性首先权限是针对特定群体的 ---- 与人有关这个“人”会分为普通用户和root其次目标主体必须天然具备对应的属性才能访问。这句话是什么意思呢Linux下一切皆文件所以未来在Linux中访问的目标主体不管做什么操作都会直接或间接与文件有关。我们这里说的目标主体就是文件。换句话说如果要对一个文件进行操作那么这个文件就要天然具备对应的权限文件固有的属性常见的有三种可读r可写w可执行xLinux用户的问题Linux中的用户会被分为两类一类是超级用户root另一类是普通用户超级用户几乎不受权限约束属于Linux系统中的特权级别。普通用户则受权限约束。root和普通账号之间可以进行转换用su账号名可以直接将root账号切换成普通账号而用su root将普通账号切成root账号时则需要root账号的密码当有多个账号时从一个普通账号a切换到另一个普通账号b必须要输入b的密码root超级账户转换为普通账户不需要输入密码这就是root作为特权级别不受权限约束的体现su-的作用也是切换用户但它是让目标用户以重新登录的方式进行切换su则是只进行切换不进行二次登录多账号体系下的最佳实践每个用户都只用自己的账号Linux多用户操作系统下有的用户要安装软件也就是将可执行文件拷贝到指定的目录下而操作系统不让普通账号进行拷贝。这时对于普通用户就有短暂提高权限的需求sudo指令普通用户要以超级用户身份执行命令时可以在相应命令前加上sudo指令它可以让普通账号的指令短暂提权sudo执行时需要用户密码随后的15分钟内再进行sudo操作不需要密码但是我们进行sudo命令时只用输入自己的密码就能获得root权限root账号的安全性不就不能保证了吗实际上在Linux里面普通账号默认是不得执行sudo命令的虚拟机除外root账号有一个白名单只有在白名单里面的普通账号才可以执行sudo命令Linux角色的问题Linux中通常有三种角色1.文件的拥有者角色2.文件的所属组角色3.other角色若访问文件的账号既不是拥有者角色也不是所属组角色那么就会被归类为other角色Linux中的角色是需要账号root普通账号来扮演的。所属组是什么组group是为了对文件权限进行组级别的管理一个文件可以让同一组的角色看但不让other角色看文件权限属性的问题文件权限分为r只读w只写以及x可执行权限以rw-为例r w - 是三个符号第一个位置表示是否可读第二个位置表示是否可写第三个位置表示是否可执行权限的指令操作权限 人 文件属性没有权限会怎么样root可以无视权限当拥有者和所属组是同一个角色时为什么所属组有rw权限而拥有者无权限的情况下用户无rw权限呢这是因为用户访问文件时确定自己相对于文件的身份角色系统只会从左向右验证一次关于可执行权限一个文件要被运行需要两个条件首先该文件本身就是一个可执行文件其次文件本身具有可执行权限文件拥有者具有修改文件权限的能力rwx三个权限用1和0来表示是否有对应权限那么可以用3位8进制来表示拥有者所属组和other的权限000-777用户可以将文件的角色改为自己而文件无法直接给另一个人或者组此时需要超级用户的权限sudo文件类型三个子问题进入一个目录需要什么权限对于这样一个rwx权限均具备的文件是哪个权限决定了用户能进入并进行访问如果我们删去r权限我们仍能进入但不能查看该目录下其他文件的属性所以r权限决定的是用户是否有权利查看指定目录下的文件属性w权限决定的是特定用户是否有权利在该目录下能否新增删除和修改文件/目录。但是可以通过echo命令向该目录中的文件写内容这是因为目录权限和目录下的文件权限是不统一的即使用户对目录没有w权限但用户仍可能对文件有w权限我们知道在Linux系统中文件 内容 属性而目录也是一种文件在我们的例子中lesson7是目录其下属的文件就是该lesson7目录的文件目录的内容就是其下属文件的名字下属文件的属性在其他地方存储。决定用户是否能进入一个目录的是x权限为什么我们新建一个文件默认权限是-rw-rw-r- -对于普通文件默认权限是从rw-rw-rw即666开始。对于目录文件默认权限是从rwx rwx rwx即777开始。Linux系统中为了对权限进行细粒度控制更精细的权限管理Linux会进行权限掩码凡是出现在权限掩码中的权限最终都应该在起始权限中去掉。那么文件所拥有的最终权限 起始权限 ”去掉“ umask权限掩码怎么去掉呢比如普通文件的起始权限是 rw- rw- rw-也就是110 110 110换成八进制就是666。而掩码是002八进制换成二进制就是 000 000 010。这两串二进制相减最终得到的就是110 110 100也就得到了普通文件的最终权限664上述过程只是为了好理解真正的过程应该是最终权限 起始权限 (~umask)所以如果我们改变umask的值就可以更改文件的最终权限为此这个子问题的答案就是Linux中存在一个权限掩码其会与文件的起始权限进行按位与运算最终得到文件的默认/最终稿权限没有rwx权限用户能删除这个文件吗我们先分别用普通账号命令和sudo命令创建几个文件再用sudo命令让其中一个文件失去所有权限我们对这个文件进行操作会发现这个文件不能读不能写不能执行但可以删除一个root创造的文件它针对普通用户的权限全部取消后普通用户不能对其读写执行却能删除。这实际上是因为文件的删除权限存在于其所处的目录中而这个目录是属于普通用户的因此普通用户可以删除该文件。所以我们可以得到一个结论在指定目录下一个其他人包括root新建的文件普通用户可能没有rw权限由文件的创造者赋予但是普通用户对该文件删除。接下来我们引出一个场景多用户之间共享文件家目录只对其对应用户开放所以在普通账号之间是不会发生A账号在B账号的目录下创建文件的情况的。所以如果多账号之间要共享文件则该文件一定不能在任意用户的家目录下必须在系统级别的路径下。粘滞位在一个共享目录下普通用户新建文件和其他人共享别人可以删除这个共享文件。那么我们可不可以做到在一个共享目录下每个人都能新建文件但只能删除自己建的文件而不能删除其他人的文件呢换句话说我们需要一种权限这个权限要在文件的other角色的w权限之上而这个权限就是粘滞位这个t就是粘滞位的意思。粘滞位实际上是给other设置的一种权限管理级别在指定t目录下每个人都能新建文件但只能删除自己的文件。粘滞位通常用来做文件共享的场景本章完