写在前面
这篇文章,我们来聊一聊Linux下权限相关的知识,我打算从这几个方面展开:
1. 认识Linux下用户的分类
2. 什么叫做权限
3. 没有权限会是什么样子
4. 如何修改权限
5. 其它重要的问题
那么废话不多说,我们现在开始。
目录
写在前面
1. Linux下用户的分类
如何切换用户
如何提高用户权限
2. 什么叫做权限
3. 如果没有权限是什么样的
普通文件:
目录文件:
4. 权限如何修改
6. 第一个问题:文件的起始权限
7. 第二个问题:目录的权限
8. 第三个问题:粘滞位
总结
写在最后:
1. Linux下用户的分类
Linux下有两种用户:
1. root(超级用户)
2. 普通用户
我们adduser添加的就是普通用户。
他们有什么区别呢?
root 基本不受权限的约束,而普通用户受权限的约束。
如何切换用户
我们如何切换两个用户呢?
Linux下所有的用户都有自己的密码,
我们可以通过su/su- 指令切换用户:
例:(切换到root用户)
输入的密码是root的密码,
另外,su- 指令是切换到root的根目录下,su 还是在当前的目录下面。
我们可以用Ctrl d这个快捷键回到之前的用户:
当然,直接输入 exit 也是一样的效果。
如何提高用户权限
我们可以通过sudo指令可以临时提升用户的权限,(持续时间可能十几分钟不等)
例:
我们可以观察到,在指令前面加上sudo,用户就临时切换成了root
这里输入的密码是当前用户的密码,
你可能会问:为什么我输入我的用户密码却能获得root的用户权限?
实际上,我们需要将该用户添加到系统信任的白名单才能享受sudo指令,
至于如何添加,我会在讲Linux工具的时候介绍,如果有兴趣的话,可以自己上网搜教程。
2. 什么叫做权限
权限,其实就是一件事情 是否允许你去做。
权限的认证是身份还有事物的属性,我们拿一个文件举个例子:
比如说我们刚刚建立的test.txt文件和目录:
最前面的这个:
是代表文件的类型:
- 代表普通文件(文本、可执行文件等等)
d 代表目录文件
b 代表 块设备文件(磁盘文件)
c 代表字符设备文件(键盘、显示器)
p 代表管道文件(用来通信的)
我们这里主要讨论普通文件和目录文件。
补充:(文件类型)
Linux系统中的文件后缀名是没有直接意义的(系统内核不靠这个区别文件类型)
(注:只是系统内核,不代表Linux下的一些软件他不需要后缀名)
(比如说gcc编译器,他编译的时候还是需要你是.c的后缀名)
我们继续来看权限:
Linux中表示文件权限的是这个地方的字符,
他们三个为一组,分别代表拥有者,所属组,other的权限,
这些字符的意思分别是:
r 代表读权限
w 代表写权限
x 代表执行权限
- 代表没有这个位置的权限
另外:
文件的这两个地方分别代表的是该文件的拥有者和所属组。
3. 如果没有权限是什么样的
普通文件:
这里,我们重定向了一句话进test.txt文件中:
并查看了test.txt 文件的内容,
如果这个文件没有写权限会如何?
我们发现当该文件没有写权限的时候,我们的追加重定向就失败了
没有追加这句话进文件,Permission denied 了。
如果没有读权限呢?
我们可以发现,cat 指令也用不了了,无法读文件了。
当我们给test.txt 加上可执行权限:
我们甚至也可以执行该文件,当然,啥事都不会发送就是了。
这就是文件的权限。
如果我们用root用户操作呢?
来试试:
我们可以看到,这个文件啥权限都没有
但是root想干啥就能干啥,这就是超级用户。
目录文件:
我们接下来测试一些目录文件的权限:
我们发现,当目录没有可执行权限的时候,我们就进不去了
如果没有写权限呢:
我们发现目录文件没有写权限的话,我们在目录里无法创建新文件
如果没有读权限呢:
我们发现没有读权限,可以查看文件的内容,
但是我们无法查看该目录里面有什么文件。
当然,root 用户无论如何,什么功能都能使用。
这里补充一点,other的权限就是指其他用户来访问我的文件是后的权限。
4. 权限如何修改
我们可以使用chmod指令
直接看例子:
给我自己增加读权限:(chmod u+r 文件名)
给所属组增加写权限:(chmod g+w 文件名)
给other增加可执行权限:(chmod o+x 文件名)
通过这三个例子,
我们可以观察出:u就是用户,g就是所属组,o就是other,+就是添加权限
取消所有人的权限:(chmod a-rwx 文件名)
总结:a 是所有人,-就是取消权限。
补充,我们还能这样理解权限:(通过八进制的形式)
实际上,每个位置的权限都是用二进制来表示的:
比如:(我们的test.txt文件)
他的权限现在是 rw- rw- r--
用二进制表示就是:110 110 100
转换成八进制就是:6 6 4
例:(通过数字修改权限)
我们当然也可以:
这就是权限的修改,
实际上我们还可以修改文件的拥有者和所属组,
分别是:
chown + 用户名 + 文件名
chgrp + 所属组名 + 文件名
选项 -R 可以修改目录。
这里我就不演示了,感兴趣的话可以自己去试试。