2022-2023-1 20201324《信息安全系统设计与实现(上)》第1章

1 本书目标

  • 强化学生的编程背景知识:编程语言->编程开发
  • 动态数据结构应用:C结构、指针、链表、链树
  • 进程概念和进程管理
  • 并发编程:线程的应用
  • 定时器和定时功能
  • 信号、信号处理和进程间通信
  • 文件系统
  • TCP\IP和网络编程

2 关于Unix

  • AT&T Unix
  • Berkeley Unix
  • HP Unix
  • IBM Unix
  • Sun Unix

3 关于Linux

Linux(Linux 2017)是一个类Unix系统。它最初是Linus Torvalds在1991年为基于Intel x86的个人计算机开发的一个实验性内核。Linux包含其他Unix系统的许多特性。在某种意义上,它是由各种最为流行的Unix系统组合而成。

  • Debian Linux
  • Ubuntu Linux
  • Linux Mint
  • 基于RPM的Linux
  • Slackware Linux

4 虚拟机上的Linux

大多数个人计算机用户不愿在同一台机器上同时安装Windows和Linux。通常的做法是在Windows主机内的虚拟机上安装和运行Linux。

  • VirtualBox

  • VMware

    • 安装VMware Player

    • 将Ubuntu安装到VMware虚拟机上

      Ubuntu装有gcc包。安装Ubuntu后,用户可以创建和编译C源文件,并运行C程序

  • 双启动的Slackware和Ubuntu Linux

5 使用Linux

(1)内核

  • 在典型的Linux系统中,Linux内核映像位于/boot目录中
  • Linux内核映像:vmlinuz-generic-VERSION_NUMBER。一个可启动的内核映像有三部分组成:|BOOT|SETUP|linux kernel|
  • 启动程序:GRUB LILO HD

(2)启动

  • 运行级别:单用户模式启动
  • 登录进程:各登录进程在终端打开三个文件流stdin(用于输入)、stdout(用于输出)、stderr(用于错误输出),等待用户登录

(3)执行

  • 用户进程执行命令解释程序sh,后者将提示用户执行命令
  • sh将直接执行一些特殊命令
  • 非特殊命令通常是可执行文件。对于非特殊命令,sh会复刻子进程并等待该子进程终止

6 使用Ubuntu Linux

  1. 在台式机或笔记本电脑上安装Ubuntu时,需要输入用户名和密码来创建一个默认主目录为“/home/username”的用户账户。当Ubuntu启动时,它会立即在用户环境中运行,因为其已自动登录默认用户。
  2. 用户为普通用户,而不是根用户或超级用户,要运行任何特权命令,用户必须输入sudo command,接下来会验证用户的密码
  3. 用户的“PATH”(路径)环境变量设置通常不包括用户的当前目录。为在当前目录下运行程序,用户每次必须输入./a.out。为方便起见,用户应更改路径设置,以包含当前目录。在用户的主目录中,创建一个包含以下代码的.bashrc文件:PATH=$PATH:./。用户每次打开伪终端时,sh都会先执行.bashrc文件来设置路径,以包含当前工作目录。
  4. 在64位Linux下,使用gcc -m32 t.c # compile t.c into 32-bit code生成32位代码。若64位Linux不采用-m32选项,则用户必须安装适用于gcc的附加支持插件,才能生成32位代码。
  5. Ubuntu具有友好的GUI用户界面。许多用户都习惯于使用GUI,以至于产生了过度依赖,这往往需要反复拖动和点击指向设备,从而浪费了大量时间。在系统编程中,用户还需要学习如何使用命令行和sh脚本,它们比GUI要通用和强大得多。

7 Unix\Linux文件系统组织

Unix/Linux文件系统采用树形组织结构。

(1)文件类型

(1)目录文件:一个目录可能包含其他目录和(非目录)文件。

(2)非目录文件:非目录文件要么是“REGULAR”(常规)文件,要么是“SPECIAL”(特殊)文件,但只能是文件系统树中的叶节点。非目录文件可进一步分为:

  • 常规文件:常规文件也称为“ORDINARY”(普通)文件。这些文件要么包含普通文本,要么包含可执行的二进制代码。
  • 特殊文件:特殊文件是/dev目录中的条目。它们表示I/O设备,可进一步分为:
    • 字符特殊文件:字符I/O,如/dev/tty0、/dev/pts/l等。
    • 块特殊文件:块I/O,如/dev/had、/dev/sda等。
    • 其他类型,如网络(套接字)特殊文件、命名管道等。

(3)符号链接文件:属于常规文件,其内容为其他文件的路径名。因此,这些文件是指向其他文件的指针。例如,Linux命令ln -s aVeryLongFileName myLink可创建一个符号链接文件“mylink”,其指向“aVeryLongFileName”。对“mylink”的访问将被重定向到实际文件“aVeryLongFileName”上。

(2)文件路径名

Unix/Linux文件系统树的根节点(用“/”符号表示)称为根目录,或简称为根。文件系统树的每个节点都由以下表单的路径名指定:

/a/b/c/d OR a/b/c/d
以“/”开头的路径名为绝对路径名,反之则为相对于进程当前工作目录(CWD)的相对路径名当用户登录到Unix/Linux时,CWD即被设为用户的主目录。CWD可通过cd(更改目录)命令更改。pwd命令可打印CWD的绝对路径名。

(3)Unix/Linux命令

①常用命令

ls:ls dirname:列出CWD或目录的内容
cd dirname:更改目录
pwd:打印CWD的绝对路径名
touch filename:更改文件名时间戳(如果文件不存在,则创建文件)
cat filename:显示文件内容
cp src dest:复制文件
mv src dest:移动或重命名文件。
mkdir dirname:创建目录
rmdir dirname:移除(空)目录
rm filename:移除或删除文件
ln oldfile newfile:在文件之间创建链接
find:搜索文件
grep:搜索文件中包含模式的行
ssh:登录到远程主机
gzip filename:将文件压缩为.gz文件。
gunzip file.gz:解压.gz文件
tar -zcvf file.tgz .:从当前目录创建压缩tar文件
tar -zxvf file.tgz:从.tgz文件中解压文件
man:显示在线手册页
zip file.zip filenames:讲问价压缩为.zip文件
unzip file.zip:解压.zip文件

其中,我又关于.gzip .tar .zip做了一个辨析Linux中 .gzip .tar .zip的区别

②运行情况

(4)Linux手册页

Linux将在线手册页保存在标准/usr/man目录下。在Ubuntu Linux中,手册页保存在/usr/share/man目录下。手册页分为不同类别,用man1、man2等表示。

man是一个程序,可读取手册页并以用户友好的格式显示其内容。下面是使用手册页的一些例子。

man ls:显示man1中ls命令的手册页。
man 2 open:显示man2中open函数的手册页。
man strtok:显示man3中strtok函数的手册页等。
man 3 dirname:显示man3(而非man1)中dirname函数。

man ls运行结果

如有需要,应查看这些手册页,了解如何使用特定的Linux命令。很多所谓的Unix/Linux系统编程书籍实际上都是Unix/Linux手册页的浓缩版。

8 Ubuntu Linux系统管理

(1)用户账户

与在Linux中一样,用户账户信息保存在/etc/passwd文件中,该文件归超级用户所有,但任何人都可以读取。在表单的/etc/passwd文件中,每个用户都有一个对应的记录行:
loginName:x:gid:uid:usefInfo:homeDir:initalProgram
其中第二个字段“x”表示检查用户密码。加密的用户密码保存在/etc/shadow文件中。shadow文件的每一行都包含加密的用户密码,后面是可选的过期限制信息,如过期日期和时间等。当用户尝试使用登录名和密码登录时,Linux将检查/etc/passwd文件和/etc/shadow文件,以验证用户的身份。用户成功登录后,登录进程将通过获取用户的gid和uid来转换成用户进程,并将目录更改为用户的homeDir,然后执行列出的initialProgram,该程序通常为命令解释程序sh。

(2)添加新用户

我们可以假设:用户想添加一名家庭成员,以便使用同一台计算机。与在Linux中一样,Ubuntu支持“adduser”(添加用户)命令,运行方式如下:

sudo adduser username

它通过为新用户创建账户和默认的主目录/home/username来添加新用户。此后,Ubuntu将在“About The Computer”(关于本电脑)菜单中显示用户名列表。新用户可通过选择新用户名来登录系统。

(3)sudo命令

出于安全原因,Ubuntu禁用了超级用户账户,这可防止任何人以根用户身份登录(其实也不完全是,有一种方法可以,但不方便透露)。sudo(“超级用户执行”)允许用户提升到超级用户特权级别。完成命令执行后,用户进程将恢复到原来的特权级别。为确保能够使用sudo,用户名必须保存在/etc/sudoers文件中。为确保用户能够发出sudo,只需在sudoers文件中添加一行,如下所示:
username ALL(ALL) ALL
但/etc/sudoers文件的格式非常严格。文件中的任何语法错误都可能破坏系统安全性。Linux建议只使用特殊命令visudo来编辑该文件,该命令可调用vi编辑器,但需要检查和验证。

posted @ 2022-09-04 18:07  20201324徐源  阅读(53)  评论(0编辑  收藏  举报