做网站能干什么,哈尔滨网络推广,网站建设介绍大全,谢岗做网站1.命令行解释器
Linux将命令行解释器称为外壳程序shell
命令行解释器的作用就是将用户输入的指令转换为操作系统能够直接执行的指令。同时将操作系统的反馈转换为用户能看懂的反馈#xff0c;解决了用户和操作系统沟通成本的问题。与此同时#xff0c;命令行解释器还能够拦…
1.命令行解释器
Linux将命令行解释器称为外壳程序shell
命令行解释器的作用就是将用户输入的指令转换为操作系统能够直接执行的指令。同时将操作系统的反馈转换为用户能看懂的反馈解决了用户和操作系统沟通成本的问题。与此同时命令行解释器还能够拦截非法在请求变相保护了操作系统。
我们一般把Linux称为Linux内核而把 Linux和他的外壳程序称为Linux 2.权限
Linux是一个多用户的操作系统能够允许多个用户同时登陆Linux系统进行操作。
而Linux下有两种用户一种是 root 超级管理员另一种就是普通用户。而我们所讲的权限是用来约束普通用户的root用户不受权限的约束能做任何事。
切换用户的操作
su 切换用户默认是切换到root用户要输入密码但是如果是root用户切换到普通用户就不需要输入密码直接切换su命令只是切换用户不改变所处的路径。
su - 用于切换为root用户但是我们一般直接用 su 默认就能切换为rootsu -登录到root之后会跳到 /root 目录。
从root用户退回到普通用户可以用 exit 或者直接ctrl d
如何知道我们当前系统有哪些普通用户 ls /home
如果是普通用户不想切换到root用户但是想用root的神分去执行一些指令可以用 sudo 短暂提权第一次要输入root密码然后接下来的一段时间都不用输入密码了。 普通用户使用sudo 需要在一个文件中进行配置相对于将信任的普通用户加入到白名单中让他可以使用root的身份这个文件就是 /etc/sudoers 我们后续会用vim操作对其进行修改来添加到白名单。但是如果系统检测到你使用sudo执行非法指令会将你从白名单中移除所以要谨慎使用sudo。
前面我们讲的是普通用户的操作受到权限的限制那么权限是什么呢
简单来说权限是用来约束一个人做某件事的同时本质上其实是取决于这个人做这件事的身份。就好比我们常用的音乐软件有的音乐是vip专享的普通用户无法听完整版而vip用户可以听所有的歌曲这就是不同的身份的区别同时权限还取决于我们的目标对象是否具有对应的属性比如我们上面的音乐软件我们可以用它来听歌但是我们却无法用它来看电影不管你是不是vip都是无法使用音乐软件来看电影的这是因为音乐软件本来就不具备看电影的功能或者说是属性应用软件也就是我们上面说的目标对象我们操作的就是音乐软件用这个对象来完成我们想做的事情。
所以文件权限也是一样的文件权限 人角色文件属性
而对于文件而言一共有三种角色分别是拥有者owner、所属组group、其他人other。 我们前面所说的用户与文件权限里的角色并不冲突每个用户在一个文件中都会对应文件的一个角色这两个概念是互补的。
为什么有所属组的角色呢在一些大型项目或者特殊的文件我们是希望与团队共享但是不对外公开的而拥有者只能有一个如果没有所属组而只有其他的话就只能将文件的全部权限都放开了这样一来所有人都有了跟团队的成员一样的权限这就不符合我们预期了。所以所属组的角色的存在是必要的。
文件的权限有三种读权限r写权限w 以及执行权限x。 那么我们如何查看一个用户在一个文件所对应的角色及其权限呢我们之前学的 ls -l 显示能显示文件的详细信息我们可以随便拿一个文件来看一下 上面的第一个字符表示的是文件的类型我们可以看到dir1的类型是d 也就是目录而cc是一个普通文件他的类型表示就是 - Linux的常见文件类型有以下几种
- 普通文件
d目录文件
c字符设备键盘、显示器等文件
b块设备磁盘文件
l链接文件比如快捷方式
p管道文件
Linux下文件类型是由他的第一个字符决定的与文件名的后缀无关所以Linux系统眼中是没有文件后缀的文件后缀也被当成普通的文件名的一部分我们平时用的后缀主要还是用来方便用户识别文件类型。 虽然操作系统不关注文件名但是不代表我们使用的工具对文件后缀没有要求比如gcc/g等。
我们可以使用file指令文件类型 file 文件名
文件类型后面的9个字符表示的就是文件的权限每三个字符为一组第一组表示的是拥有者的权限顺序都是 rwx 对应的权限如果有就是对应的缩写如果没有就是 - 来表示。比如cc的拥有着的权限就是读权限和写权限没有执行权限。 而其他字符的意思也很容易
对于文件的角色只需要表明拥有者和所属组就够了除了这两个都是其他。 文件的权限的操作
了解了文件权限我们还要学会操作文件权限。
文件权限的操作符是chmod
语法 chmod 角色u拥有者g所属组o其他/-权限rwx 文件名
首先我们要明确修改文件属性只能由所属者或者root来操作
假如我们要把上面的 cc 的所属者权限加上执行的权限那我们就可以这样写 chmod ux cc 或者如果我们想要对一个文件的多个角色的权限进行操作中间可以用逗号隔开 chmod u-rwx,g-rwx,o-rwx cc 对于有的权限如果用减法的话就去掉该权限了而对于本来就没有的权限使用减法减去也不会有任何操作加法也是类似。
还要注意一点的就是当用户同时是拥有者和所属组的时候查看权限的时候会从左往右匹配匹配到了就停下来也就是说这个用户只会匹配到拥有者的权限而不会匹配到所属组的权限。 如上虽然用户既是拥有者也是所属组但是他只有拥有着的权限用cat去访问文件时报了一个错 Permission denied 就是没有该权限的意思。
看待文件的权限我们还有一种表示法就是把权限的有当作二进制的1而没有该权限就是 0 这样一来一个角色的权限就可以用三位的二进制数来表示也可以用一个八进制数来表示 那么我们操作文件权限的时候也是可以有八进制的数字来操作的比如我们可以直接 chmod加三个八进制数来重新设置文件的权限
同时我们对于权限的增加和减少也可以用/-八进制数来表示 上面是文件的权限操作但是除了对权限进行修改我们还经常需要修改文件的角色也就是修改拥有者和所属组。按照我们的正常逻辑我们要将一个文件的拥有者或者所属组修改为其他的用户这应该要经过别人的同意才能合法转让。但是我们要意识到我们不可能总是让别人跟我们一起上线操作仅仅为了转让一个文件或者修改所属组这时候就可以用到 sudo 提权来进行角色的修改。root是超级用户他想怎么来就怎么来所以我们普通用户可以用 sudo 短暂提权来完成文件角色的修改。
文件角色修改的指令
修改拥有者 chown
sudo chown 新的拥有者 文件名
同时chown也可以修改所属组
sudo chown 新的拥有者新的所属组 文件名 而修改所属组还有一个指令就是 chgrp
sudo chgrp 新的所属组 文件名 目录的权限操作与普通文件的权限操作方法也是一样的。
但是目录的权限代表的意义与普通文件不一样 我们进入一个目录需要目录的 x 权限创建或删除该目录的文件需要 w 权限要显示目录的文件ls需要 r 权限 为什么文件和目录创建时的权限是我们所看到的样子 Linux规定目录的初始权限是777这很容易理解因为目录一般都需要可读可写可执行的权限而普通文件的初始权限是 664 。
但是我们上面看到的文件和目录的权限并不是 664 和777 这是为什么呢这是因为在初始条件之下系统默认配置好了一个umask权限掩码权限掩码的作用就是凡是在权限掩码中出现的权限都要在初始权限中去掉。我们可以输入umask来查看当前的权限掩码是多少 umask也是用八进制来表示的第一位的0表示这是一个八进制的数后面三位则表示要去掉的权限比如上面的0002最后一位的 2 表示要去掉其他的 w 权限
这就造成了上面我们所看到的权限的。我们的权限中的4表示r权限2表示w权限1表示x权限其他的都是这三个数字组合形式比如6 就是 r 和w权限。 我们不要将上面的权限的去除简单理解为减法实际的运算是这样的 初始权限 (~umask) ,因为umask表示的是从初始权限中去掉的权限那么我们就可以将 umask 转换为二进制取反其中为1的位就变成了0为0的位就变成了1再通过按位与操作将取反之后为0的位对应的初始权限的1变成0.
umask也是可以手动设置的。 umask 八进制数(0xxx) 粘滞位
我们知道Linux是一个多用户的系统在有些时候我们需要一个公共的目录下进行团队共享文件或者进行临时文件的增删查改。
那么这个公共目录由谁创建呢普通用户的默认权限就是只能在自己的家目录下创建目录在其它用户的家目录和根目录下是没有 w 权限的。而对于这种公共目录我们一般由root创建在根目录下创建一个公共的目录再将该公共目录的所有权限rwx都放开这样一来所有普通用户都能在这个目录下创建和增加删除文件以及查看文件了。这时候创建者和所属组都是root其他普通用户都是other。
虽然这个目录是公共的但是不代表在这个目录下的每一个文件都是公共的因为在公共目录下可能也会有不同的分组合作等等所以说这个目录下的文件并不都是所有人可操作的有的文件不想让其他人读写执行我们就可以把other权限设置为000。
但是这样一来即使我们不能读一些别人没有放开权限的文件但是这个公共目录的所有权限是对我们放开的也就是说我们能够对目录下的文件进行创建和删除。也就是说我们可以随意删除别人的文件因为公共目录的 w 权限我们是有的。
这样一来就必须有一种策略来制止这种恶意的删除但是我们能够直接把这个公共的目录的 w 权限给去掉吗如果没有 w 权限那么别的用户就无法在这个目录下创建文件了这个目录的存在也就没有任何意义了。我们要能够让所有人都能在公共目录下创建文件同时每个用户只能删除自己拥有的文件而不能随意删除别人的文件。这时候我们就可以给公共目录设置粘滞位粘滞位是权限的一种特殊情况。
粘滞位的设置方法 chmod t 公共目录名 粘滞位只能由root设置因为公共目录一般是root创建的。 当我们设置好粘滞位之后权限中other的w权限就变成了 t 这就是粘滞位。粘滞位是自动加在other权限上的
设置好粘滞位之后每个文件只能由他的拥有者或者root或者是目录的拥有者一般是root来删除了其他用户无法删除别人的文件。