提示:本篇为学习笔记
文章目录
shell命令以及运行原理
-
广义:Linux发行版=内核+外壳
-
狭义:Linux=内核
如图:
外壳的意义
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
如何理解外壳
-
如:上了大学小明是一名技术宅,跟女孩交流就会紧张脸红(无法正常沟通),但是他喜欢上了数学系的一个女孩小红,刚好小红现在的同学小林和小明是高中同学,于是小明找的小林他想和小红认识,所以小明需要通过小林来与小红沟通。
如图:
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运 行出结果,通过shell解析给用户。
bash与shell是什么?
-
就像哲学是个大类,有中国哲学、西方哲学、伦理学、宗教学、美学、逻辑学、科学技术哲学
-
bash就像哲学,而shell其中的一种
-
shell∈bash
打开进程看
[Myy@Morgan ~]$ ps axj | grep bash
16411 16412 16412 16412 pts/0 17716 Ss 1002 0:00 -bash
16412 17717 17716 16412 pts/0 17716 S+ 1002 0:00 grep --color=auto bash
查看进程
[Myy@Morgan ~]$ ps axj
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 1 1 1 ? -1 Ss 0 0:16 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
0 2 0 0 ? -1 S 0 0:00 [kthreadd]
2 3 0 0 ? -1 S 0 0:00 [ksoftirqd/0]
2 5 0 0 ? -1 S< 0 0:00 [kworker/0:0H]
2 7 0 0 ? -1 S 0 0:00 [migration/0]
2 8 0 0 ? -1 S 0 0:00 [rcu_bh]
2 9 0 0 ? -1 S 0 1:28 [rcu_sched]
查看用户/切换用户
who #查看当前用户
su - #切换为管理员,退出时建议用exit 或ctrl+d 不建议用su - 用户名 经常用会生成大量进程
sudo #临时权限提升,执行完命令后恢复普通身份
eg:[Myy@Morgan ~]$ sudo touch root.txt
[sudo] password for Myy: #这里输入的是用户的密码
注:第一次是用不了,需要配置(添加信任关系)
权限
Linux中的用户类别:
编号 | su - #切换为管理员,退出时建议用exit 或ctrl+d 不建议用su - 用户名 经常用会生成大量进程sudo #临时权限提升,执行完命令后恢复普通身份eg:[Myy@Morgan ~]$ sudo touch root.txt [sudo] password for Myy: #这里输入的是用户的密码css | 功能 | |
---|---|---|---|
1 | 拥有者(owner) | ||
2 | 所属组(group) | 注:其他组无法查看 | |
3 | 其他(other) |
区别
-
拥有者,所属组,other:指是一种角色身份
-
root,普通用户:指一个具体的用户
文件类型
第一个字母
标识符 | 类型 | 用法 | |
---|---|---|---|
”-“ | 普通文件 | 文本,各种动静态库,可执行程序,源文件 | |
”d“ | 目录文件 | ||
”c“ | 字符设备文件 | 键盘与显示器 | |
“b” | 块设备文件 | 磁盘 | |
“p” | 管道文件 | 通信 | |
“l” | 链接文件 | 软链接 |
注:linux下一切皆文件
剩下的九个字母
可读性 r/- | 可写性 w/- | 可执行性 x/- |
---|---|---|
r为yes -为no | w为yes -为no | x为yes -为no |
修改权限
第一种改法
修改文件权限(chmod)
拥有者修改
#u为拥有者 “+”为真加权限“-”为减少权限
[Myy@Morgan 04_21]$ chmod u+x file.txt
所属组修改
#g为拥有者 “+”为真加权限“-”为减少权限
[Myy@Morgan 04_21]$ chmod g+x file.txt
其他修改
#o为拥有者 “+”为真加权限“-”为减少权限
[Myy@Morgan 04_21]$ chmod o+x file.txt
全部修改
#a为全部 “+”为真加权限“-”为减少权限
[Myy@Morgan 04_21]$ chmod a+x file.txt
root不受任何限制
更改文件拥有者(chown)
[Myy@Morgan 04_21]$ chown root test.txt #但是不可以直接给,需要管理权限
#所以我们用sudo或者直接用root
[Myy@Morgan 04_21]$ sudo chmod root file.txt
更改文件拥有组(chgrp)
[Myy@Morgan 04_21]$ chgrp root test.txt #但是不可以直接给,需要管理权限
#所以我们用sudo或者直接用root
[Myy@Morgan 04_21]$ sudo chgrp root file.txt
一次性更改拥有者和拥有组
[Myy@Morgan 04_21]$ sudo chown root:root file.txt #一次性更改拥有者与拥有组
注:
注:权限的位置是确定的而且的两态的所以我们可以这样表示如:rw- rw- r-- ——>110 110 100
如图:
第二种方法
#运用8进制来更改权限
[Myy@Morgan 04_21]$ chmod 777 test.txt #777全部可读可写可执行
[Myy@Morgan 04_21]$ chmod 000 test.txt #000全部不可读不可写不可执行
[Myy@Morgan 04_21]$ chmod 000 test.txt #000全部可读可写不可执行
对目录的修改
理论方面
可读性 r/-(在目录中是是否可以查看) | 可写性 w/-(在目录中是是否可以创建新文件或目录) | 可执行性 x/-(在目录中是是否可以进入目录) |
---|---|---|
r为yes -为no | w为yes -为no | x为yes -为no |
粘滞位(t权限)
如果目录本身对other具有w权限,other可以删除目录下任何的文件 |
---|
如果目录本身的other没有w权限,other不可以删除目录下任何的文件 |
我们发现有个问题当other拥有w的权限时既可以创建也可以删除和删除其他人的文件,我想的是只让他可以新建和写入不让他删除他人的文件,所以我们提出粘滞位:chmod o+t 只能对目录设置,一般限制other权限,对设置粘滞位的目录在该目录下文件只能由拥有者删除和组内
总结:被设置粘滞位的文件
-
超级管理员可以删
-
目录所有者可以删
-
该文件的所有者可以删
创建文件或目录时的默认权限
默认权限:
文件 | 起始权限 |
---|---|
普通文件 | 666 |
目录文件 | 777 |
umask:权限掩码,凡是在umask中出现的,都应在起始权限中去掉
所以可知我们的权限为什么会是[drwxrwxr-x]或[-rw-rw-r--]是因为需要通过权限掩码来操作把其实权限去掉
自定义默认权限
umask 0333 #去掉所有人的写权限和可执行权限