目录
五、Linux中如果我们要进入一个目录,需要什么权限?(面试题)
七、思考:为什么在一个目录里普通用户能删掉别人的文件(包括root目录下),合理吗?
前言
本章主要是讲解Linux中的文件权限以及用户的创建和切换用户的指令,以及如何修改文件的用户权限等知识点。
一、指令补充
mv指令补充
指令:mv 文件名 文件名 ,代表直接更改文件名。
1.在服务器中有关新建用户等操作
新建用户
指令:adduser 【用户名】
该指令需要在root用户下或者使用sudo进行。
给新建的用户进行密码修改
指令:passwd 【用户名】
与上面的新建用户要求相似
可以发现我们在设置密码在输入时,是不会显示出来的,所以只要输入即是成功,且需要输入两次密码。
给新建的用户赋予高级权限(白名单)
我们新建一个用户时,权限是非常低的,像yum等指令是无法使用的,但我们可以给用户设置白名单,文件的路径在root下的 /etc/sudoers 里,需要用vim进行添加,进入文件里只需要按照以下方式进行添加即可([用户名] ALL=(ALL) ALL),如希望sudo时候不需要输入密码只需要将最后一个ALL
改为NOPASSWD:ALL(不推荐)。
这里要注意的是使用sudo时输入的密码是普通用户的密码,不是管理员root的密码。
正常情况下sudoers默认是只读状态,所以进行修改是会失败的,只需要确保是esc的状态,
按下 :再输入wq!可强行保存退出。
删除用户
查看可使用用户
在删除用户前我们可以先看,可使用的用户有哪些,有两种指令
第一种:
指令:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1
第二种:
在根目录下,指令:ls /home
删除用户指令
指令:userdel [用户名] (可以删除指定的用户账户及其相关文件)
删除完成后,我们 /home 检查发现之前保留zhangsan的文件根目录,那是否真的删除成功了呢,那我们可以使用第一种查询方法进行查看:
可以发现这里已经不存在zhangsan的用户名了,接下来就要删除 zhangsan 的根目录了。
删除用户以及用户的主目录
指令:userdel -r [用户名] (这将删除用户账户以及其在/home
目录下的主目录和邮件目录。)
2.用户切换
root换普通用户
指令: su 【用户名】
这里有两个点需要注意:
1.红线部分可以发现用户已经切换成zhangsan的了。2.切换用户时目录是上一个用户的当前位置。
(两点都需要注意)
普通用户 切换到 root账户
指令:su / su -
当普通用户切换到root账户时需要输入root账户的密码才能登入进去的,su / su -区别在于su是直接进入当前位置,su - 是进入初始位置,也就是root的初始登入的位置。
3.普通用户享用高权限操作指令
当我们不想麻烦的切换root账户时,但是又想以root身份去执行一个工作,我们可以在前面加个sudo,sudo可以让我们享有root账户的高级权限。
指令:sudo 【指令】,如:sudo touch normal.txt
三种情况:
1.未加sudo的情况
读权限不够。
2.加sudo的情况(用户未添加进白名单中)
提示未添加进sudoers文件名单中。
3.加sudo并且已添加进sodoers白名单中
输入普通用户密码操作成功。
4.修改文件的读、写、执行权限(简易版)
指令:chmod a+r/a+rwx 【文件名】
a:表示所用人
r:表示读
w:表示写
x:表示可执行权限
待会会给大家一一解释清楚有关权限的知识。
二、文件权限(重点)
在Linux中存在三种 “人” ,一种为拥有者,第二种为所属组,最后一种为 other(其他),文件中主要显示拥有者、所属组,当两者都不属于时才属于other组。
从上图可大致理解出文件相关权限的知识,那接下来我会详细告诉大家该如何去修改权限。
在指令补充那我们可以使用chmod去修改一个文件的权限,那么说到底一个文件的权限谁能去修改?
1.文件的拥有者 2.root
从上图可知道文件的权限分为拥有者,所属组,other这三分别对应的是 u、g、o 三个后面我们需要修改他们权限时就用上他们对应的字母,还有一种是对所有人进行修改是使用 a 。
u -- user , g -- group , o -- other , a -- all
这些权限的缩写区分一定要记住。
一、简单权限修改
1.给用户权限进行修改
指令:chmod u-r,u+w [文件名]
u-r 代表拥有者去除读权限,u+w 代表拥有者加写权限
2.给多个用户权限更改
指令:chmod u-w,g-w [文件名]
u-w 代表拥有者去除写权限,所属组去除写权限
3.给所有人删除权限
指令:chmod a+w [文件名]
a+w 代表所有人都添加写权限
4.给所有人删除所有权限
指令:chmod a-rwx [文件名]
二、修改权限的第二套做法
我们由此可以发现 权限 = 用户角色(具体的人)+ 文件权限属性 ,因为每个角色对应一层权限。
1.给文件的拥有者进行修改
指令:chown [用户名] [文件名]
有时候进行修改时,可能会出现不允许的情况,只需要强行sudo即可。
2.给文件的所属组进行修改
指令:chgrp [所属组] [文件名]
与拥有者修改大致相同。
那有没有对other进行修改呢?答案是:没有!上面有说,除了用户名和所属组,其他都是other用户。
3.文件权限修改(二)
我们已经知道权限是由 rwx 组成,由二进制位表示,如 r-- 为 100 是 4,rwx 为 111 是 7。
指令:chmod 444 abcd.txt
三、文件类型
我们见了这么久权限,我们会很疑惑第一个 - 是有什么用,或者文件是目录时 d 又是什么?
我们使用Windows时区分文件类型是使用后缀名区分文件类型的,但 Linux 中不是使用后缀名区分类型的(但也不是说Linux不用后缀表示)
那Linux是用什么区分的?就是文件的第一个属性区分的。
四、Linux中如何理解 x (可执行权限)?
可执行权限 vs 可执行
能执行的文件 = 具有可执行权限 + 是一个可执行文件
五、Linux中如果我们要进入一个目录,需要什么权限?(面试题)
进入一个目录,我们需要一个 x 权限!
那目录中的 r、w 权限有什么作用?
六、umask值,文件创建时的默认权限
在Linux中创建文件的时候,为什么好像有默认权限?为什么普通文件起始权限是0664(去掉x的),或者是0775(包含x的)。
664、775如何理解?rwx代表二进制位,rw-代表110也就是6,rwx代表111也就是7,所以666、777就是这么来的。
在Linux中存在umask权限反码值,默认是0002,可直接输入umask指令查看。
创建去掉x的普通文件时,起始权限是0666。
创建包含x的普通文件时,起始权限是0777。
通过umask权限反码值,得到最终的权限。
七、思考:为什么在一个目录里普通用户能删掉别人的文件(包括root目录下),合理吗?
删除一个文件和目标文件权限有关系吗?没任何关系!
那和谁又有关系呢?和所在的目录权限有关系!!
与目录中的 r w x 权限有关系。
八、实现不同用户的文件共享
从第七点我们发现,别的用户可以进入到我们的根目录下的文件进行删除或者修改,那我们想实现文件共享该怎么办呢?在Linux中根目录下有一个tmp目录可以实现文件共享,且不被对方删除。
我们可以发现tmp目录是全权限分开的,所以在里面放文件时,所有人都可以看见,但里面的文件权限控制归拥有者控制的,那刚刚说了tmp目录是所有权限分开,会导致别人删除我的文件,那这问题该如何解决呢?
方案一:不给 tmp 目录添加 w 权限
可行吗?不可行!!
虽然解决了不给别人删的权力,但是也新建不了文件了。
方案二:Linux新增加了一个权限叫 t 。
t 是粘滞位:给目录中的 other 设置了一个权限位,具有 x 的意义,同时也进一步对目录权限进行特殊限定。
tmp目录中里面的文件,只有 root 或者文件的拥有者有权限去删除文件,其他人一概不允许。
总结
本文主要是解释了Linux权限相关的内容,以及指令的用户的新建和切换用户,后面会带大家学习Linux中各种工具的使用。