本篇将由五个问题来为大家讲解Linux权限方面的内容
问题一:Linux下的用户分类有哪些?
宏观方面我们可以将Linux中的用户分为两类:
root:超级用户;当然我们windows操作系统也有root用户,比如我们打开某一个应用程序的时候使用管理员方式打开,就是Windows中的root。
普通用户:我们新建的用户,adduser
他们之间的差别主要是:
- root用户基本不受权限的约束
- 普通用户是授权限限制的
这两个用户之间是可以相互切换的,那么应该如何切换呢?
Linux中的所有用户,都需要有密码,无论是root还是其他,即便是多个普通用户,也都要设置密码
我们在普通用户情况下可以使用su或者su -
来切换为root用户:
eg:
whoami查看当前用户使用su进行切换>
这里提示我们需要输入密码(这里的密码是root账户的密码!)
输入验证完成之后我们可以看到目前是已经切换为root账户了>
那我们要退出root账户我们可以使用exit
指令或者ctrl+d
退出root用户>
使用su-切换的时候是直接使用root账号进行登录,他会直接到root账户的家目录中>
当然也可以使用exit或者ctrl+d
进行退出。
root用户也可以切换普通用户 直接su 用户名
切换:
我们可以看到root切换到普通用户是不需要输入密码的。(我是root,我就是这么嚣张,我想变成谁就变成谁)
想退回root账户使用ctrl+d
退回。
当我们想要对一个一条指令进行短暂的提权的时候可以使用sudo +指令
>
这里提示我们输入账户(csdnyyds)的密码>我们输入密码回车之后就会看到这条指令的权限已经是root了>
因为每个系统不一样,一般来说对于一条指令进行提权之后的十几分钟内是不需要输入密码的>
【注意】:
我们使用adduser新建的用户,没有办法执行sudo,系统不信任你,除非将普通用户,添加到信任的白名单中。
把用户添加到信任白名单的方法>
- 使用root账号输入
nano /etc/sudoers
指令,进入编辑器后按↓进行下翻找到这个部分
2.将我们的csdnyyds账户类似于root格式一样加在下面>
- 最后按下ctrl+x退出->按y保存->回车退出
这样我们就把csdnyyds用户添加到系统的信任白名单中了。
问题二:什么叫做权限?
假如我是一名普通的腾讯视频用户,我们就没有权限观看vip电影,当我们成为腾讯视频vip用户就可以观看vip电影。
说白了权限就一句话:“一件事情是否允许被你做”这就是权限。
- 权限认证的是身份 (权限和“人”有关)
- 权限也和事物的“属性”有关。
文件的属性:可读、可写、可执行。
我们创建一个test.txt文件来观察一下他的属性.
Linux中如何看待后缀:看用户需求。
我们再来看文件类型后面的代表什么意思:
通过上面我们可以看到有拥有者、所属组、为什么没有其他人(other)呢?
Linux判断是否具有查看权限可以这样理解>
if(访问者==拥有者) { //拥有者 >可以访问 } else if(访问者==所属组) { //所属组 >可以访问 } else { //other >不能访问 }
先判断是否为拥有者,如果不是再判断是否为所属组,如果还不是那么就是other了。
比如上面的test.txt文件来说:
对于拥有者可写、可读、不可执行;
对于所属组可读、可写、不可知性;
对于other可读、不可写、不可执行;
注:对于root用户来说不受任何权限限制
问题三:见一见没有权限是什么现象(看看就好了)
但是使用root账户可以对该文件随意访问(我是root,我就是这么嚣张,我想查看那个文件就查看那个文件,想修改用户中的那个文件就改那个文件):
问题四:权限的修改问题。
一般来讲可以更改权限的有两种人:拥有者、root。
chmod
**功能:**设置文件的访问权限
【语法】:chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
chmod
① 用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限 用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
我们也可以把rwx转为八进制数比如rwx可以转换为111、r-x可以转换为101。
我们再来通过八进制数来对文件的权限进行修改>
注:两种权限的设置方法掌握一种即可
chown
功能: 修改文件的拥有者
【语法】:chown [参数] 用户名 文件名
这里发现我们无法修改:
原因:我们把一个文件给一个人必须要征求对方的意见。
那么有两种解决方法:
- 给指令进行短暂的提权
- 使用root账户进行修改
我们可以发现对指令进行短暂提权之后就可以进行直接修改。
我们再来使用root账号进行修改>