2023年12月1日发(作者:)

linux的认识和理解

⼀、Linux操作系统与不同发⾏版本特点

1Linux操作系统介绍

Linux,全称GNU/Linux,是⼀套免费使⽤和⾃由传播的类Unix操作系统,是⼀个基于POSIX和Unix的多⽤户、多任务、⽀持多线程和多

CPU的操作系统。伴随着互联⽹的发展,Linux得到了来⾃全世界软件爱好者、组织、公司的⽀持。它除了在服务器⽅⾯保持着强劲的发展

势头以外,在个⼈电脑、嵌⼊式系统上都有着长⾜的进步。使⽤者不仅可以直观地获取该操作系统的实现机制,⽽且可以根据⾃⾝的需要来

修改完善Linux,使其最⼤化地适应⽤户的需要。 [1]

Linux不仅系统性能稳定,⽽且是开源软件。其核⼼防⽕墙组件性能⾼效、配置简单,保证了系统的安全。在很多企业⽹络中,为了追求速

度和安全,Linux不仅仅是被⽹络运维⼈员当作服务器使⽤,它还被当作,甚⾄当作⽹络防⽕墙,这是Linux的⼀⼤亮点。 [2]

Linux具有、没有版权、技术社区⽤户多等特点,开放源码使得⽤户可以⾃由裁剪,灵活性⾼,功能强⼤,成本低。尤其系统中内嵌⽹络协

议栈,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台。 [3]

Linux的基本思想有两点:第⼀,⼀切都是⽂件;第⼆,每个⽂件都有确定的⽤途。其中第⼀条详细来讲就是系统中的所有都归结为⼀个⽂

件,包括、和设备、、等等对于操作系统⽽⾔,都被视为拥有各⾃特性或类型的⽂件。⾄于说Linux是基于Unix的,很⼤程度上也是因为这

两者的基本思想⼗分相近。

⼆、linux⽬录与路径

a、简介

linux中的⽬录呈现树状结构,带有分⽀,也就是各级⼦⽬录,其作⽤就是存放⽂件,相当于Windows下我们所熟悉的⽂件夹,在linux下,

安装完成后会创建⼀系列的⽬录,⽤于存放特定的⽂件。linux中的根⽬录为“/”,和Windows不同,没有盘符的概念。

索引节点inode

inode中⽂意思是索引节点,每个存储设备或存储设备的分区(存储设备可以是硬盘、U....)被格式化为⽂件系统后,都应该有两部分:⼀部分是inode,另⼀

部分是BlockBlock是⽤来存储数据⽤的。⽽inode就是⽤来存储这些数据信息的,这些信息包括⽂件⼤⼩、属主、归属的⽤户组、读写权限。

inode为每个⽂件进⾏信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的⽂件。

打个⽐⽅,⽐如⼀本书,存储设备或分区就相当于这本书,Block相当于书中的每⼀页,inode就相当于这本书前⾯的⽬录,⼀本书有很多内容,如果想查找某部

分的内容,可以先查⽬录,通过⽬录更快的找到我们想要看的内容。虽然不太恰当,但还是⽐较形象的。

123

inode值相同的⽂件是硬链接⽂件

linux⽂件系统中,inode值相同的⽂件是硬链接⽂件。这也就是说,不同的⽂件名,inode的值可能是相同的,⼀个inode值可以对于多个⽂件。在Linux中,链

接⽂件是通过ln命令来创建的。

#ln 源⽂件 ⽬标⽂件 #注意:⽬标⽂件不需要提前创建

inode值相同的⽂件,可以把他们的关系看作互为硬链接的关系。当我们修改其中⼀个⽂件的内容时,互为硬链接的⽂件的内容也会跟着变化。如果我们删除互

为硬链接关系的某个⽂件时,另外的硬链接并不受影响,既⽂件数据还在(当⽂件硬链接个数为0时,数据占⽤空间才会被释放回收)。

可以这样理解,互为硬链接关系的⽂件,具有相同的inode值,也就是说,对应的实际数据是同⼀份;

1234

特别提⽰:⽬录不能创建硬链接,只有⽂件才能创建硬链接。

软链接⽂件

创建软链接(也称为符号链接)的语法:

ln -s 源⽂件或⽬录 ⽬标⽂件或⽬录

1

软链接也叫符号链接,它和硬链接有所不同,软链接⽂件(包含到源⽂件的路径位置等信息)。当我们删除了源⽂件后,软链接就不能独⽴存在了。虽然仍然会

保留⽂件名(失效后查看时会是红⾊闪烁状),但我们却不能查看软链接的内容了。

当我们修改链接⽂件的内容时,就意味着我们在修改源⽂件的内容。此时源⽂件的属性也会发⽣改变,但软链接⽂件的属性并不会发⽣变化。

与硬链接不同的是,软链接对⽂件和⽬录都适⽤。⽆论是软链接还是硬链接,都相当于物件或⽬录,因此都可以⽤rm命令来删除。

123

linux中⽐较重要的⽬录:

/etc:⽤于保存系统数据⽂件,启动⽂件和脚本等

/bin:存放普通⽤户常⽤的命令

/sbin:存放系统管理常⽤命令

/boot:存放系统核⼼⽂件

/dev:存放与设备有关的⽂件

/lib:存放⽤于编译某些程序时要⽤的函数库

/usr: ⽤于存放⽤户安装的应⽤程序

/var:⽤于存放系统数据⽂件

/root:系统管理员(root⽤户)的⽬录

/home:⽤于存放普通⽤户的⽬录的⽬录

/media:⽤于系统⾃动挂载存储设备时(⽐如光驱、U盘)使⽤的⽬录

/mnt: ⽤于挂载设备时建议使⽤的⽬录(⽬前很多版本的linux都使⽤⾃动挂载,所以该⽬录很少⽤,被media取代)

1112

路径:

绝对路径:写法⼀定是从根⽬录“/”开始。

相对路径:根据当前所处⽬录来表⽰⽬标⽬录。

“.”⽬录表⽰当前⽬录。

“…” ⽬录表⽰当期⽬录的上⼀层⽬录。

路经别名

b、使⽤技巧与常⽤命令

基名,路径的最右侧名称,/user/share/doc的基名 doc。

basename命令 取得路径基名。

dirname命令 除基名外的路径。

ls命令

列出指定⽬录下的⽂件。

常⽤参数:

1.

1. ls [-aAdfFhilnrRSt] ⽬录名称

2. -l :以长格式显⽰⽂件的详细属性,包含档案的属性与权限等等数据;

3. -a :显⽰所有⽂件,包括隐藏⽂件。

4. -A :跟-a功能相同,但不显⽰...

5. -d :仅列出⽬录本⾝,⽽不是列出⽬录内的⽂件数据;

6. -f :直接列出结果,⽽不进⾏排序 (ls 预设会以⽂件名排序!)

7. -F :根据档案、⽬录等信息,给予附加数据结构,

例如: *:代表可执⾏⽂件;

/:代表⽬录;

8. -n :列出 UID GID ⽽⾮使⽤者与群组的名称;

9. -R :连同⼦⽬录内容⼀起列出来,等于该⽬录下的所有⽂件都会显⽰出来;

10. -S :按照⽂件容量⼤⼩排序,⽽不是⽤⽂件名称排序;

11. -t :按照时间排序,⽽不是⽤⽂件名。

12. -h: ⽂件⼤⼩会⾃动进⾏单位换算;

13. -r:⽂件名逆序显⽰;

1234567891

**ll命令 **

显⽰⽂件的信息,ll命令,本质就是ls -l

**pwd命令 **

显⽰当前⼯作⽬录

cd命令

进⼊⽬录

**mkdir命令 **

创建⽬录,默认情况下,指定⽬录的⽗⽬录必须存在。

mkdir 常⽤参数

-m, –mode:指定被创建⽬录的权限值。

-p, --parents:创建⽬录的同时也会创建需要的⽗⽬录。

-v, --verbose:显⽰创建⽬录与⽗⽬录的过程。

参数:

-a,--archive:此参数的效果和同时指定"-bpR"参数相同。

-r:递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号链接,则⼀律视为普通⽂件处理。

-R,--recursive:递归处理,将指定⽬录下的⽂件及⼦⽬录⼀并处理。

-f,--force:强⾏复制⽂件或⽬录, 不论⽬的⽂件或⽬录是否已经存在。

-i,--interactive:覆盖⽂件之前先询问⽤户。

-u,--update:使⽤这项参数之后,只会在源⽂件的修改时间(Modification Time)较⽬的⽂件更新时,或是名称相互对应的⽬的⽂件并不存在,才复制⽂件。

-v,--verbose:显⽰执⾏过程。

-l,--link:对源⽂件建⽴硬链接,⽽⾮复制⽂件。

-b,--backup:删除、覆盖⽬的⽂件先备份,备份的⽂件或⽬录亦建⽴为符号链接,并指向源⽂件或⽬录链接的源⽂件或⽬录。假如没有加上这个参数,在复

制过程中若遇到符号链接,则会直接复制源⽂件或⽬录。

-p,--preserve:保留源⽂件或⽬录的属性,包括所有者、所属组、权限与时间。

-P,--parents:保留源⽂件或⽬录的路径,此路径可以是绝对路径或相对路径,且⽬的⽬录必须已经存在。

-s,--symbolic-link:对源⽂件建⽴符号链接,⽽⾮复制⽂件。

-S <备份字尾字符串>,--suffix=<备份字尾字符串>:⽤"-b"参数备份⽬的⽂件后,备份⽂件的字尾会被加上⼀个备份字符串。默认的备份字尾符串是符号"~"

-V <备份⽅式>,--version-control=<备份⽅式> 指定当备份⽂件时,备份⽂件名的命名⽅式,有以下3:

edt, 将使⽤备份编号,会在字尾加上~1~字符串,其数字编号依次递增。

never 将使⽤简单备份,默认的备份字尾字符串是~, 也可通过-S来指定。

ngnil将使⽤当前⽅式,程序会先检查是否存在着备份编号,若有则采⽤备份编号,若⽆则采⽤简单备份。

-x,--one-file-system:复制的⽂件或⽬录存放的⽂件系统,必须与cp指令执⾏时所处的⽂件系统相同,否则不复制,亦不处理位于其他分区的⽂件。

--help:显⽰在线帮助。

--sparse=<使⽤时机>:设置保存希疏⽂件的时机。

--version:显⽰版本。

2

cp命令对单个⽂件的复制:

⽬标不存在:则复制并重命名指定的名称(指定的名称的⽗⽬录必须存在);

⽬标存在: 如果⽬标是⽂件:则覆盖;如果⽬标是⽬录:将⽂件复制到指定的⽬录中;

cp命令对多个⽂件的复制:

如果要复制的⽂件是多个,则⽬标必须要存在且是⽬录;默认情况下不cp命令会复制⽬录。⽬录下已经有该⽂件,再复制进来相同⽂件名的⽂件。则询问是否

要覆盖。

123456

mv命令 移动⽂件

mv SRC DEST

规则与cp类似,但cp默认只能对⽂件操作,mv可以对⽂件⽬录均能操作。

12

rm命令 删除⽂件

rm 只能删除⽂件,不能删除⽬录。

常⽤参数:

-i:提醒。

-f:强⾏删除;管理员不会有确认提⽰,直接删掉。

-r:递归删除⽬录及其内部的所有⽂件;

rm -rf ⽂件 强⾏删除⽂件。 警⽰:⼀定要谨慎使⽤。

rm -rf / 警⽰:删除根下所有⽂件。⾃杀⾮常危险。

警告:尽量不要这样操作。误操作经常发⽣,⾮常危险。

12345678

touch命令

touch命令⼀般被⽤于创建新的空⽂件。

但若把touch命令作⽤于已存在的⽂件上,则touch命令把⽂件的访问时间修改为当前时间。

三、设置环境变量

1.打开终端并输⼊:

sudo gedit ~/.bashrc。

2.输⼊⽤户密码。这时输⼊的密码是不可见的。

前⾯的步骤会打开.bashrc⽂件,在其末尾添加:

export PATH=/opt/EmbedSky/4.3.3/bin:$PATH

其中/opt/EmbedSky/4.3.3/bin为你⾃⼰需要设置的环境变量路径。

4

使其⽴即⽣效,在终端执⾏:

source ~/.bashrc

四、熟悉⽤户及Linux权限管理

1Linux⽤户账号管理

⽤户账号的管理⼯作主要涉及到⽤户账号的添加、修改和删除。

添加⽤户账号就是在系统中创建⼀个新账号,然后为新账号分配⽤户号、⽤户组、主⽬录和登录Shell等资源。刚添加的账号是被锁定的,

⽆法使⽤。

a、添加新的⽤户账号使⽤useradd命令,其语法如下:

useradd 选项 ⽤户名

参数说明:

选项:

-c comment 指定⼀段注释性描述。

-d ⽬录 指定⽤户主⽬录,如果此⽬录不存在,则同时使⽤-m选项,可以创建主⽬录。

-g ⽤户组 指定⽤户所属的⽤户组。

-G ⽤户组,⽤户组指定⽤户所属的附加组。

-s Shell⽂件 指定⽤户的登录Shell

-u ⽤户号 指定⽤户的⽤户号,如果同时有-o选项,则可以重复使⽤其他⽤户的标识号。

⽤户名:

指定新账号的登录名。

11

增加⽤户账号就是在/etc/passwd⽂件中为新⽤户增加⼀条记录,同时更新其他系统⽂件如/etc/shadow, /etc/group等。

Linux提供了集成的系统管理⼯具userconf,它可以⽤来对⽤户账号进⾏统⼀管理。

b、删除帐号

如果⼀个⽤户的账号不再使⽤,可以从系统中删除。删除⽤户账号就是要将/etc/passwd等系统⽂件中的该⽤户记录删除,必要时还删除⽤

户的主⽬录。

删除⼀个已有的⽤户账号使⽤userdel命令,其格式如下:

userdel 选项 ⽤户名

常⽤的选项是 -r,它的作⽤是把⽤户的主⽬录⼀起删除。

123

修改⽤户账号就是根据实际情况更改⽤户的有关属性,如⽤户号、主⽬录、⽤户组、登录Shell等。

修改已有⽤户的信息使⽤usermod命令,其格式如下:

usermod 选项 ⽤户名

常⽤的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项⼀样,可以为⽤户指定新的资源值。

另外,有些系统可以使⽤选项:-l 新⽤户名

这个选项指定⼀个新的账号,即将原来的⽤户名改为新的⽤户名。

12345

d、⽤户⼝令的管理

⽤户管理的⼀项重要内容是⽤户⼝令的管理。⽤户账号刚创建时没有⼝令,但是被系统锁定,⽆法使⽤,必须为其指定⼝令后才可以使⽤,

即使是指定空⼝令。

指定和修改⽤户⼝令的Shell命令是passwd。超级⽤户可以为⾃⼰和其他⽤户指定⼝令,普通⽤户只能⽤它修改⾃⼰的⼝令。命令的格式为:

passwd 选项 ⽤户名

可使⽤的选项:

-l 锁定⼝令,即禁⽤账号。

-u ⼝令解锁。

-d 使账号⽆⼝令。

-f 强迫⽤户下次登录时修改⼝令。

如果默认⽤户名,则修改当前⽤户的⼝令。

