实验中出现的问题:
问题一:
加用户组的时候,直接复制了,课程中的代码 ,但是创建失败了。调查后发现原因是因为本地的系统中没有shiyanlou 这个用户,所以创建用户分组失败了。
实验一Linux 系统简介
Linux 就是一个操作系统,就像已经了解的 Windows(xp,7,8)和 Mac OS 。
如图,这是操作系统在整个计算机系统中的角色。
我们的 Linux 主要是系统调用和内核那两层。当然直观地看,我们使用的操作系统还包含一些在其上运行的应用程序,比如文本编辑器、浏览器、电子邮件等。
操作系统始于二十世纪五十年代,当时的操作系统能运行批处理程序。批处理程序不需要用户的交互,它从文件或者穿孔卡片读取数据,然后输出到另外一个文件或者打印机。
二十世纪六十年代初,交互式操作系统开始流行。它不仅仅可以交互,还能使多个用户从不同的终端同时操作主机。这样的操作系统被称作分时操作系统,它的出现对批处理操作系统是个极大的挑战。许多人尝试开发分时操作系统, 其中包括一些大学的研究项目和商业项目。当时有个项目叫做 Multics ,它的技术在当时很具有创新性。 Multics 项目的开发并不顺利,它花费了远超过预计的资金,却没有在操作系统市场上占到多少份额。而参加该项目的一个开发团体——贝尔实验室退出了这个项目。他们在退出后开发了他们自己的一个操作系统—— UNIX 。
UNIX 最初免费发布并因此在大学里受到欢迎。后来,UNIX 实现了 TCP/IP 协议栈,成为了早期工作站的操作系统的一个流行选择。
1990 年,UNIX 在服务器市场上尤其是大学校园中成为主流操作系统,许多校园都有 UNIX 主机,当然还包括一些研究它的计算机系的学生。这些学生都渴望能在自己的电脑上运行 UNIX 。
Linux 本身只是操作系统的内核。内核是使其它程序能够运行的基础。它实现了多任务和硬件管理,用户或者系统管理员交互运行的所有程序实际上都运行在内核之上。其中有些程序是必需的,比如说,命令行解释器(shell),它用于用户交互和编写 shell 脚本。
1992-1993 年,Linux 内核具备了挑战 UNIX 的所有本质特性,包括 TCP/IP 网络,图形界面系统(X window )。
实验二 基本概念和操作
相对于现在的 Windows 系统,UNIX/Linux 本身是没有图形界面的,我们通常在 UNIX/Linux 发行版上看到的图形界面实际都只是运行在 Linux 系统之上的一套软件,类似 Windows95 之前的 Windows 的图形界面实则也只是运行在 DOS 环境的一套软件。
Shell 是指“提供给使用者使用界面”的软件(命令解析器)。Shell 是可以接受用户输入命令的程序。
终端的概念:
通常我们在使用 Linux 时,并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成的,在图形界面下为了实现让我们在一个窗口中完成用户输入和显示输出,Linux 系统还提供了一个叫做终端模拟器的程序(Terminal)。
Ubuntu 终端默认使用的是 bash。
快捷键
(1) tab 补全命令,补全目录、补全命令参数
(2)Ctrl+c 强行终止当前程序
(3)Ctrl+d 键盘输入结束或退出终端
(4)Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行
(5)Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
(6)Ctrl+a 将光标移至输入行头,相当于Home键
(7)Ctrl+e 将光标移至输入行末,相当于End键
(8)Ctrl+k 删除从光标所在位置到行末
(9)Alt+Backspace 向前删除一个单词
(10)Shift+PgUp 将终端显示向上滚动
(11)Shift+PgDn 将终端显示向下滚动
实验二作业:先使用如下命令安装:
觉得这字体不好看,那么你还可以使用默认已经安装的一个命令printerbanner
:
实验三 用户和权限管理
1 .查看用户
打开终端,输入命令:
在 Linux 系统里, root
账户拥有整个系统至高无上的权限,比如新建和添加用户 。
一般我们登录系统时都是以普通账户的身份登录的,要创建用户需要 root 权限,这里就要用到 sudo
这个命令了。不过使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo
用户组。shiyanlou 用户也属于 sudo 用户组(稍后会介绍如何查看和添加用户组)。
现在我们新建一个叫 lilei
的用户:
2.用户组
在 Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源。
在 Linux 里面如何知道自己属于哪些用户组呢?
查看 /etc/group
文件
这里 cat
命令用于读取指定文件的内容并打印到终端输出,后面会详细讲它的使用。 | sort
表示将读取的文本进行一个字典排序再输出,然后你将看到如下一堆输出,你可以在最下面看到 shiyanlou 的用户组信息。
你可以使用 grep
命令过滤掉一些你不想看到的结果:
将其它用户加入 sudo 用户组
默认情况下新创建的用户是不具有 root 权限的,也不在 sudo 用户组,可以让其加入 sudo 用户组从而获取 root 权限:
当然也可以通过 sudo passwd shiyanlou
进行设置,或者你直接关闭当前终端打开一个新的终端。
然后你再切换回 lilei 用户,现在就可以使用 sudo 获取 root 权限了。
3.删除用户和用户组
使用 --remove-home
参数在删除用户时候会一并将该用户的工作目录一并删除。如果不使用那么系统会自动在 /home 目录为该用户保留工作目录。
4.Linux 文件权限
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
Unix/Linux 系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux 系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。
在 Unix/Linux 中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
使用较长格式列出文件
补充一下关于 ls
命令的一些其它常用的用法:
- 显示除了
.
(当前目录)和..
(上一级目录)之外的所有文件,包括隐藏文件(Linux 下以.
开头的文件为隐藏文件)。
- 显示所有文件大小,并以普通人类能看懂的方式呈现:
-
变更文件所有者
切换到 lilei 用户,然后在 /home/lilei 目录新建一个文件,命名为 iphone13
修改文件权限
切换到 lilei 用户,尝试写入和读取操作,可以看到 lilei 用户已经不能读写这个 iphone11 文件了:
此时出现问题:
经常使用没有权限的用户操作就会导致出错。
解决方案:
赋权限
实验三课后作业: