目录
- 权限的概念
- 权限管理
- 默认权限
- 访问权限的相关指令
- 粘滞位
Linux严格意义上说的是一个操作系统,我们称之为核心
但我们不能直接接触核心,我们不擅长和内核交流,它也没法信任你,所以需要通过外壳程序 shell ,shell外壳有命令解释和保护内核的作用
Shell的最简单定义:命令行解释器主要包含:
将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。
Shell具体做法是创建子进程–>让子进程执行命令,父进程继续进行命令行获取
Shell外壳是对命令行解释器的统称,具体又有bash解释器、sh解释器
权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
如果只想用root账号执行一条命令,可以用sudo将权限升级
在了解基础的vim操作后再进行升级
命令行中输入
vim /etc/sudoers
复制root那行,然后把root改为自己的用户名
改名后:wq!强制保存退出
权限管理
文件访问者的分类
文件和文件目录的所有者:u—User
文件和文件目录的所有者所在的组的用户(所属组):g—Group
其它用户:o—Others
ls -l 时我们可以看到文件的信息
所属组:
特殊情况下:一个组里可以只有一个人
一个组里也可以有很多人,用组长名字来对应组的命名
Others不显示是因为没必要显示
第一个字符表示文件类型,在windows中用后缀区分文件类型,在Linux中用第一列第一个字符来区分文件类型
Linux区分类型和后缀无关,和文件是否具有 可执行 权限有关,gcc test.txt无法运行是因为Linux不区分不代表gcc这个软件不区分
文件类型
d:目录文件
-:普通文件,源代码,可执行程序,库等
l:链接文件
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
当我们在显示器上打印了123,那么打印的是数字还是字符?
其实打印的是’1’ ‘2’ '3’字符,字符连在一起在用户看来这就是数字123
printf底层是把数字123转换成’1’ ‘2’ '3’字符,打印整数时需要进行格式化输出
输入的时候输入的是也不是123数字,而是’1’ ‘2’ '3’字符,然后被格式控制的形式转成整数存到a里,键盘和显示器操作时的基本单位都是字符,Linux下一切皆文件,所以键盘和显示器是字符设备文件。
基本权限
r 对文件而言,具有读取文件内容的权限
对目录来说,具有浏览该目录信息的权限
w 对文件而言,具有修改文件内容的权限
对目录来说具有删除移动目录内文件的权限
x 对文件而言,具有执行文件的权限
对目录来说,具有进入目录的权限
“—”表示不具有该项权限
默认权限
目录的起始权限:777
普通文件的起始权限:666
但我们看到的一般不是起始权限,这是因为Linux系统中存在权限掩码,凡是在权限掩码中出现的权限,最终都要在起始权限中去掉
注意:去掉不是简单的±,而是清零指定的比特位
访问权限的相关指令
chmod 设置文件的访问权限
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
用户表示符+/-=权限字符
chmod u+w test.txt
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
三位8进制数字
chmod 664 test.txt
chown 修改文件的拥有者
chown user1 test.txt
chgrp 修改文件或目录的所属组
chown -R user dir
-R 递归修改文件或目录的所属组
umask 查看或修改文件掩码
超级用户默认掩码值为0022,普通用户默认为0002。
umask //查看
umask 004//设置
粘滞位
上面我们知道了,只要有目录的写权限就可以随意删除目录中的文件,和用户是否有这个文件的写权限没有关系,毁灭你,与你无关)
为了解决这个不科学的问题, Linux引入了粘滞位的概念
chmod +t dir
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除