【Linux底子篇】:揭秘Linux权限问题--怎样设置与管理,让体系更安全
✨感谢您阅读本篇文章,文章内容是个人学习条记的整理,假如那里有误的话还请您指正噢✨✨ 个人主页:余辉zmh–CSDN博客
✨ 文章所属专栏:Linux篇–CSDN博客
https://i-blog.csdnimg.cn/direct/a5438a898c2d4b23acb2019588d66b9d.gif#pic_center
一.Linux下用户的分类
1.超等用户
[*]作用:拥有体系的最高权限,可执行所有操纵(包括修改体系文件,安装软件,管理用户等),类似于管理员身份。
[*]特点:用户名为root,家目录为/root,权限不受限制,误操纵可能会导致体系瓦解或数据丢失。
[*]利用场景:体系维护,安装全局软件(这个后面会讲),修改核心配置等。
[*]注意:日常操纵不建议直接利用root。
https://i-blog.csdnimg.cn/direct/04b0b351172e4b998f11fc3057a8ed7b.png#pic_center
2.普通用户
[*]作用:供日常利用,权限受限,仅能操纵自己的文件和授权的资源。
[*]特点:用户名为创建用户时的名,家目录为/home/用户名,无法修改体系级文件后配置。
[*]利用场景:日常办公,开发,运行普通应用程序等。
https://i-blog.csdnimg.cn/direct/383bf8041db742128d8365f9803ea405.png#pic_center
创建普通用户:useradd [用户名]
设置用户暗码:passwd [用户名](注意暗码要输入两遍)
删除普通用户:userdel [用户名]
3.两个用户之间的切换
Linux中所有的用户都要有暗码,无论是root还是其他,即便是多个普通用户,也都要设置暗码,当然通过暗码可以实现用户之间的切换。
1.从普通用户到超等用户:
[*] su:从普通用户切换到超等用户,但是还是在普通用户的账号上。
https://i-blog.csdnimg.cn/direct/50781643570e4154b2bddd4a79c7939e.png#pic_center
[*] su -:从普通用户登录到超等用户的账号上。
https://i-blog.csdnimg.cn/direct/daa4b1910f154ef7a5397b2977189006.png#pic_center
注意:这两个都是要输入root用户暗码。
2.从超等用户到普通用户:
[*]su [普通用户]:从超等用户直接切换到普通用户上,不需要输入暗码。
https://i-blog.csdnimg.cn/direct/2439a3834ef34c5c9df26db04b3000dd.png#pic_center
3.从普通用户到其他的普通用户:
[*] su [其他普通用户]:需要输入对应切换到的普通用户的暗码。
https://i-blog.csdnimg.cn/direct/060881582ef3431582b67e2dd2ab776c.png#pic_center
4.普通用户临时对一条下令进行提权:
[*]sudo :只对command这一条指令提权,不切换到超等用户,需要输入当前普通用户的暗码。
二.Linux下的权限问题
首先需要理解什么叫做权限?
这里举一个例子,比如现在有一个校长叫做张三,张三作为校长可以进入校长办公室,但是小明是一个门生,他想要进行校长办公室但是不能进入因为他的身份是门生,不是校长,而张三又为什么能进入校长办公室,是因为他的身份是校长,而不是张三他这个名字。
所以什么叫做权限?用大白话来说就是一件事情是否答应被你做。
[*]权限认证的是身份(权限和”人“有关)。
[*]权限也和事物的”属性“有关。
上面这两句话怎样理解,需要先了解后面的内容。
1.文件的范例
文件的范例通常用文件的后缀来区分,但是再Linux体系中文件名后缀没有直接的意义,也就是说不消后缀进行区分(注意:没有意义不代表用不到)。
Linux体系下文件范例的划分根据ll指令列出的详细信息中的第一个开头字符决定:
https://i-blog.csdnimg.cn/direct/8651d70e3ac54e6fb839d5f5da7b49f1.png#pic_center
[*]_:普通文件(可以是文本,可执行程序,库)
[*]d:目录文件
[*]b:块设备文件(磁盘文件,读取时是一整块)
[*]c:字符设备文件(键盘,表现器文件等,输入输出是按字符为单元)
[*]p:管道文件(用来进行通讯的)
前面提到Linux体系中的文件名后缀没有意义,但是不代表用不到,比如:gcc是一款编译器软件,只能编译后缀为c大概cpp的普通文件,虽然Linux下不消后缀名区分,但是不代表其他Linux体系上运行的软件不需要后缀,又运行软件来决定需不需要后缀。因此Linux体系中怎样对待后缀:看用户需求即可。
https://i-blog.csdnimg.cn/direct/97470546ecfa45b3807f456256703c1b.png#pic_center
2.权限身份
怎样理解权限和”人“有关?
这里的"人"不光是某个特定的用户,还是一种权限身份,在Linux体系下,文件和目录的权限管理有三种权限身份划分:
[*]拥有者(own):创建文件后目录的用户,默认拥有最高控制权,这个文件属于谁的,谁就是拥有者。
[*]所属组(group):文件大概目录所属的用户组,组内成员可共享特定的权限。
[*]其他人(other):既不是拥有者,也不在所属组中的用户,属于其他人,可以理解为这个文件不属于谁的。
上面的这三种表示的是身份,而上面有讲到用户的分类,可以是超等用户,也可以是普通用户,这两个叫做详细的人,超等用户可以是拥有者也可以是所属组,也可以是其他人;普通用户可以是拥有者也可以是所属组,也可以是其他人。
只有身份+详细的人才能具备权限,假如只有身份,没有详细的人担当,就没有权限可以行使;假如只有详细的人没有身份依然没有权限可以行使。(还是以上面的谁人校长为例,张三这个详细的人担当校长这个身份才能进入校长办公室,假如没有这个身份,就不能进行;相反,假如只有校长这个身份而没有详细的人担当,也不能行使校长的权限。)
因此权限和”人“有关,这里的”人“其实就是身份+详细的人。
补充:指令ll列出的文件详细信息中,数字后面的第一个用户名表示的是拥有者,第二个用户名表示的是所属组。
https://i-blog.csdnimg.cn/direct/26d458a3ca6a4d74b52d0add690bb949.png#pic_center
当一个用户查察当前文件时,用户名和拥有者,所属组对比,假如存在对应的用户名,说明有权查察,假如都没有说明当前用户的权限身份是其他人,不能查察。
3.文件的权限属性
指令ll列出的文件详细信息中,在第一个字符串中除了开头的字符表示文件的范例,剩下的九个字符表示的是文件对应的权限属性。
https://i-blog.csdnimg.cn/direct/298c5bb12d894ffc987327eebe3da427.png#pic_center
[*]r:可读权限
[*]w:可写权限
[*]x:可执行权限
[*]-:对应的权限位置没有权限
在这九个字符中每三个为一组,分别对应拥有者权限,所属组权限和其他人权限,而每一组中的三个位置又分别是读权限(r/-),写权限(w/-),执行权限(x/-)。
https://i-blog.csdnimg.cn/direct/72bc077016e849108921924378a75d97.png#pic_center
每个位置是什么寄义都是确定的。
每个位置只有是大概否,具有指定的权限。
4.权限的修改
在Linux体系下对权限的修改有两种,一种是对权限属性的修改,另一种是对权限身份的修改。
1.权限属性的修改:
两种方式:
[*] chmod [权限身份 +/- 权限属性] [目的文件]:修改指定权限身份对目的文件的权限属性(此中+表示增加对应的权限,-表示删除对应的权限)
权限身份可以是:
[*]u:表示拥有者
[*]g:所属组
[*]o:其他人
[*]a:所有的权限身份
权限属性可以是:
[*]r:可读
[*]w:可写
[*]x:可执行
举例:
1.将text.c文件编译为可执行文件a.out,执行一遍,输出结果;之后将可执行文件a.out的拥有者的权限属性x删除,这时候当前用户作为拥有者就不能再执行该文件
https://i-blog.csdnimg.cn/direct/90e7b8e2266c46aa8aa6432955a0f938.png#pic_center
2.先在text.c文件中写入,然后读取,之后将拥有者和所属组的权限属性的读写全部删除(中心用逗号隔开),删除后当前拥有者就不能再写入和读取
https://i-blog.csdnimg.cn/direct/87cbbf179b714b3cb07795a3d9727758.png#pic_center
[*] chmod [八进制数] [目的文件]
前面提到每个权限属性位置只有是大概否两种情况,因此可以用二进制0和1表示,然后每三个为一组转换成三个十进制数,三个数就是用八进制表示的对应的权限
以下面为例:
拥有者 所属组 其他人
r w r r w - r w -
1 1 1 1 1 0 1 1 0
7 6 6
举例:
将拥有者和所属组的权限属性的读写全部删除(中心用逗号隔开),删除后当前拥有者就不能再写入和读取,之后用八进制的方式修改权限属性为664,修改后,拥有者和所属组就能读写
https://i-blog.csdnimg.cn/direct/d82890a4cb25440a99fc4354ca55fbf7.png#pic_center
2.权限身份修改:
[*] 仅修改拥有者为其他用户:
sudo chown [目的用户] [目的文件]
[*] 仅修改所属组为其他用户:
sudo chgrp [目的用户] [目的文件]
[*] 同时修改拥有者和所属组为其他用户:
sudo chown [拥有者目的用户]:[所属组目的用户] [目的文件]
三.补充内容
1.起始权限
https://i-blog.csdnimg.cn/direct/95f1738a22a0437298ccb8663b3839bb.png#pic_center
以上面图片中的为例,为什么我们创建文件的默认权限是我们所看到的样子?为什么普通文件的权限默认是rw-rw-r--(664)?为什么目录文件的默认权限是rwxrwxr-x(775)?
**默认给普通文件的起始权限其实是rw-rw-rw-(666);默认给目录文件的起始权限其实是rwxrwxrwx(777)。至于为什么和我们所看到的默认权限不同,是因为存在权限掩码(umask:0002)**的问题.
权限掩码umask将0002转换成二进制就是000 000 010(这里只用到九位即可),凡是在权限掩码中出现的权限都不会在最终的文件权限中出现。
注意:起始权限和权限掩码之间不是经过减法运算得到的最终权限,而是 最终权限=起始权限&(~umask)
举例:
起始权限:
r w - r w - r w -r w x r w x r w x
1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1
umask:
0 0 0 0 0 0 0 1 00 0 0 0 0 0 0 1 0
~umask:
1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1
最终权限:
1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 1
八进制:
6 6 47 7 5
因此可以用umask来限定对应文件的最终权限,比如只能写不能读和执行
2.目录权限
假如是一个普通文件,所对应的权限比较好理解,其实就是字面意思,读,写,可执行。但是目录文件的读,写,可执行权限有什么意义呢?
目录文件的读,写,可执行权限意义:
[*] r:是否答应我们查察指定目录下的文件内容
(在当前目录d1下,可以查察d2目录下的文件内容,但是删除目录d1的拥有者的可读权限后,再次查察就不能查察。)
https://i-blog.csdnimg.cn/direct/a844c52855c047ff8e78fe0b60723981.png#pic_center
https://i-blog.csdnimg.cn/direct/f2d9e8d78ebf4ac597900926c26b63c1.png#pic_center
[*] w:是否答应我们在当前目录下进行创建,更改和删除
(先在d1目录下创建一个目录d2,然后删除目录d1拥有者的写入权限,删除后就不能在d1目录下创建新的目录,并且不能删除目录)
https://i-blog.csdnimg.cn/direct/5cc0780d0e3744078b099a6f7a291507.png#pic_center
[*] x:是否答应用户进入对应的目录
(删除d1目录拥有者的可执行权限后,就不能进入到d1目录)
https://i-blog.csdnimg.cn/direct/53c28eb66b9040db91381fd695ddb48a.png#pic_center
这就是为什么目录文件的起始权限是rwxrwxrwx(777)。
3.粘滞位
普通用户自己的家目录权限是700,在自己的家目录下创建的文件,别人都看不到!!!
https://i-blog.csdnimg.cn/direct/29dadf16dce14bc787fb4e0d6f258e88.png#pic_center
但是偶然候,可能存在多个用户之间想要进行文件的数据共享,假如是在某个用户的家目录下创建的该共享文件,其他用户依然看不到,因此要建立一个共享目录,不在任何一个人的加目录下,所以只能在根目录下。
在根目录下创建一个共享目录shared,创建完后的初始权限为rwxr-xr-x,拥有者和所属组都为超等用户,当其他用户利用该共享目录时以其他人的身份利用该共享目录,但是其他人的权限属性只有r-x,所以先更改一下共享目录的权限属性。
https://i-blog.csdnimg.cn/direct/f173417273544afc87f6d9ff606721d3.png#pic_center
更改共享目录的权限属性:
https://i-blog.csdnimg.cn/direct/9f309bf9fcc54ab0bffd45b0a5dcd6bb.png#pic_center
更改完后其他用户就可以以其他人的身份利用共享目录。
在共享目录下用户zmh01创建了一个文件text.c,可以在该文件中写入和读取:
https://i-blog.csdnimg.cn/direct/8f08ab3a64ec4d46ad5cf0245028469c.png#pic_center
而其他用户zmh02在该共享目录下,同样可以看到用户zmh01创建的文件text.c,但是只能读取并不能写入,因为其他人的权限属性只用可读:
https://i-blog.csdnimg.cn/direct/fb2230827fcf4e8fa53a95754461c9a1.png#pic_center
但是又有了新的问题,假如是在共享目录下,此中一个用户创建的文件,假如设置为其他用户的权限属性为r--,那其他用户就只能读该文件,按理来说不能对该文件进行更改和删除,因为其他用户对该文件的权限属性没有w,但是其他用户依然可以删除:
这里用户zmh02将用户zmh01创建的文件删除:
https://i-blog.csdnimg.cn/direct/3eba2813c28f44459a00fc2b476bf05e.png#pic_center
为什么没有对应权限依然能删除,这是因为一个文件能否被删除删除,并不由文件本身决定,而是由这个文件所处的目录决定!
用户zmh01的文件是在共享目录下创建的,共享目录的权限属性:
https://i-blog.csdnimg.cn/direct/64add31e773b43f0a42160c96bca263e.png#pic_center
共享目录的其他人的权限属性是rwx,此中前面提到目录的w权限意义是创建,删除和更改,因此在共享目录下,用户之间可以互删各自创建的文件。
假如不想让其他人删除自己的文件,这时候可能会觉得将共享目录的w权限去掉,但是同时也会导致无法在该共享目录下创建文件,这时候就体现不出共享目录的共享特点!
所以真正的办理方法是粘滞位:
粘滞位t是一种特别的x权限(在其他人的x权限属性上),给目录设置(一般是共享目录),大家可以在目录上进行各自文件的增删查改,只答应文件拥有者大概root用户能删除这个文件,其他人一概不答应。
将共享目录的其他人的权限属性上加上t:
https://i-blog.csdnimg.cn/direct/9d3f01738096448a83820a88a87012ca.png#pic_center
这时候用户zmh01创建的文件用户zmh02就不能再删除:
https://i-blog.csdnimg.cn/direct/384316cbb7ba495ea4ee3bfedb074355.png#pic_center
补充一点:根目录/下有一个tmp目录,是唯逐一个带粘滞位的目录,可以做为共享目录利用。
https://i-blog.csdnimg.cn/direct/71694cd810724fb4b2ae4d5c2cba7e42.png#pic_center
以上就是关于Linux下的权限问题的讲解,假如那里有错的话,可以在批评区指正,也欢迎大家一起讨论学习,假如对你的学习有资助的话,点点赞关注支持一下吧!!!
https://i-blog.csdnimg.cn/direct/5b78799ab47446dea23d3519410cb909.png#pic_center
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]