✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ![]() 一.Linux下用户的分类1.超级用户
![]() 2.普通用户
![]() 创建普通用户:useradd [用户名] 设置用户密码:passwd [用户名](注意密码要输入两遍) 删除普通用户:userdel [用户名] 3.两个用户之间的切换Linux中所有的用户都要有密码,无论是root还是其他,即便是多个普通用户,也都要设置密码,当然通过密码可以实现用户之间的切换。 1.从普通用户到超级用户:
注意:这两个都是要输入root用户密码。 2.从超级用户到普通用户:
![]() 3.从普通用户到其他的普通用户:
4.普通用户暂时对一条命令进行提权:
二.Linux下的权限问题首先需要理解什么叫做权限? 这里举一个例子,比如现在有一个校长叫做张三,张三作为校长可以进入校长办公室,但是小明是一个学生,他想要进行校长办公室但是不能进入因为他的身份是学生,不是校长,而张三又为什么能进入校长办公室,是因为他的身份是校长,而不是张三他这个名字。 所以什么叫做权限?用大白话来说就是一件事情是否允许被你做。
上面这两句话如何理解,需要先了解后面的内容。 1.文件的类型文件的类型通常用文件的后缀来区分,但是再Linux系统中文件名后缀没有直接的意义,也就是说不用后缀进行区分(注意:没有意义不代表用不到)。 Linux系统下文件类型的划分根据ll指令列出的详细信息中的第一个开头字符决定: ![]()
前面提到Linux系统中的文件名后缀没有意义,但是不代表用不到,比如:gcc是一款编译器软件,只能编译后缀为c或者cpp的普通文件,虽然Linux下不用后缀名区分,但是不代表其他Linux系统上运行的软件不需要后缀,又运行软件来决定需不需要后缀。因此Linux系统中如何看待后缀:看用户需求即可。 ![]() 2.权限身份如何理解权限和”人“有关? 这里的"人"不光是某个特定的用户,还是一种权限身份,在Linux系统下,文件和目录的权限管理有三种权限身份划分:
上面的这三种表示的是身份,而上面有讲到用户的分类,可以是超级用户,也可以是普通用户,这两个叫做具体的人,超级用户可以是拥有者也可以是所属组,也可以是其他人;普通用户可以是拥有者也可以是所属组,也可以是其他人。 只有身份+具体的人才能具备权限,如果只有身份,没有具体的人担任,就没有权限可以行使;如果只有具体的人没有身份依然没有权限可以行使。(还是以上面的那个校长为例,张三这个具体的人担任校长这个身份才能进入校长办公室,如果没有这个身份,就不能进行;相反,如果只有校长这个身份而没有具体的人担任,也不能行使校长的权限。) 因此权限和”人“有关,这里的”人“其实就是身份+具体的人。 补充:指令ll列出的文件详细信息中,数字后面的第一个用户名表示的是拥有者,第二个用户名表示的是所属组。 ![]() 当一个用户查看当前文件时,用户名和拥有者,所属组对比,如果存在对应的用户名,说明有权查看,如果都没有说明当前用户的权限身份是其他人,不能查看。 3.文件的权限属性指令ll列出的文件详细信息中,在第一个字符串中除了开头的字符表示文件的类型,剩下的九个字符表示的是文件对应的权限属性。 ![]()
在这九个字符中每三个为一组,分别对应拥有者权限,所属组权限和其他人权限,而每一组中的三个位置又分别是读权限(r/-),写权限(w/-),执行权限(x/-)。 ![]() 每个位置是什么含义都是确定的。 每个位置只有是或者否,具有指定的权限。 4.权限的修改在Linux系统下对权限的修改有两种,一种是对权限属性的修改,另一种是对权限身份的修改。 1.权限属性的修改: 两种方式:
2.权限身份修改:
三.补充内容1.起始权限![]() 以上面图片中的为例,为什么我们创建文件的默认权限是我们所看到的样子?为什么普通文件的权限默认是rw-rw-r--(664)?为什么目录文件的默认权限是rwxrwxr-x(775)? **默认给普通文件的起始权限其实是rw-rw-rw-(666);默认给目录文件的起始权限其实是rwxrwxrwx(777)。至于为什么和我们所看到的默认权限不同,是因为存在权限掩码(umask:0002)**的问题. 权限掩码umask将0002转换成二进制就是000 000 010(这里只用到九位即可),凡是在权限掩码中出现的权限都不会在最终的文件权限中出现。 注意:起始权限和权限掩码之间不是经过减法运算得到的最终权限,而是 最终权限=起始权限&(~umask) 举例: 起始权限: umask: ~umask: 最终权限: 八进制: 因此可以用umask来限定对应文件的最终权限,比如只能写不能读和执行 2.目录权限如果是一个普通文件,所对应的权限比较好理解,其实就是字面意思,读,写,可执行。但是目录文件的读,写,可执行权限有什么意义呢? 目录文件的读,写,可执行权限意义:
这就是为什么目录文件的起始权限是rwxrwxrwx(777)。 3.粘滞位普通用户自己的家目录权限是700,在自己的家目录下创建的文件,别人都看不到!!! ![]() 但是有时候,可能存在多个用户之间想要进行文件的数据共享,如果是在某个用户的家目录下创建的该共享文件,其他用户依然看不到,因此要建立一个共享目录,不在任何一个人的加目录下,所以只能在根目录下。 在根目录下创建一个共享目录shared,创建完后的初始权限为rwxr-xr-x,拥有者和所属组都为超级用户,当其他用户使用该共享目录时以其他人的身份使用该共享目录,但是其他人的权限属性只有r-x,所以先更改一下共享目录的权限属性。 ![]() 更改共享目录的权限属性: ![]() 更改完后其他用户就可以以其他人的身份使用共享目录。 在共享目录下用户zmh01创建了一个文件text.c,可以在该文件中写入和读取: ![]() 而其他用户zmh02在该共享目录下,同样可以看到用户zmh01创建的文件text.c,但是只能读取并不能写入,因为其他人的权限属性只用可读: ![]() 但是又有了新的问题,如果是在共享目录下,其中一个用户创建的文件,如果设置为其他用户的权限属性为r--,那其他用户就只能读该文件,按理来说不能对该文件进行更改和删除,因为其他用户对该文件的权限属性没有w,但是其他用户依然可以删除: 这里用户zmh02将用户zmh01创建的文件删除: ![]() 为什么没有对应权限依然能删除,这是因为一个文件能否被删除删除,并不由文件本身决定,而是由这个文件所处的目录决定! 用户zmh01的文件是在共享目录下创建的,共享目录的权限属性: ![]() 共享目录的其他人的权限属性是rwx,其中前面提到目录的w权限意义是创建,删除和更改,因此在共享目录下,用户之间可以互删各自创建的文件。 如果不想让其他人删除自己的文件,这时候可能会觉得将共享目录的w权限去掉,但是同时也会导致无法在该共享目录下创建文件,这时候就体现不出共享目录的共享特点! 所以真正的解决方法是粘滞位: 粘滞位t是一种特殊的x权限(在其他人的x权限属性上),给目录设置(一般是共享目录),大家可以在目录上进行各自文件的增删查改,只允许文件拥有者或者root用户能删除这个文件,其他人一概不允许。 将共享目录的其他人的权限属性上加上t: ![]() 这时候用户zmh01创建的文件用户zmh02就不能再删除: ![]() 补充一点:根目录/下有一个tmp目录,是唯一一个带粘滞位的目录,可以做为共享目录使用。 ![]() 以上就是关于Linux下的权限问题的讲解,如果哪里有错的话,可以在评论区指正,也欢迎大家一起讨论学习,如果对你的学习有帮助的话,点点赞关注支持一下吧!!! ![]() 免责声明:本内容来源于网络,如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |