1. 概述
Linux
是一种自由和开放源码的类 UNIX 操作系统,使用 Linux 内核。目前存在着许多不同的 Linux
发行版,可安装在各种各样的电脑硬件设备,从手机、平板电脑、路由器和影音游戏控制台,到桌上型电脑,大型电脑和超级电脑。 Linux
是一个领先的操作系统,世界上运算最快的 10 台超级电脑运行的都是Linux
操作系统。
Linux 操作系统也是自由软件和开放源代码发展中最著名的例子。只要遵循 GNU 通用公共许可证,任何人和机构都可以自由地使用 Linux 的所有底层源代码,也可以自由地修改和再发布。严格来讲,Linux 这个词本身只表示 Linux
内核,但在实际上人们已经习惯了用 Linux 来形容整个基于 Linux 内核,并且使用 GNU 工程各种工具和数据库的操作系统 (也被称为 GNU/ Linux)。通常情况下,Linux 被打包成供桌上型电脑和服务器使用的 Linux
发行版本。一些流行的主流 Linux 发行版本,包括 Debian
(及其衍生版本Ubuntu
),Fedora
和 OpenSUSE
等。Kernel + Softwares + Tools 就是 Linux Distribution
目前市面上较知名的发行版有:Ubuntu
、RedHat
、CentOS
、Debian
、Fedora
、SuSE
、OpenSUSE
、TurboLinux
、BluePoint
、RedFlag
、Xterm
、SlackWare
等。
2. Linux 与 Windows 比较
目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下
比较 | Windows | Linux |
---|---|---|
界面 | 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 | 由志愿者开发,由Linux核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在 Windows 下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
学习 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。 |
软件 | 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 | 大部分软件都可以自由获取,同样功能的软件选择较少。 |
3. Linux 远程控制管理
3.1 概述
传统的网络服务程序,FTP、POP、telnet 本质上都是不安全的,因为它们在网络上通过明文传送口令和数据,这些数据非常容易被截获。SSH 叫做 Secure Shell。通过 SSH,可以把传输数据进行加密,预防攻击,传输的数据进行了压缩,可以加快传输速度。
3.2 OpenSSH
SSH 是芬兰一家公司开发。但是受到版权和加密算法限制,现在很多人都使用 OpenSSH。OpenSSH 是 SSH 的替代软件,免费。
OpenSSH 由客户端和服务端组成。
- 基于口令的安全验证:知道服务器的帐号密码即可远程登录,口令和数据在传输过程中都会被加密。
- 基于密钥的安全验证:此时需要在创建一对密钥,把公有密钥放到远程服务器上自己的宿主目录中,而私有密钥则由自己保存
3.3 XShell工具
XShell 是一个强大的安全终端模拟软件,它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的 TELNET 协议。XShell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。
XShell 可以在 Windows 界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。
4. Linux 的目录结构
目录 | 说明 |
---|---|
bin | 存放二进制可执行文件(ls,cat,mkdir等) |
boot | 存放用于系统引导时使用的各种文件 |
dev | 用于存放设备文件 |
etc | 存放系统配置文件 |
home | 存放所有用户文件的根目录 |
lib | 存放 跟文件系统中的程序运行所需要的共享库及内核模块 |
mnt | 系统管理员安装临时文件系统的安装点 |
opt | 额外安装的可选应用程序包所放置的位置 |
proc | 虚拟文件系统,存放当前内存的映射 |
root | 超级用户目录 |
sbin | 存放二进制可执行文件,只有root才能访问 |
tmp | 用于存放各种临时文件 |
usr | 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录 |
var | 用于存放运行时需要改变数据的文件 |
5. Linux 操作文件目录命令
命令 | 说明 | 语法 | 参数 | 参数说明 |
---|---|---|---|---|
ls | 显示文件和目录列表 | ls [-alrtAFR] [name…] | ||
-l | ||||
-a | ||||
mkdir | 创建目录 | mkdir [-p] dirName | ||
-p | ||||
cd | 切换目录 | cd [dirName] | ||
touch | 生成一个空文件 | |||
echo | 生成一个带内容文件 | echo abcd > 1.txt,echo 1234 >> 1.txt | ||
cat | 显示文本文件内容 | cat [-AbeEnstTuv] [–help] [–version] fileName | ||
cp | 复制文件或目录 | cp [options] source dest | ||
rm | 删除文件 | rm [options] name… | ||
-f | ||||
-r | ||||
mv | 移动文件或目录 | mv [options] source dest | ||
find | 在文件系统中查找指定的文件 | |||
-name | ||||
grep | 在指定的文本文件中查找指定的字符串 | |||
tree | 用于以树状图列出目录的内容 | |||
pwd | 显示当前工作目录 | |||
ln | 建立软链接 | |||
more | 分页显示文本文件内容 | |||
head | 显示文件开头内容 | |||
tail | 显示文件结尾内容 | |||
-f |
1 | mkdir -p zy/lyw 创建zy目录和下一级目录lyw |
6. Linux 系统管理命令
命令 | 说明 |
---|---|
stat | 显示指定文件的相关信息,比ls命令显示内容更多 |
who | 显示在线登录用户 |
hostname | 显示主机名称 |
uname | 显示系统信息 |
top | 显示当前系统中耗费资源最多的进程 |
ps | 显示瞬间的进程状态 |
du | 显示指定的文件(目录)已使用的磁盘空间的总量 |
df | 显示文件系统磁盘空间的使用情况 |
free | 显示当前内存和交换空间的使用情况 |
ifconfig | 显示网络接口信息 |
ping | 测试网络的连通性 |
netstat | 显示网络状态信息 |
clear | 清屏 |
kill | 杀死一个进程 |
7. Linux 开关机命令
shutdown 命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。
注意: 必须要有root权限才可以关机,否则系统提示:(Permission denied)权限被拒绝,临时提权 sudo
命令
| 命令 | 语法 | 参数 | 参数说明 |
| ——– | ———————————————– | —- | ———- |
| shutdown | shutdown [-t seconds] [-rkhncfF] time [message] | | |
| | | | -t seconds |
| | | | -k |
| | | | -r |
| | | | -h |
| | | | -n |
| | | | -c |
| | | | -f |
| | | | -F |
| | | | time |
| | | | message |
7.1 重启
8. Linux 压缩命令
8.1 tar
命令 | 语法 | 参数 | 参数说明 |
---|---|---|---|
tar | tar [-cxzjvf] 压缩打包文档的名称 欲打包目录 | ||
-c | |||
-x | |||
-z | |||
-j | |||
-v | |||
-f | |||
-tf | |||
例子: | |||
- 压缩文件夹:tar -zcvf test.tar.gz test | |||
- 解压文件夹:tar -zxvf test.tar.gz | |||
## 8.2 gzip | |||
命令 | 语法 | 参数 | 参数说明 |
—- | ———————————- | —- | ——– |
gzip | gzip [选项] 压缩(解压缩)的文件名 | ||
-d | |||
-l | |||
-v | |||
-num |
说明:压缩文件后缀为 gz
压缩:tar -czvf zy/my.tar.gz hello.txt world.txt lyw.txt zy.txt
解压:tar -xzvf zy/my.tar.gz
8.3 bzip2
命令 | 语法 | 参数 | 参数说明 |
---|---|---|---|
bzip2 | bzip2 [-cdz] | ||
-d | |||
-z | |||
-num |
说明:压缩文件后缀为 bz2
压缩:tar -cjvf zy/my.tar.bz2 hello.txt world.txt lyw.txt zy.txt
解压:tar -xjvf zy/my.tar.bz2
9. Linux 编辑器
9.1 vim
运行模式
编辑模式:等待编辑命令输入
插入模式:编辑模式下,输入i
进入插入模式,插入文本信息
命令模式:在编辑模式下,输入:
进行命令模式
命令
:q
直接退出vi
:wq
保存后退出vi ,并可以新建文件
:q!
强制退出
:w file
将当前内容保存成某个文件
:set number
在编辑文件显示行号
:set nonumber
在编辑文件不显示行号
10. Linux 软件包管理
10.1 概述
APT(Advanced Packaging Tool)
是 Debian/Ubuntu 类 Linux 系统中的软件包管理程序, 使用它可以找到想要的软件包, 而且安装、卸载、更新都很简便;也可以用来对 Ubuntu 进行升级; APT 的源文件为/etc/apt/
目录下的sources.list
文件。
10.2 修改数据源
由于国内的网络环境问题,我们需要将 Ubuntu 的数据源修改为国内数据源,操作步骤如下
10.3查看系统版本
1 | lsb_release -a |
输出结果为
1 | No LSB modules are available. |
注意: Codename 为 xenial,该名称为我们 Ubuntu 系统的名称,修改数据源需要用到该名称
10.4 编辑数据源
1 | sudo vim /etc/apt/sources.list (sudo 提权 ) |
删除全部内容并修改为
1 | deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse |
10.5 更新数据源
1 | sudo apt-get update |
10.6 常用 APT 命令
1 | apt-get install packagename 安装软件包 |
10.7 其它 APT 命令
1 | apt-cache search package 搜索 |
11. Linux 用户和组管理
Linux 操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰
11.1 使用 Root 用户
在实际生产操作中,我们基本上都是使用超级管理员账户操作 Linux 系统,也就是 Root 用户,Linux 系统默认是关闭 Root 账户的,我们需要为 Root 用户设置一个初始密码以方便我们使用。
11.2 设置 Root 账户密码
1 | sudo passwd root |
11.3 切换到 Root
1 | su |
11.4 设置允许远程登录 Root
1 | nano /etc/ssh/sshd_config |
11.5 用户账户说明
11.5.1 普通用户
普通用户在系统上的任务是进行普通操作
11.5.2 超级管理员(root)
管理员在系统上的任务是对普通用户和整个系统进行管理。对系统具有绝对的控制权,能够对系统进行一切操作。用 root 表示,root 用户在系统中拥有最高权限,默认下 Ubuntu
用户的 root
用户是不能登录的。
11.5.3 安装时创建的系统用户
此用户创建时被添加到 admin 组中,在 buntu
中,admin
组中的用户默认是可以使用 sudo
命令来执行只有管理员才能执行的命令的。如果不使用 sudo
就是一个普通用户
11.6 组账户说明
11.6.1 私有组
当创建一个用户时没有指定属于哪个组,Linux 就会建立一个与用户同名的私有组,此私有组只含有该用户
11.6.2 标准组
当创建一个用户时可以选定一个标准组,如果一个用户同时属于多个组时,登录后所属的组为主组,其他的为附加组
11.7 账户系统文件说明
11.7.1 /etc/passwd
每一行代表一个账号,众多账号是系统正常运行所必须的,例如 bin,nobody 每行定义一个用户账户,此文件对所有用户可读。每行账户包含如下信息:
root:x:0:0:root:/root:/bin/bash
用户名: 就是账号,用来对应 UID,root UID 是 0。
口令: 密码,早期 UNIX 系统密码存在此字段,由于此文件所有用户都可以读取,密码容易泄露,后来这个字段数据就存放到 /etc/shadow 中,这里只能看到 X。
用户标示号(UID): 系统内唯一,root 用户的 UID 为 0,普通用户从 1000 开始,1-999 是系统的标准账户,500-65536 是可登陆账号。
组标示号(GID): 与 /etc/group 相关用来规定组名和 GID 相对应。
注释: 注释账号
宿主目录(主文件夹): 用户登录系统后所进入的目录 root 在 /root/itcast
命令解释器(shell): 指定该用户使用的 shell ,默认的是 /bin/bash
11.7.2 /etc/shadow
为了增加系统的安全性,用户口令通常用 shadow passwords 保护。只有 root 可读。每行包含如下信息:
root:$6$Reu571.V$Ci/kd.OTzaSGU.TagZ5KjYx2MLzQv2IkZ24E1.yeTT3Pp4o/yniTjus/rRaJ92Z18MVy6suf1W5uxxurqssel.:17465:0:99999:7:::账号名称: 需要和 /etc/passwd 一致。
密码: 经过加密,虽然加密,但不表示不会被破解,该文件默认权限如下:
- -rw——- 1 root root 1560 Oct 26 17:20 passwd-
-只有root能都读写
- -rw——- 1 root root 1560 Oct 26 17:20 passwd-
最近修改密码日期: 从1970-1-1起,到用户最后一次更改口令的天数
密码最小时间间隔: 从1970-1-1起,到用户可以更改口令的天数
密码最大时间间隔: 从1970-1-1起,必须更改的口令天数
密码到期警告时间: 在口令过期之前几天通知
密码到期后账号宽限时间
密码到期禁用账户时间: 在用户口令过期后到禁用账户的天数
保留
11.7.3 /etc/group
用户组的配置文件
root:x:0:
- 用户组名称
- 用户组密码: 给用户组管理员使用,通常不用
- GID: 用户组的ID
- 此用户支持的账号名称: 一个账号可以加入多个用户组,例如想要 itcast 加入 root 这个用户组,将该账号填入该字段即可 root❌0:root, icast 将用户进行分组是 Linux 对用户进行管理及控制访问权限的一种手段。一个中可以有多个用户,一个用户可以同时属于多个组。该文件对所有用户可读。
11.7.4 /etc/gshadow
该文件用户定义用户组口令,组管理员等信息只有root用户可读。
root:\*::
- 用户组名
- 密码列
- 用户组管理员的账号
- 用户组所属账号
11.8 账户管理常用命令
增加用户
1 | useradd 用户名 |
如:useradd zysheep
增加用户名为 zysheep
的账户
修改用户
1 | usermod -u (新UID) |
如:usermod -u 1024 -g group2 -G root zysheep
将 zysheep 用户 uid 修改为 1024,默认组改为系统中已经存在的 group2,并且加入到系统管理员组
删除用户
1 | userdel 用户名 (删除用户账号) |
如:userdel -r zysheep
删除用户名为 zysheep 的账户并同时删除 zysheep 的用户目录
组账户维护
1 | groupadd 组账户名 (创建新组) |
口令维护
1 | passwd 用户账户名 (设置用户口令) |
用户和组状态
1 | su 用户名(切换用户账户) |
12. Linux 文件权限管理
12.1 查看文件和目录的权限
ls –al
使用 ls 不带参数只显示文件名称,通过ls –al
可以显示文件或者目录的权限信息。ls -l
文件名 显示信息包括:文件类型 (d 目录,- 普通文件,l 链接文件),文件权限,文件的用户,文件的所属组,文件的大小,文件的创建时间,文件的名称
drwxrwxr-x 4 lyw lyw 4096 Jan 4 20:08 lyw/
- -:普通文件
- rw-:说明用户 lyw 有读写权限,没有运行权限
- r–:表示用户组 lyw 只有读权限,没有写和运行的权限
- r–:其他用户只有读权限,没有写权限和运行的权限
drwxrwxr-x 4 lyw lyw 4096 Jan 4 20:08 lyw/
drwxrwxr-x | 4 | lyw | lyw | 4096 | Jan 4 20:08 | lyw/ |
---|---|---|---|---|---|---|
文档类型及权限 | 连接数 | 文档所属用户 | 文档所属组 | 文档大小 | 文档最后被修改日期 | 文档名称 |
- | rw- | r– | r– |
---|---|---|---|
文档类型 | 文档所有者权限(user) | 文档所属用户组权限(group) | 其他用户权限(other) |
12.2 文档类型
- d 表示目录
- l 表示软连接
- – 表示文件
- c 表示串行端口字符设备文件
- b 表示可供存储的块设备文件
- 余下的字符 3 个字符为一组。r 只读,w 可写,x 可执行,- 表示无此权限
12.3 更改操作权限
chown
是 change owner
的意思,主要作用就是改变文件或者目录所有者,所有者包含用户和用户组
chown [-R] 用户名称 文件或者目录
chown [-R] 用户名称 用户组名称 文件或目录
-R:进行递归式的权限更改,将目录下的所有文件、子目录更新为指定用户组权限
chmod
改变访问权限
chmod [who] [+ | - | =] [mode] 文件名
- [who]
表示操作对象可以是以下字母的一个或者组合
- u:用户 user
- g:用户组 group
- o:表示其他用户
- a:表示所有用户是系统默认的
- [+ | - | =]
- +:表示添加某个权限
- -:表示取消某个权限
- =:赋予给定的权限,取消文档以前的所有权限
[mode]
表示可执行的权限,可以是 r、w、x文件名
文件名可以使空格分开的文件列表
12.4 数字设定法
数字设定法中数字表示的含义
- 0 表示没有任何权限
- 1 表示有可执行权限 = x
- 2 表示有可写权限 = w
- 4 表示有可读权限 = r
也可以用数字来表示权限如 chmod 755 file_name
r w x | r – x | r - x |
---|---|---|
4 2 1 | 4 - 1 | 4 - 1 |
user | group | others |
若要 rwx 属性则 4+2+1=7 |
若要 rw- 属性则 4+2=6
若要 r-x 属性则 4+1=5