网站空间代理站,怎么做美食的网站,哈尔滨网络优化公司有哪些,h5轻设计平台【Linux系统】—— 初识shell 与 Linux 中的用户 1 Xshell 运行原理1.1 命令行的组成1.2 外壳程序 2 Linux中的用户2.1 两种用户2.2 创建普通用户2.3 用户切换2.3.1 普通-超级2.3.2 超级-普通 3 指令的短暂提权3.1 为什么要提权3.2 sudo 指令3.3 人人都能提权吗 1 Xshe… 【Linux系统】—— 初识shell 与 Linux 中的用户 1 Xshell 运行原理1.1 命令行的组成1.2 外壳程序 2 Linux中的用户2.1 两种用户2.2 创建普通用户2.3 用户切换2.3.1 普通-超级2.3.2 超级-普通 3 指令的短暂提权3.1 为什么要提权3.2 sudo 指令3.3 人人都能提权吗 1 Xshell 运行原理
1.1 命令行的组成 命令行又由用户名、主机名和工作目录组成 # 是提示符表明左边是操作系统的右边是用户的。提示符分为两种$(普通用户)和#(超级用户)。 1.2 外壳程序 实际上我们输出的命令行并不是操作系统给我们提供的功能而是一个叫 “外壳程序” 的东西来给我们提供 读取命令、识别命令 的功能。外壳程序 打印出命令行由该命令行进行我们对应的操作。 操作系统外壳往往会包裹一层软件层我们将其称为外壳程序外壳程序最直观的表现是给我们用户输出一个叫做命令行的东西然后我们用户就可以输入命令。我们输入的命令如「ls」 本质上是一串字符串命令最终会交给外壳程序外壳程序再将命令交给操作系统去执行操作系统执行完后再通过外壳程序把对应的结果返回给用户最后用户就看到「ls」 的执行结果。 我们将这个外壳程序称为命令行解释器Linux 中命令行解释器统称为 s h e l l shell shell 命令行解释器最直观的作用有两个 将使用者的命令翻译给核心kernel处理同时将核心的处理结果翻译给使用者 我们讲个例子方便大家理解命令行解释器 假如现在有个闷骚且害羞的程序员小王用户那 shell 就像媒婆操作系统内核就是你们村头漂亮的且有让你心动的小花。小王看上了小花但是有不好意思直接表白那就让家人找媒婆帮他提亲所有的事情小王都直接跟媒婆沟通由媒婆转达小王的意思给小花。这相当于命令行解释器的第一个功能翻译以便用户进行操作。 小花多次拒绝了小王小王你不死心还希望媒婆再争取一下。但这次媒婆在小花家窗外看见小帅和小花及其家人像一家人一样愉快的吃饭这次媒婆连门都没进就和小王说没戏了变相拒绝了小王的请求。这相当于命令行解释器的第二个功能如果用户输入的指令太离谱命令行解释器就直接拦住命令不交给操作系统以保护操作系统。 但小王还不死心让媒婆再帮忙。因为小王他爸是村长媒婆看在村长的面子上不好不帮。但是媒婆知道这事成不了不想因此砸了自己的金字招牌怎么办呢于是媒婆招了一个实习生让实习生去做。实习生做成了是我慧眼识珠没做成那也没影响。这相当于命令行解释器的第三个功能外壳程序在系统上是以一个进程的方式去实现外壳程序在进行命令行解释时不能挂一旦他挂了就只能重新登录了。所以有新命令到来的时候外壳程序往往都会创建一个子进程让子进程去执行命令如果子进程挂了也不影响。 在 u b u n t o ubunto ubunto 系统下对应的命令行解释器叫 b a t h bath bath 那 bath 与 shell(外壳) 是什么关系呢 相当于王婆与媒婆的关系 也就是说 s h e l l shell shell 是所有外壳程序的统称而 b a t h bath bath 是某个具体的外壳程序 其实 Windows 操作系统对应的图形化界面也是一种外壳程序我们鼠标的每一次点击都会由窗口操作转换为系统级别的任务交给操作系统去执行。我们的手机系统安卓的底层也是 Linux即操作系统内核是 Linux但是他的外部程序是安卓安卓是包裹在 Linux 外的一层 shell。
2 Linux中的用户
2.1 两种用户 在 Linux 中是否有权限是对用户而言设置的Linux 中用户有哪些呢 Linux下有两类用户超级用户(root) 与 普通用户 超级用户可以在 Linux 下作任何事情不受限制普通用户在 Linux 下作有限的事情超级用户的命令提示符是 “#”普通用户的命令提示符是 “$” r o o t root root 用户的权限非常高而普通用户的权限低、受管控
2.2 创建普通用户 我们首先先来学习创建一个普通用户 指令「 a d d u s e r adduser adduser」与「 p a s s w d passwd passwd」 创建普通用户 语法「adduser」 [选项] 用户名 设置密码 语法「passwd」 用户名 也有些系统创建用户后直接让你输入密码不需要该行指令 接着输入两次新密码即可 注意Linux下输入密码不回显 删除用户 语法「userdel」 -r 用户名 删除用户这里就不演示了需要注意的是一定要加上 -r 不然系统会出问题 如何查看我们创建的用户呢Linux 中创建的用户都是放在 home(家) 目录中的我们只需要将目录切换到 home(家) 目录查看即可。 2.3 用户切换
2.3.1 普通-超级 我们先来讲普通用户如何切换至超级用户 直接使用 「su」 命令 即可 回车之后系统要求我们输入密码 此时一个输入普通用户的密码还是超级用户的密码呢 肯定输入的是 root 的密码。现在是从普通用户转换成 r o o t root root 用户要是输入普通用户的密码不人人都能成为 r o o t root root 用户了。这也就是说想要切换成 r o o t root root 用户你必须是管理员。 同样这里的密码输入是不回显的 回车之后就切换至 r o o t root root 用户啦 同时用「su」 命令指令从普通用户切换至超级用户所处的路径不改变 此外 普通用户变超级用户还有一种做法 指令「su」 - 「su」- 与 「su」 的操作方法一模一样这里就不再演示了我们来看看他们有什么区别 区别就是「su」不会让 root 重新登录只是身份的切换最直观的表现就是他不影响我们当前所处的工作目录而「su」 - 让我们以 root 身份重新登录一次它会导致我们用户当前用户所处的路径发生变化 2.3.2 超级-普通 超级用户变成普通用户也是用「su」命令 语法「su」 用户名 / 「su」 - 用户名 超级用户变普通用户是不需要输密码的。为什么呢 r o o t root root 是最高权限用户的密码挡不住 r o o t root root r o o t root root 想干嘛就干嘛。 这里加不加 「-」 的区别与上述是一样的就不再赘述了 3 指令的短暂提权
3.1 为什么要提权 假设我们现在只是普通用户但现在我需要以超级管理员的身份去执行一条权限级别比较高的命令比如安装软件安装软件其本质就是将自己对应的指令写入到特定的目录下/user/bin目录而该目录往往是属于 r o o t root root 的普通用户没有权限拷贝。那怎么办呢这时就需要进行权利的短暂提升。 这里顺便说一下Linux 中安装的所有的程序其实只安装了一份这不过安装的这一份允许大家同时使用。比如普通用户能用「ls」root 用户也能用「ls」也有少部分指令adduser禁止普通用户使用 权限被拒绝 3.2 sudo 指令 短暂提权用到的指令是「sudo」 语法「sudo」 要执行的命令功能进行指令的短暂提权 如我们以 r o o t root root 的身份创建一个文件 文件就创建好了 此时虽然我们还不会看文件的具体属性但是这个文件属于 r o o t root root 还是能够看出来的 「sudo」第一次输入需要密码之后会有十到十五分钟的免密码使用 我们可以看到「sudo whoami」识别出来的用户身份是 root 3.3 人人都能提权吗 像上面普通用户只要用 「sudo」就能变成 r o o t root root 用户(输的是普通用户的密码而不是 r o o t root root 用户的密码)那这样岂不是人人都是 r o o t root root 用户了那 r o o t root root 用户不形同虚设吗还区分普通用户和 r o o t root root 用户干嘛 其实我们正常普通用户输入「sudo」 指令 会报错的 什么原因呢 Linux 系统会提供类似白名单的东西只有在白名单上的用户才能用 「sudo」 进行提权。 白名单就是无条件相信与黑名单无条件拒绝相对应 在默认情况像 Linux 系统是不允许普通用户去执行「sudo」的要执行必须将当前用户添加到一个类似于白名单的东西。白名单路径如下/etc/sudoers 可以看到这个白名单是属于 root 的只有超级用户才有资格修改。 如果想要普通用户执行「sudo」必须用超级管理员的身份修改 sudoers 配置文件
修改方式如下 注推荐用 v i m vim vim 编辑器打开 那可能又有小伙伴问那我只要把我自己加到 sudoers 文件上不还是能随便提权吗。 其实在公司中假设一个小组 10 人共用一台机器只有一个是人是管理员。如果你想将自己的用户加入 s u d o e r s sudoers sudoers 中必须线下真人去争得管理员的同意才行。现在我们能自己修改 s u d o e r s sudoers sudoers那是因为我们现在既是用户又是管理员。只要要线下去找管理员说明人家是真正认可你的所以不用担心人人都是 r o o t root root 的问题即便是白名单中的 r o o t root root 那也是值得信任的。 好啦本期关于 s h e l l shell shell 用户的知识就介绍到这里啦希望本期博客能对你有所帮助。同时如果有错误的地方请多多指正让我们在 L i n u x Linux Linux 的学习路上一起进步