问题:我们操控电脑的时候是直接与操作系统交互的吗?
——答案是否定的,用户并不是直接访问操作系统的。
我们去商店买东西,我们先把钱给收银员,收银员在把“确认收到”的信息传给我们,才完成购买的流程。操作系统就好比收银台,如果我们要把钱直接放在收银台,就还得进行相应的操作,流程将变得非常繁琐,故我们一般并不是直接与操作系统交互的。
不直接交互的原因:1.需要专业知识;2.人是容易犯错的,但操作系统难容错。
故系统设计者不会让用户直接操作 操作系统的。
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 链接文件字面意思,当前文件的拥有者。
默认所属组即为拥有者。
9列,3块 分别对应 owner , grp , other
rwx表述一个文件的权限 :读写执行权限

每一位可以用0/1 表示,有3位,故可以用一个八进制表示。有3组,就可以用3个八进制表示

上文的一串字符,去掉第一个字符,后面每三个一组,分别代表了拥有者,所属组,other 。
*如果用户为拥有者,就不再看是否为所属组。
改属性
chmod 用户表示符+/-=权限字符
u 拥有者
g 所属组
o other
a 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权限
目录默认起始权限: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 数字 ,即可改变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),则该目录下的文件只能由