普通⽤户修改⾃⼰的⼝令时,passwd命令会先询问原⼝令,验证后再要求⽤户输⼊两遍新⼝令,如果两次输⼊的⼝令⼀致,则将这个⼝令指定给⽤户;⽽超级

⽤户为⽤户指定⼝令时,就不需要知道原⼝令。

为了系统安全起见,⽤户应该选择⽐较复杂的⼝令,例如最好使⽤8位长的⼝令,⼝令中包含有⼤写、⼩写字母和数字,并且应该与姓名、⽣⽇等不相同。

11

3Linux系统⽤户组的管理

每个⽤户都有⼀个⽤户组,系统可以对⼀个⽤户组中的所有⽤户进⾏集中管理。不同Linux 系统对⽤户组的规定有所不同,如Linux下的⽤

户属于与它同名的⽤户组,这个⽤户组在创建⽤户时同时创建。

⽤户组的管理涉及⽤户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group⽂件的更新。

a、增加⼀个新的⽤户组

groupadd命令。其格式如下:

groupadd 选项 ⽤户组

可以使⽤的选项有:

-g GID 指定新⽤户组的组标识号(GID)。

-o ⼀般与-g选项同时使⽤,表⽰新⽤户组的GID可以与系统已有⽤户组的GID相同。

12345

b、删除⼀个已有的⽤户组

使⽤groupdel命令,其格式如下:

groupdel ⽤户组

12

c、修改⽤户组的属性

使⽤groupmod命令。其语法如下:

groupmod 选项 ⽤户组

常⽤的选项有:

-g GID 为⽤户组指定新的组标识号。

-o -g选项同时使⽤,⽤户组的新GID可以与系统已有⽤户组的GID相同。

-n新⽤户组 将⽤户组的名字改为新名字

123456

d、如果⼀个⽤户同时属于多个⽤户组,那么⽤户可以在⽤户组之间切换,以便具有其他⽤户组的权限。

⽤户可以在登录后,使⽤命令newgrp切换到其他⽤户组,这个命令的参数就是⽬的⽤户组。例如:

$ newgrp root

这条命令将当前⽤户切换到root⽤户组,前提条件是root⽤户组确实是该⽤户的主组或附加组。类似于⽤户账号的管理,⽤户组的管理也可以通过集成的

SSH的简介安装及使⽤

简介

传统的⽹络服务程序,如:ftp、POP和telnet在本质上都是不安全的,因为它们在⽹络上⽤明⽂传送⼝令和数据,别有⽤⼼的⼈⾮常容易

就可以截获这些⼝令和数据。⽽且,这些服务程序的安全验证⽅式也是有其弱点的,就是很容易受到“中间⼈”(man-in-the-middle)这

种⽅式的攻击。所谓“中间⼈”的攻击⽅式,就是“中间⼈”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的

服务器。服务器和你之间的数据传送被“中间⼈”⼀转⼿做了⼿脚之后,就会出现很严重的问题。

从前,⼀个名为Tatu Yl?nen的芬兰程序员开发了⼀种⽹络协议和服务软件,称为SSH(Secure SHell的缩写)。通过使⽤SSH,你可以

把所有传输的数据进⾏加密,这样“中间⼈”这种攻击⽅式就不可能实现了,⽽且也能够防⽌DNS和IP欺骗。还有⼀个额外的好处就是传输

的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,虽然许多⼈把Secure Shell仅当作Telnet的替代物,但你可以使⽤它

来保护你的⽹络连接的安全。你可以通过本地或远程系统上的Secure Shell转发其他⽹络通信,如POP、X、PPP和FTP。你还可以转发其

他类型的⽹络通信,包括CVS和任意其他的TCP通信。另外,你可以使⽤带 TCP包装的Secure Shell,以加强连接的安全性。除此之

外,Secure Shell还有⼀些其他的⽅便的功能,可⽤于诸如Oracle之类的应⽤,也可以将它⽤于远程备份和像SecurID卡⼀样的附加认证。

bSSH的⼯作机制

1 $ ifconfig -a