1. 指令的本质
在之前我们了解了一些基本指令,为什么在终端输入一个指令就可以实现一个功能,指令的本质是什么?
内核的设计者,说操作系统是不能让用户直接访问的,设计者为了避免这个情况,就给用户提供了很多用于访问内核功能的接口(比如操作各种各样设备的接口)操作系统提供的接口不好用因为功能是过于单一的想要完成复杂功能的时候就需要组合,也就是进行编程,大佬们也就是对典型的应用功能进行了封装,比如之前的 ls 程序这个程序就是来实现浏览目录功能的,所以我们所执行的一个个指令其实就是一个个程序,你执行一跳指令,就相当于运行了一个程序。
在操作系统内核外面运行了一个程序 shell ,shell 就是一个壳是包裹在内核之外的壳。相当于一个scanf(); 你在操作系统上输入一个 ls 就会捕捉到它 然后去在指定的目录下去找 ls 程序去了。
在我们打开的每一个终端上都运行了一个程序 shell 程序 也就是命令行解释器,它会捕捉用户的输入,然后去找到用户输入所对应的程序,然后运行程序,完成用户想要的功能。
shell 只是一个解释器的统称,而实际对应的程序有很多。
有bash chsh.....
windows的shell就有cmd就是一个命令行解释器
还有powershell
2. 权限相关指令
Linux 是一个多用户的操作系统,可以多个用户同时在系统上操作
权限:权利的限制在Linux上权限主要a限制的是一个用户所能执行的操作,以及对于某个文件
可以进行的操作。
2.1用户对系统操作的权限
Linux上有两类用户:管理员默认存在的root用户,普通用户创建出来的用户都是普通用户其中管理员用户,几乎是在系统上是为所欲为,因此避免长时间操作root用户 rm -rf /*
而普通用户只能进行受限制的操作
他告诉我我要获取root权限才可进行操作
他也告诉我权限不够。
2.1.1 用户操作权限的修改
切换用户:通过切换指定用户来获取指定用户的权限。
su username
我当前就在root用户下了
长时间使用root用户是一件很危险的事情,需要操作的时候要切换用户很麻烦。
sudo 为普通用户的当前的临时操作进行临时提权限
我就看见了我普通用户看不见的root目录下的东西。
但是sudo是需要配置的,用 vi 打开大约在93行位置就可以看到了
2.2用户对文件操作的权限
因为在一个系统中,大部分时间都是在对文件进行操作,但是用户多了对文件进行操作就很容易出现问题。
每个文件都有单独的权限设置,可以用ls -l 进行查看对应文件的权限信息,也可以用 ll 对当前目录下的文件进行查看。
红色的就是对应的文件权限信息,前面-是普通文件 d是目录文件,我们拿出一组权限来举个例子。
这一串权限表示中,包含了所能对当前指定文件进行操作的用户,以及用户能够对文件进行的操作。
对文件进行操作的用户分类:
文件所有者 -u,文件所属组 -g,其他用户 -o。
三类用户对文件进行的操作分类:
可读 -r,可写 -w,可执行 -x。
rwx r-x r-x
所有者 所属组 其他用户
r-可读 r-可读 r-可读
w-可写 x-可执行 x-可进入
x-可执行
rwx是权限对外部的显示,实际存储用的是二进制bit位,rwxr-xr-x 实际存储就是111101101这不是三个权限吗,这不是可以用3位为二进制八进制来简化表示 755。
2.3文件权限的操作指令
umask 查看或设置系统中文件的默认权限(掩码)
掩码取反就是终端文件中的默认权限,也可以用777减去掩码。
这不就110 110 100 也就是664
这个002其实也就是取反就可得到了 000 000 010 ->111 111 101 775跟你说的用777减去002不一样样呀?
其实是终端中创造的文件,默认都会去掉可执行权限,太危险。
umask只能影响未创建文件的权限,不能影响已经创建的文件的权限。
chmod 修改一个文件的权限
chmod [ugoa] -/+ [rwx] file
比如这个chmod u+w hello.txt 就是给文件所有者添加可写权限。
我就给其他用户加了一个写的权限。
我chmod a+x hello.txt a就是给所有用户删除或添加权限,这里我添加了可执行权限也就变绿色了。
chmod [八进制] file chmod 222 hello.txt 意思就是让全部用户只能写这个文件,222 就是010 010 010
也可以把他的权限给修改了。