问题:我们操控电脑的时候是直接与操作系统交互的吗?
——答案是否定的,用户并不是直接访问操作系统的。
我们去商店买东西,我们先把钱给收银员,收银员在把“确认收到”的信息传给我们,才完成购买的流程。操作系统就好比收银台,如果我们要把钱直接放在收银台,就还得进行相应的操作,流程将变得非常繁琐,故我们一般并不是直接与操作系统交互的。
不直接交互的原因:1.需要专业知识;2.人是容易犯错的,但操作系统难容错。
故系统设计者不会让用户直接操作 操作系统的。
shell运行原理
shell外壳程序为用户与操作系统之间的交流媒介,用户操作的是外壳shell。
外壳程序的意义
- 作为用户与操作系统中间的软件层
- 能对操作系统起一定程度的保护作用
Linux下的shell 为bash。
权限
root :最高权限 ,只有一个
普通用户 :受权限约束,可以有多个
身份切换
su -
执行之后输入root用户的密码。
whoami
查看当前用户
Ctrl + D
可以退出root
su 用户名
在root权限下,可以直接访问某个用户。在非root权限下,需要输入对应用户的密码才能登录该用户。
文件及权限
Linux下,不以文件后缀来区分文件类型。下图中前缀的一长串字符**,以前面的第一个字符来区分文件**。同样的文件,取不同的后缀仍可以执行。(区别于windows,win下有严格的后缀识别作为区分)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-puDqNrjX-1660118086474)(https://s2.loli.net/2022/07/20/Z2kUlupNeiGOW5c.png)]
常用文件前缀
d
目录-
普通文件p
管道文件b
块设备c
字符设备l
链接文件
用户类别
1.user拥有者
字面意思,当前文件的拥有者。
2.group所属组
默认所属组即为拥有者。
3.other其他
9列,3块 分别对应 owner , grp , other
rwx
表述一个文件的权限 :读写执行权限
每一位可以用0/1 表示,有3位,故可以用一个八进制表示。有3组,就可以用3个八进制表示
上文的一串字符,去掉第一个字符,后面每三个一组,分别代表了拥有者,所属组,other 。
*如果用户为拥有者,就不再看是否为所属组。
当有文件需要只给部分用户看,该如何操作:
-
改属性
chmod 用户表示符+/-=权限字符
u
拥有者g
所属组o
othera
all 包含上面所有当前file1.c权限全空
给其添加
用户
读写执行,组
读写,其他
只读chmod u+rwx file1.c chmod g+rw file1.c chmod o+r file1.c
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TARjmON0-1660118086478)(https://s2.loli.net/2022/07/20/qKcoWuyZwiAP62E.png)]
-
改人
需要提升权限至信任列表(需root)。
-
chown [用户名] 文件
把某个文件的拥有者改为其他用户。(需要root权限)
sudo
以root权限,执行一次后面紧接的代码把某个其他用户的文件的拥有者改为自己,用
sudo chown...
后加该用户的密码。 -
chgrp
更改所属组
-
常见权限问题(面试问题)
-
目录权限
进入一个目录需要什么权限?——需要 -x权限
查看当前目录的文件—— -r权限
创建文件夹/文件—— -w权限
-
umask
目录默认起始权限:777
普通文件默认起始权限:666
但是下图中,创建后的文件夹权限并不是777(全部为1),文件并不是666(不可执行)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YbOcyuZK-1660118086479)(C:/Users/tx/AppData/Roaming/Typora/typora-user-images/image-20220809163931585.png)]
所以 起始权限 ≠ 最终权限 ,因为起始权限到最终权限间,还有权限掩码umask的存在。
凡是在umask中出现的权限,都不会在最终权限中出现。在终端输入
umask
查看掩码:[yicu233@VM-8-16-centos 1Access]$ umask 0002
这里umask的第一位暂时不需用到,我们只看后三位:002。
对起始权限的掩码运算:
7 7 7 0 0 2 ----- 7 7 X 根据umask中出现的权限不在最终权限中出现,掩码带有1的,起始码的1将会变0。 相当于 &~ 运算 7与2的2进制运算:7 1 1 1 2 0 1 0 ----- 5 1 0 1 所以最终权限: 7 7 7 0 0 2 ----- 7 7 5 775 -> 111 111 101 -> 文件夹d rwx rwx r-x 正好对应我们创建出来的文件夹所看到的权限 同理文件的最终权限: 6 6 6 | 6 1 1 0 &~运算 0 0 2 | 2 0 1 0 ----- ----- 6 6 4 | 4 1 0 0 664 -> 110 110 100 -> 文件- rw- rw- r-- 同样也对应我们创建出来的文件所看到的权限
umask的设置
语法:
umask 数字
,即可改变mask的值。*不可写的文件的可以被删,因为该文件是否被删取决于其路径的文件夹是否能被写。
-
粘滞键
现在需要一个功能:
- 当多用户共享一个目录,需要在该目录下,进行读写创建删除文件
- 但只能删除自己的,不能删除别人的
(root)[other不可写]dir - (属于a)[]AAA - (属于b)[]BBB - 这样的设置,会发现,如果 我们以b的身份进入root所属的dir,被分为了other身份 而other不可写,所以我们无法删除自己的文件夹AAA 及 b的文件夹BBB 如果将other设为可写,我们就能删除自己的文件夹AAA,但同时B以other进来时,同样也能删除我们的文件夹 这样就无法满足所需功能
粘滞位
在文件夹的写权限上,可以设置为
t
。这个权限就能满足上述需求,在公共目录下,其它用户可以创建文件,但只能删自己的目录。drwxrwxr-x 2 yicu233 yicu233 4096 Aug 10 15:37 dir ↑ [yicu233@VM-8-16-centos 1Access]$ chmod o+t dir drwxrwxr-t 2 yicu233 yicu233 4096 Aug 10 15:37 dir ↑
粘滞位只能为other设置。
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
- 超级管理员删除
- 该目录的所有者删除
- 该文件的所有者删除