Linux 入门基础
注:文件(夹)权限/防火墙/开放端口
-----------------------------------------------------------------------------------------------
第一课 Linux安装
1.使用VM Virtualbox 虚拟机(养成使用开源软件)
2.安装CentOS 6.3 X86(全称为:Community Enterprise Operating System 诞生于社区的企业级操作系统)和redhat 没有任何区别 为了不牵扯版权问题 养成使用开源软件的习惯
3.图形界面安装 安装步骤 引导界面
Install or upgrade an existing system 安装或者升级一个现有的操作系统
Install system with basic video driver 和上一个的主要区别在于不需要很高的显卡 当地一个进入出现花屏或者出现显卡驱动不起来用这个
Rescue installed system 恢复环境 恢复已经安装的操作系统 适用于操作系统本身出现问题或无法启动的时候 它是基于光盘运行
Boot from local driver 从本地硬盘启动
Memory test 内存测试 在生产环境下使用检测一下内存
Linux的安装程序也是一个精简的小的Linux系统
安装步骤
Install or upgrade an existing system→Skip 忽略光盘校验(OK 光盘校验 校验时间比较长)
→Next (正式进入安装界面)
→English(安装语言 尽量使用英语 使用Linux养成使用英文环境的好习惯)
→Next→U.S.English
→Basic storage Devices(这一步为选择磁盘驱动安装硬盘 安装在普通的PC服务器或者试验机上选这一个)
→Next→YES,discard any data(检测硬盘 提示是否要丢弃所有的数据,选yes)
→设置主机名还可以配置网络
→Next→时区选择上海 左下方为UTC时间最好勾选上 可以跨时区协调时间
→Next→设置Root用户的密码
**********************************************************
→Next→Create Custom Layout 创建 自己进行分区(不建议使用全自动分区Use All Space)
→Next→Create 创建(sd 串口盘 hd IDE接口盘)
→Standard Partiton标准分区(建议使用逻辑卷 LVM)
→点击Create(创建)
→File System Iype:swap(建议首先创建交换分区,文件系统设置为swap就可以),Size(MB):4096(建议试验环境交换分区的大小设置为4096,若在生产环境下交换分区设置为最多 8G或16G就可以了)
→OK→Creace→Create Custom Layout(把剩余的空间全部创建成根分区,只有根分区的话,其他目录都在根分区下面)
encrytp加密,对根分区加密,影响速度,降低io性能,但保证了物理硬盘安全行
→MountPoint:/
File System Iype:ext4
勾选Fill to maximum allowable size(选择最大可用的空间 )→OK
**********************************************************
→Next→Format确认→Write changes to disk写入硬盘
→Next(选择引导,若有多个硬盘的话需要按需选择,还可以给引导加一个密码)
→Desktop 桌面环境 建议初学者使用(选择要安装的软件 默认最小化安装minimal)
→Next→检查依赖关系,安装软件包,等待安装完成
→Reboot重启
→Forward→Forward→创建用户(尽量不要去使用root用户)
→Forward→配置时间 建议生产环境的话勾选与网络时间同步
→Forward→Kdump 当死机时 保存内存镜像 生产环境建议enable
→Finish→yes→OK重启
选择一个用户输入密码进入系统桌面
-----------------------------------------------------------------------------------------------
课时2 GNOME图形界面基本操作
当前窗口打开Edit——pref#——Behaiour——Always open in browerwindows 以WINDOWS的方式打开文件夹目录而非,打开一个目录开一个窗口
-----------------------------------------------------------------------------------------------
课时3号命令行BASH的基本操作
GUI 图形方面的shell ------〉windows 、mac os
CLI 命令行方面的shell -----〉比图形强大
提示符
# root用户 (最高权限)
$ 普通用户
命令一般由 (选项、命令、参数) 组成。
uname 显示系统的基本信息
-r 内核版本号
-a 显示所有信息==(--all)
*
ctrl+c 终止当前命令
*
命令后面加上 &将这个命令放到后台运行。如firefox &
*
使用Tab键来自动补全命令(注意:无法自动补全参数,)按2下Tab显示所有命令
*
*
Bash会保存你输入过的命令,可以通过↓↑ 键来查看。
通过history可查看输入过的全部命令。
*
!!重复前一个命令(用上也可以。还方便)
!字符 重复前一个以“字符”开头的命令
!num 按照历史记录的序号执行命令
!?abc重复之前包含abc的命令
!-n重复n歌命令之前的那个命令
通过Ctrl+r来在历史记录中搜素命令(reverse-i-search)“:
重新调用前一个命令中的参数Esc.(按完Esc键之后按.)
命令行通配符
*匹配零个或多个
?匹配任意一个字符
[0-9]匹配一个数字范围
[abc]匹配列表里任何字符
[Λabc]匹配列表以外的字符
切换用户
su - 切换到root用户(切换终端)
sudo 使用管理员权限运行命令
显示当前用户信息
id
*
修改当前用户密码
passwd
首先输入当前密码
然后输入的是新密码
*
管理后台作业
jobs 查看当前在后台运行的作业
sleep 5000 停参数输入的时间 5000秒 可使用ctrl+c终止 或者 使用ctrl+z暂停
bg 编号 控制进程继续在后台运行
fg 编号 继续在前台运行
-----------------------------------------------------------------------------------------------
课时4:Linux文件系统基本结构、通过命令行管理linux文件系统
1、Linux文件系统结构
1)、Linux文件系统为一个倒转的单根树状结构
2)、文件系统的根为“/",在安装操作系统时划分为2个区,一个交换分区,作为虚拟内存;一个是根目录,liunx中所以的文件、文件系统都是存在根目录下面。
3)、linux文件系统严格区分大小写,大小写敏感
4)、路径使用”/"分割,(windows中使用“\”)
2、Linux树状文件系统
最顶级目录:根目录/
3、当前工作目录
1)、每一个shell或系统进程都有一个当前的工作目录:~显示当前所在目录。
2)使用pwd命令可以显示当前的工作目录
4、文件名称
1)文件的名称大小写敏感
2)名称最多可以使用255个字符
3)除了正斜线外都是有效字符
4)通过touch命令可以创建一个空白文件或者更新已有的时间
5)以“."开头的文件为隐藏文件
5、列出目录内容:ls命令用了列出目录内容
1)ls -a :显示所有文件(包括隐藏文件):隐藏文件绝大多是都是配置文件,不要去动这些文件。touch创建空白文件和更新已有文件的信息。
2)ls -l:显示详细信息
3)ls -R:递归显示子目录结构
4)ls -ld显示目录和链接信息
6、查看文件类型:file
file Download:Downloads:directory
7、绝对路径于相对路径
1)绝对路径:以/开头,递归每级目录直到目标的路径。不受当前所在工作目录限制
2)相对路径:以当前目录为起点,到达目标的路径。受当前所在目录限制
3)cd用来切换目录:cd .切换到当前目录,cd ..切换到上一级目录,cd ~切换到家目录, cd -上一个工作目录。cd回到家目录。
-----------------------------------------------------------------------------------------------
课时5:Linux文件基本操作管理
一、复制文件和目录
1、使用cp命令复制文件或目录
格式:cp 源文件(文件夹) 目标文件(文件夹) //当复制到一个文件夹的时候不需要指明文件名,复制到当前目录需要重命名
参数:-r 递归复制整个目录树 //复制文件夹假如-r参数
-v 显示详细信息 //显示复制的详细信息加入-v参数 例:cp -rv 文件夹1 文件夹2
二、移动、重命名文件或目录
1、通过mv命令移动或重命名文件或目录
格式:mv 文件 目标目录 //如果指定文件名,则可以重命名文件 例:mv 文件名 文件夹名/新文件名
2、mv也有修改文件名的作用
mv 文件名 新文件名 //即不指定要移动的文件名 移动到当前目录
三、创建、删除文件
1、通过touch命令可以创建一个空文件或更新文件时间
2、通过rm命令可以删除文件或目录
删除文件格式:rm 文件名
删除目录格式:rm -r 文件夹名 //它会删除文件夹及文件夹里面所有的东西并且不会提示
参数:-i 交互式 //例:rm -ri 文件夹名
-r 递归的删除包括目录中的所有内容 //
-f 强制删除。没有警告提示 //例:rm -rif 文件夹名
四、创建删除目录
1、通过mkdir命令创建一个目录
2、通过rmdir命令创建一个空目录 //不能删除非空文件夹 若要删除还需要使用-rm -r 来删除
3、通过rm -r (-f)命令删除一个非空目录
-----------------------------------------------------------------------------------------------
课时6:Linux系统目录架构
bin:保存的是可执行文件,二进制,就是命令
boot:引导目录,操作系统的启动加载,包含版本内核文件、greb引导程序…
dev:硬件设备文件,如硬盘、网卡、声卡、终端、显卡,每一个都会被抽象为一个文件
etc:所有操作系统相关的绝大部分配置文件,纯文本,.com结尾居多
home:家文件,保存用户自己的文件
root:root用户的家文件
lib:linux程序运行相关的库文件,相当于.dll文件
media:挂载相关,u盘(不一定有)
mnt:也是挂载相关,与media类似
opt:一般用来装大型软件
proc:存在于内存中的虚拟文件,保存系统的实时信息,没从开机都会更新;每个文件夹包含一个程序运行的一个进程,常见的有CPU信息、电池信息等 【cat:查看文件的内容】
sbin(super binary):含有磁盘分区、格式化这样的危险信息
sys:系统的底层硬件信息
tmp:临时目录,系统会自动删除
usr:保存一般的应用软件
var:保存一些经常变化的信息,如log,系统日志
-----------------------------------------------------------------------------------------------s
课时7:Linux系统常用命令
运维中最常用的命令,应当熟记!
一,日期和时间
1,date 查看和设置系统的日期和时间
2,-u,来查看UTC时间
3,date +%y-%m-%d 其中“-”可以自定义更 改,这是更改时间的显示格式
4,date -s 设置时间,这个需要切到root用户才能有权限更改
5,date查看的是操作系统的时间,他是从硬件的时间中来的,可以直接用clock(hclcok)来查看
6,cal来打印日历
7,uptime,用来查看系统运行了多久,系统的用户,系统的负载
注:可以用 man uptime来查看对uptime的解释
二,输出,查看命令
1,echo:显示输入的内容,你输的啥就给你输出啥
2,cat:来显示文件的内容,它直接显示出所有的文件内容,很不人性化,麻烦
3,为了方便查看,避免cat的不便,可以用已下几个命令
4,more:用于翻页显示内容,但是不能向下翻页
5,less:相对于more 可以上下来回翻页
6,head:显示文件的头几行(默认10行)
-n:来指定显示开头的n行
7,tail:显示末尾的几行(默认10行)
-n:来指定显示末尾的n行
-f:追踪显示文件的更新,当我们用-f指令后,命令 行就会卡在这里,等待文件更新再显示出新内容。一般用于查看日志,持续显示新加入的内容
三,查看硬件信息
1,lspci 用于查看PCI设备(如声卡网卡等)
-v查看详细信息
这几条命令相当与Windows中点属性点设备管理器一样
2,lsusb 查看USB设备,如摄像头等
-v也是显示详细信息
3,lsmod 查看当前加载的所有模块(模块即windows中相当于驱动)
四,关机重启
格式:shutdown【关机/重启】时间
立即关机:poweroff / shutdown -h now = poweroff
立即重启:reboot / shutdown -r now = reboot
n分钟后关机:shutdown -h +n
定时关机:shutdown -h xx:xx
五,归档和压缩
1,zip用以压缩:zip xxx.zip file (把file这个源文件压缩成xxx.zip是目标文件)
2,unzip xxx.zip 是解压文件
3,gzip:也是一种压缩方式
4,tar:一个归档命令,就是把许多文件打包成一个文件
-cvf out.tar liunxfile :把Linuxfile这个文件夹中的文件打包归档成一个输出out.tar格式的文件,可以用来备份,但是他没有压缩哦
-cvf out.tar 把一个归档的tar文件释放到当前文件下
-cvzf: 在cvf命令下多了个z命令,就是归档并压缩一个文件。这里调用了一次gzip命令
格式:tar -cvzf xxx.tar.gz/要保存的目录下
其实用的最多的还是归档并压缩命令
六,查找命令
在我们的操作系统中寻找文件
1,locate 关键字 快速查找
它需要预先建立数据库,比如你新建立了一个文件,然后用locate去查找这个命令,是找不到的。这个时候你可以用“updatedb"命令先更新数据库,然后在查找。
2,find 支持很多查找条件,所以叫高级查找
格式:find 查找位置 查找参数
find .-name*linuxcast" "."表示在当前文件夹
*xxx*表示关键字这句话表示在当前文件夹下所有包含“Linuxcast”关键字的文件
find / -name *.conf 在/根分区下查找所有.conf结尾的文件
find / -perm 777查找硬盘中所有权限是777的文件
find / -type d 查找目录类型文件。d是目录,也可以跟l ,表示查找所有的连接
find .-name "a *"-exec ls -l {}\;
这句话表示查找所有以“a开头的文件,然后传送给“ls -s"这个命令去执行;其中{} \;是固定格式。-exec也是固定格式,执行的意思;
find的后缀参数还有很多,可以直接在网络查找或者help文件
find支持的查找条件:
-name
-perm
-user
-group
-ctime
-type
-size
-----------------------------------------------------------------------------------------------
课时:8 Vi文本编辑器
vi 命令行下面的文本编辑工具
vim是vi的增强版本
命令vim可以启动vim编辑器
一般可以通过vim+目标文件路径的形式使用vim
如果目标文件存在,则vim打开该文件
若目标文件不存在,则新建该文件
vi拥有三种模式:命令模式、插入模式和ex模式
任何模式都可以通过esc键回到命令模式
在命令模式中按”i“键可以进入到插入模式,在插入模式中按esc可以返回命令模式
在命令模式中按”:“可以进入ex模式,在ex模式中可以保存、修改和退出
命令模式常用的命令如下:
i 在光标前插入文本
o 在当前行的下面插入新行
dd 删除正行
u 撤销上一个操作
yy 复制当前行
n+yy 先按5,接着按yy,则是将5行内容复制
p 粘贴
r 替换当前关键字
/ 查找关键字
EX模式
:w 保存当前修改
:q 退出
:q! 强制退出
:x 保存并退出
:set number 显示行号
:! 执行一个系统命令并显示结果
:sh 切换到命令行,使用ctrl+d切换回vim
-----------------------------------------------------------------------------------------------
课时9:磁盘基本概念
/dev/sda1, /dev/sda2: 第一块硬盘的第一、第二分区
分区不是硬盘的物理功能,而是软件功能。
主流分区:
MBR:Master Boot Record,主引导记录,传统分区机制,应用于绝大多数使用BIOS的PC设备,苹果电脑就不使用BIOS。
* 支持32bit和64bit系统
* MBR支持分区数量有限
* MBR只支持不超过2T的硬盘,超过2T的硬盘将只能使用2T空间(有第三方解决方法)
* MBR结构,占了硬盘头512个字节, 446字节是引导代码,后16字节 x 4 = 4个分区表,最后二个字节一定是55, AA。
最多4个主分区,可以包含3个主分区 + 一个扩展分区,然后在扩展分区上面创建逻辑分区(IDE最多63个逻辑分区,SCSI最多创建15个分区)。
GPT:GUID Paration Table是一个较新的分区机制,解决了MBR很多缺点。
* 支持超过2T的硬盘
* 向后兼容MBR
* 必须在支持 UEFI 的硬件上才能使用,UEFI 是由Intel提出的取代 BIOS 的新一代硬件引导系统。
* 必须使用64bit系统
* Mac、Linux系统都能支持GPT分区格式
* Windows7 64bit、windows Server 2008 64bit支持GPT
-----------------------------------------------------------------------------------------------
课时10:使用fdisk进行磁盘管理
fdisk 分区工具 来自IBM的老牌分区工具,支持绝大多数操作系统。fdisk是基于MBR的分区,所以如果需要使用GPT,则无法使用fdisk进行分区。
fdisk 命令只有具有超级用户的权限才能够运行
使用fdsik -l可以列出所有安装的磁盘及其分区信息
容量大小 = 磁头大小 * 磁头数量 *扇区数量 *柱面数量
使用fdisk /dev/sda(目标硬盘) 可以对目录磁盘进行分区操作
进入fdisk交互窗口【m 查看帮助说明】:
a toggle a bootable flag 切换可以开机
b edit bsd disklabel BSD磁盘标签编辑
c toggle the dos compatibility flag 切换到拒绝兼容标志
d delete a partition 删除分区
l list known partition types 列出已知的分区类型
m print this menu 打印此菜单
n add a new partition 添加新的分区
{
e extended (扩展分区)
p primary partition(1-4) 主分区
创建步骤如下:
1.选着分区类型
2.选着分区号
3.选着起始分区柱面
4.选着末分区柱面(柱面难算可使用 +大小和单位大写,eg: +2G)
创建主分区和拓展分区后会出现 l logical(5 or over) 创建逻辑分区
}
o create a new empty DOS partition table 创建一个新的空分区表
p print the partition table 打印分区表
q quit without saving changes 退出不保存更改
s create a new empty Sun disklabel
t change a partition's system id 修改分区ID
u change display/entry units
v verify the partition table
w write table to disk and exit 写入磁盘并退出
x extra functionality (experts only)
l logical (5 or over)
p primary partition (1-4)
Partition number (1-4): 2
First cylinder (263-2610, default 263):
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-2610, default 2610):
为方便系统识别需要修改ID(system id)linux系统默认为83
可以选择L查看ID对应类型,输入类型后回车
目前操作还未写入硬盘,需要执行 write table to disk and exit进行保存退出
若内核未重新读取分区表,可使用partprobe更新内核分区表
给虚拟机添加一个 8G 硬盘
要先关机后才能添加
------------------fdisk 分区工具
支持 unix / win
MBR only
root
su # 进入超级用户
fdisk -l # 确认是要对 sdb 进行分区
fdisk /dev/sdb
# 对 sdb 进行分区
--------------
创建一个主分区 2 G , 一个扩展分区 6 G , 2G 逻辑分区 , 4G 逻辑分区
根据提示进行就可以 , 注意
1. 常用命令: m 帮助 , p 看信息 , l 看分区类型代号 , t 修改代号 , w 保存并退出
2. 如果是默认值直接回车
3. 逻辑分区从5开始
4. 所谓第几个分区是看 sdb1 的数字 , 忘记了就用 p 看一下
5. 设置为5G用 +5G , 别忘了加号
------------------
partprobe # 刷新分区表 , 好习惯
ls /dev/sd*
fdisk -l
cat /proc/partitions
-----------------------------------------------------------------------------------------------
课时11:Linux文件系统
操作系统通过文件系统管理文件及数据,磁盘或分区需要创建文件系统之后才能够让操作系统使用,创建文件系统的过程又称之为格式化
没有文件系统的设备又称之为裸(RAW)设备
常见的文件系统有fat32、NTFS、ext2、ext3、ext4、xfs、HFS等等
cent os 6默认的是ext4
cent os 5默认的是ext3
文件系统之间的区别:日志、支持的分区大小、支持的单个文件大小、性能等
Linux支持的文件系统:ext2、ext3、ext4、fat、vfat、nfs、iso9660、proc、gfs、jfs
mke2fs 用来创建文件系统
mke2fs -t ext4 /dev/sda3 创建一个文件系统
-b 指定文件系统块大小
-c 建立文件系统时检查坏损块
-L 指定卷标
-j 建立日志文件系统
mkfs也可以用来创建文件系统,相对于mke2fs比较简单,但是无法进行精细化的控制
dumpe2fs 可以用来查看分区的文件系统信息,一般用来进行计算机性能调整
dumpe2fs /dev/sda1
带日志的文件系统拥有较强的稳定性,在出现错误时可以进行恢复
带日志的文件系统哦会使用一个叫做”两阶段提交“的方式进行磁盘操作
文件系统将准备执行的事务的具体内容写入日志
文件系统进行操作
操作成功后,将事物的具体内容从日志中删除
这样做会丧失一些性能
e2label 该命令可以用来问文件系统标签
e2label /dev/sdb1 显示sda2的系统标签
e2label /dev/sdb1 LINUX 将sda2的标签设置为LINUX
fsck 检查并修复损坏的文件系统
fsck /dev/sda2
使用参数-y 参数不提示而直接进行修复
若文件系统损坏比较严重,请使用-t参数指定文件系统类型
对于未识别的文件,则会放在lost+found目录中
系统每次启动都会对磁盘进行fsck操作
-----------------------------------------------------------------------------------------------
课时12:Linux文件系统挂载管理
磁盘或分区创建好文件系统后,需要挂载到一个目录才能够使用
Windows或Mac系统会自动挂载,但是Linux需要手工挂载
通过mount命令将格式化好的磁盘或分区挂载到一个目录上
mount /dev/sda3 [要挂载的分区] /mnt[需要挂载的地方]
使用不带任何参数的mount来显示已经挂载好的文件系统
-t 指定文件系统的类型
-o 指定挂载项
ro,rw 以只读或读写形式挂载,默认是rw
sync 代表不适用缓存,而是对所有操作直接写入磁盘
async 代表使用缓存,默认是async
noatime 代表每次访问文件时不需要更新文件的访问时间
remount 重新加载文件
umount用来卸载已经挂载的文件
umount 文件系统/挂载点
umount /dev/sda3
如果出现device is busy,则表示该文件系统正在被使用,无法卸载,可以使用下面的命令查看是谁在使用:
fuser -m /mut
也可以使用命令lsof查看正在被使用的文件
lsof /mnt
配置文件/etc/fstab 用来定义需要自动挂载的文件系统,fstab中每一行代表一个挂载配置
配置格式
/dev/sda3[需要挂载的设备] /mnt[挂载点] ext4[文件系统] defaults[挂载选项] 0 0 [dump、fsck相关选项]
要挂载的设备LABEL=LINUXCAST取代/dev/sda3
mount -a 命令会挂fstab中定义的自动挂载项
-----------------------------------------------------------------------------------------------
课时:13 Linux下获取帮助
1.无须死记,养成查文档及帮助的习惯,可以大大提高效率。
2.几乎所有命令都支持-h 或 --help 参数来获取使用方法、参数信息等。
3.man命令是linux中最为常见的帮助命令,man +命令名称:用以获取相应的文档帮助。Man文档分为9种类型,如man 8 mount用以查询关于mount的第8种类型文档。
1-用户命令 2-内核系统调用 3-库函数 4-特殊文件和设备 5-文件格式和规范 6-游戏 7-规范、标准和其他页面 8-系统管理命令 9-Linux内核API. man -k +关键字:查询包含该关键字的文档。
4.info与man类似,但是提供的信息更为详细深入,以类似网页的形式显示。Man与info均可通过"/+关键字"方式进行搜索。5.DOC.很多程序、命令都带有详细的文档,以TXT、HTML、PDF等方式保存在/usr/share/doc目录中。在man和info都不能满足需求时,可以尝试到此查找
再者可以用GOOGLE,尽量不用BAIDU,不专业
-----------------------------------------------------------------------------------------------
课时14:Linux用户基础 user(add/mod/del)操作用户 passwd修改用户密码 group(add/mod/del)组操作
用户和组的概念
每个用户拥有一个UserID,操作系统实际使用的是用户ID,而非用户名
每个用户属于一个主组,并受该用户可访问的资源限制
每个组拥有一个GroupID
每个进程以一个用户身份运行,并受该用户可访问的资源限制
每个可登录用户都拥有一个指定的shell
用户
用户ID为32位,从0开始,但是为了和老式操作系统兼容,用户ID限制在60000以下
-root用户,ID为0的用户
-系统用户 1-499
-普通用户 500以上
系统中的文件都有一个所属用户及所属组
使用id命令可以显示当前用户的信息
使用passwd命令可以修改当前用户密码
用户信息相关的文件
/etc/passwd //[1.用户名、2.x表示用户密码是保存在shadow之中的、3.用户id号、4.组id、5.用户描述信息、6.用户的家目录、7.用户的登录shell,实际上就是bin下的bash]
/etc/shadow // [1.用户名、2.密码,!!表示用户没有创建过密码(分3个部分,用$隔开,第一个6表示用的是SHA的512位加密)]
/etc/group [组用户名、组密码、组ID]
whoami 显示当前用户
who tty1 是登录终端
pts/0 是图形界面
w 显示那些用户登录,还能显示他们在做什么
创建一个用户
useradd 用户名 //创建一个用户名
[上面这条命令或执行以下操作:
1.在/etc/passwd 中添加用户信息
2.如果使用passwd 命令创建密码,则将密码加密保存在/ect/shadow 中
3.为用户建立一个新的家目录 /home/xxx
4.将/ect/skel 中的文件复制到用户的家目录中
5.建立一个与用户名相同的组,默认的用户属于这个同名组]
命令useradd 支持一下参数
-d 指定家目录
-g 指定主组
-u 指定UID
-s 修改登录shell
passwd 用户名 //给一个用户创建密码
usermod 用来修改用户信息
usermod 参数 username
-l 更新用户名 usermod -l 新用户名 老用户名
-u 更新userid
-d 用户家目录位置
-g 用户所属主组
-L锁定用户使其不能登录
-U 解除锁定
-G 指定附属组
userdel 用户 删除一个用户
userdel -r 用户 删除用户和用户的家目录
组
每个组有一个组ID
组信息保存在/etc/group中
每个用户拥有一个主组,同时还可以拥有最多31个附属组
groupadd 组名 添加一个组
groupmod -n 新组名 旧组名 修改组名
groupmod -g 新id 旧id 修改组ID
groupdel 组名 可以删除一个组
-----------------------------------------------------------------------------------------------
课时15Linux权限机制 chmod修改权限文件权限/chown修改文件所属用户/chgrp改变文件所属组
权限
权限是操作系统用来限制对资源访问的机制,一般分为读、写、执行、系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定文件进行什么样的操作。
每个进程都是以某个用户的身份运行,进程的权限与该用户的权限一样。
文件权限:
权限 对文件的影响 对目录的影响
r 读取 可读取文件内容 可列出目录内容
w 写入 可以修改文件内容 可在目录中创建删除文件
x 执行 可以作为命令执行 可访问目录内容(目录必须拥有x权限,否则无法查看其内容)
UGO —— Linux权限给予UGO模型进行控制
u User / g Group / o Other
每一个文件权限基于UGO进行设置
权限三个一组(rwx),对应UGO分别设置
每一个文件拥有一个所属用户和所属组,对应UG,不属于该文件所属用户或所属组的使用O权限
ls -l 列出详细信息
如 drwxr-xr-- xxxxxxxxxxx
第一个d 表示文件夹 - 表示文件
第二组rwx表示对应user拥有的权限
第三组r-x表示对应group拥有的权限
第四组r--表示其他人other拥有的权限
修改文件所属用户、组
chown修改文件的所属用户
chown nash_su linuxcast.net
chgrp改变文件的所属组
chgrp nash_su linuxcast.net
以上两个都可以加-R参数递归修改目录下的所有文件的相关属性
修改权限
chmod 模式 文件
模式未下
u、g、o分别代表用户、组和其他
a表示ugo
+、-代表加入或删除对应权限
r、w、x代表三种权限
例如
chmod u+rw linuxcast.net
chmod go+r linuxcast.net
加-R 递归修改目录下的所有文件
chmod支持数字方式修改
r = 4 (2^2)
w = 2 (2^1)
x = 1 (2^0)
rw = 4+2 = 6
rwx = 7
r-x = 5
例如
chmod 660 linuxcast.net ==>rw-rw----
-----------------------------------------------------------------------------------------------
课时16:Linux扩展权限
linux 默认权限
新建文件:-rw-rw-r--
文件夹: -rwxrwxr-x
umask 属性
目录的默认权限:777-umask
文件的默认权限:666-umask
一般对于普通用户默认的umask是002,root用户的默认是022
新建文件的权限是:666-002=664
新建目录的权限是:777-002=775
一般普通用户的umask是002,root用户是022
特殊权限
除普通权限外,还有三个特殊权限:
suid 以文件的所属用户身份执行,而非执行文件的用户
sgid 以文件所属组身份执行 在该目录中创建的任意新文件的所属组与该目录的所属组相同
sticky 对目录拥有写入权限的用户仅可以删除其拥有其拥有的文件,无法删除其他用户的文件
设置suid:
chmod u+s dirtemp
设置sgid:
chmod g+s filetemp
设置sticky:
chmod o+s filetemp
与普通权限一样,特殊权限也可以使用数字方式表示
- SUID = 4
- SGID = 2
- Sticky = 1
所以可以通过一下命令 设置
chmod 4755 filename
-----------------------------------------------------------------------------------------------
课时第17节 网络基础
1.网络编址
功能在互联网中唯一定位设备。
2.IP编址
IP编址是一个双层编址方案,一个IP地址标识一个主机(或一个网卡接口);
现在应用最为广泛的是IPV4编址,已经开始逐渐向IPV6编址切换;
IPV4地址为32位长,IPv6地址为128位长;
一个IPv4地址分为两个部分:网络部分和主机部分;
网络部分用来标识所属区域、主机部分用来标识该区域中的哪个主机。
网络部分+主机部分
类似身份证,网络部分类似出生地部分,主机部分类似出生日期加随机号部分。
IPv4地址共32位,通常使用点分十进制方式表示;
整个IP地址分为4个部分,每个部分8位;
2.子网掩码
IPv4地址的32bit分为网络部分和主机部分,且网络部分是不固定的;
我们通过子网掩码来确定网络部分的位数;
子网掩码与IP地址一样,拥有32bit,每一位与IP地址中的每一位一一对应;
IP地址中相对应子网掩码中为1的部分为网络部分;
同一个网络:主机之间通信通过MAC地址进行通信,因同一个网络上的主机是通过交换机直接相连的,这里主机之间的通信需要使用ARP协议来获得其他主机的MAC地址;
不同网络之间通信:通过网关/路由器来实现通信,家用可以买具有简单功能的路由器,服务供应商用专业的路由器,也可使用带有路由功能的主机作为路由器。
3.路由
在不同网络之间传输数据的概念叫路由功能,一般有多个接口,连接到不同的网络中,并且通过路由表进行数据转发。
4.域名
IP地址难以记忆,所以我们一般使用域名进行管理,一般每个部分代表一个IP地址,也可多个。
域名分为三个部分,用“.”分割:
1)类型:标识此域名的类型;
2)域名:域名称;
3)主机名:该域名的某台主机名称。
www.linuxcast.net
主机名(可随意命名).域名.类型
域名大小写不敏感;
如何使用域名:通过购买的方式。
5.DNS
每个域名代表一个IP,而DNS服务就是用来在IP与域名之间进行转换的。
在实际的传输中,不是通过域名而是通过IP地址。
DNS服务由DNS服务器提供,服务器本身也要配置IP地址。
实际问题:qq能上打不开网页,意味着DNS服务有问题。
6.基本网络参数
要配置一个局域网通信的计算机:
1)IP地址
2)子网掩码
要配置一个跨网段通信的计算机:
1)IP地址
2)子网掩码
3)网关
要配置一个可以用域名上网的计算机:
1)IP地址
2)子网掩码
3)网关
4)DNS
-----------------------------------------------------------------------------------------------
课时第18节 linux网路基础配置
以root用户登录
1.以太网连接
在linux中,以太网接口被命名为:eth0、eth1等,0、1代表网卡编号;
通通过lspci命令可以查看网卡硬件信息(如果是usb网卡,则可能需要使用lsusb);
命令ifconfig(if:interface):用来查看接口信息;
格式:ifconfig -a 查看所有接口
ifconfig eth0 查看特定接口
命令ifup、ifdown用来启用、禁用一个接口
格式:ifup eth0
ifdown eth0
lo接口:所有操作系统上都有,还回接口。
2.配置网络信息
setup:可以配置网络信息,无图形界面也可使用此命令;
setup
netwok configuration
device configuration
eth0(多个可任选)
默认use dhcp为选中的,家用的可默认选上,但服务器需要配置ip地址,输入空格进行ip、子网掩码、网关、DNS的配置(可配置多个)。
ok
save
save
配置完成后需要用ifup eth0启用网卡。
3.网络相关配置文件
1)网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
2)DNS配置文件
/etc/resolv.conf(search net代表的哪个域)
3)主机名配置文件
/etc/sysconfig/network
可通过hostname查看主机名,也可修改hostname,格式hostname 新名,这里重新启动系统就没有了,若要永久修改则需进入network文件进行修改保存。
4)静态主机名配置文件
/etc/hosts
4.网络测试命令
1)ping测试网络连通性
格式:ping ip
ping 域名
2)测试DNS解析
简单解析:host 域名
详细解析:dig 域名
3)显示路由表(每台主机中都存有)
ip route
4)追踪到达目标地址的网络路径(路由设备)
traceroute 目标地址/域名
有时不一定成功,出现***表示该路由服务器不允许追踪。
5)使用mtr进行网络质量测试(结合traceroute和ping)
mtr 目标地址(检测到目标地址的网络质量)
6.网络故障排查
网络故障排查遵循从底层到高层、从自身到外部的流程进行。
1)先查看网络配置信息是否正确 ifconfig
ip
子网掩码
网关
DNS
2)查看网关是否联通
ping 网关
3)查看DNS解析是否正常
host 目标域名
----------------------------------------------------------------------------------------------
课时第18节Linux多命令协作:管道及重定向
* 不要重复发明轮子
* 开源文化的核心理念之一就是不要重复发明轮子,很多的开源软件都是现有软件、代码、功能的重新组合,就好像通过零件装配机器一样,源代码的开放和共享让这成为了可能,同时也大大的提高了效率和生产力。
* 管道和重定向
* 在Linux系统当中,大多数命令都很简单,很少出现复杂功能的命令,每个命令往往只实现和一个或几个很简单的功能,我们可以通过将不同功能的命令组合在一起使用,以达到完成某个复杂功能的目的。
* Linux中,几乎所有命令的返回数据都是纯文本的(因为命令都是运行在CLI(命令行)下),而纯文本形势的数据又是绝大多书命令的输入格式,这就让多命令协作成为可能。
* Linux的命令行为我们提供了管道和重定向机制,多命令协作就是通过管道和重定向完成的。
* 命令行shell的数据流有以下定义`方便管理shell中的信息流`
* STDIN 标准输入 编号0 键盘`用来采集信息`
* STDOUT 标准输出 编号1 终端`用来输出正常信息`
* STDERR 标准错误 编号2 终端`用来输出报错信息`
* 命令通过STDIN接收参数或数据,通过STDOUT输出结果或通过STDERR输出错误
* 通过管道和重定向我们可以控制CLI的数据流`标准输入、标准输出、标准错误`
* 重定向
* \> 将STDOUT重定向到文件(覆盖),即保存`注意只能保存标准输出信息,错误信息不可以保存`
* echo "linuxcast.net" > outfile`文件名`
* \>> 将STDOUT重定向到文件(追加)`注意只能保存标准输出信息,错误信息不可以保存`
* echo "linuxcast.net" >> outfile`文件名`
* 2>`2代表标准错误的编号` 将STDERR重定向到文件中
* 2>&1 将STDERR与STDOUT结合
* < 重定向STDIN`不是很常见`
* grep linuxcast < /etc/passwd`相当于在/etc/passwd中查找含有linuxcast关键字的内容`
* 管道`使用的最多`
* | 将一个命令的STDOUT作为另一个命令的STDIN
* ls -l | grep linuxcast`代表列出含有linuxcast内容的文件`
* find / -user linuxcast 2> /dev/null | grep Video `在linuxcast用户中查找含有Video内容的信息`
* 可以做到多命令的协作
* 管道通常用来组合不同的命令,以实现一个复杂的功能
* 重定向通常用来保存某命令的输出信息或错误信息,可以用来记录之行结果或保存错误信息到一个指定的文件
-----------------------------------------------------------------------------------------------
课时第19节文件浏览
cat 查看文件内容
more 以翻页形式查看文件内容
less 以上下翻页形式查看文件内容
head/tail
grep 基于关键字进行文本搜索
grep 'linuxcast' /etc/passwd 在/etc/passwd 中搜索linuxcast项
find / -user linuxcast | grep Video
-i 在搜索时忽略大小写
-n 显示结果所在行数
-v 输出不带关键字的行,排除选项
-Ax 在输出的时候包含结果所在行之后的指定行数
-Bx 在输出的时候包含输出结果前几行 -B3
基于列处理文本
cut -d: -f1 /etc/passwd 修剪指定列,显示passwd到位第1列,指定分隔符是‘:’
grep linuxcast /etc/passwd | cut -d: -f3 输出linuxcast的信息,指定分隔符是:,并显示第3列
-d 指定分隔符
-f 指定输出列
-c 基于字符进行切割 cut -c2-6 /etc/passwd
文本统计
-l 只统计行数
-w 只统计单词
-c 只统计字节数
-m 只统计字符数
文本排序
sort对文本内容进行排序
-r 进行倒序排序
-n 基于数字进行排序
-f 忽略大小写
-u 删除重复行
-t c 使用c作为分隔符分割为列进行排序
-k x 当进行基于指定字符分隔为列的排序时,指定基于那个列排序
unip用以删除重复的相邻行 cat linux | uniq
diff linux linux-new 比较两个文件的区别
-i 忽略大小写
-b 忽略空格数量的改变
-u 统一显示比较信息[一般用以生成patch文件]
diff -u linux linux-new > final.patch
aspell 处理文本内容
tr用来处理文本内容
tr -d 'apple' < linux //以重定向的形式
转换大小写
tr 'a-z' 'A-Z' <linux
搜索替换
sed用以搜索并替换文本
-----------------------------------------------------------------------------------------------
课时21Linux系统启动详解
启动流程:
1.BIOS
输入输出系统一般保存在主板BIOS芯片中,第一个运行的就是它并负责检查硬件可启动设备,可在BIOS设置中定义启动顺序USB,CDROM,HD
2.MBR:Boot Code
BIOS 找到启动设备后执行其引导代码-为MBR前446字节
3.执行引导程序-GRUB
主流引导程序,可引导现在几乎所有操作系统,保存在/boot/grub目录中,它的配置文件grub.conf
4.加载内核KERNEL
MBR引导代码代到并加载到LINUX内核,保存在/boot/vmlinuz-2.6.32-279.el6.i686[版本号],为了精简不常用的驱动,功能编译成模块,动态加载并打包保存initramfs文件
用dmesg可查看本次启动内核输出信息
5.执行init
为linux运行的第一个进程,调用/etc/rc.d/rc.sysinit负责对系统初始化,挂载文件系统,根据运行级另启动相应服务
linux运行级别:
0 关机
1 单用户模式
2 不带网络的多用户模式
3 多用户模式
4 未使用
5 xll 图形化多用户
6 重新启动
top 命令可以查看PID,其中1为init
6.runlevel
默认的运行级别可以通过文件/etc/inittab 下修改,每个级别对应启动服务保存在/etc/rc.d/rc[0123456]中
runlevel 显示当前运行级别
init 3 可以切换到3级别
忘记root密码进入单用户(启机按上下键)
单用户修改root密码
按e键
为内核传递参数‘1’或者“single”系统进入单用户
改完按b键启动
单用户模式下不启动任何服务
单用户模式直接以root用户登录,并且不需要密码
可以使用passwd修改root密码
通过在grub.conf中的启动设置中加入如下参数可对grub启动设置密码:
password --md5 xxxxxxxxxxxxxxxxxxxx
加密后的密码可以通过grub-md5-crypt生成
grub-md5-crypt
Password: 输入密码
再编辑
vi /boot/grub/grub.conf
加上生成的:password --md5 xxxxxxxxxxxxxxxxxxxx
如果root忘记,grub启动密码也忘记,只能把硬盘拆下装到其它电脑上挂载,把grub.conf的加密去掉
----------------------------------------------------------------------------------------------
课时22:RPM软件包管理
RPM软件包管理
* 源代码形式
* 绝大多数开源软件都是直接以源代码形式发布
* 源代码一般会被打包成tar.gz的归档压缩文件
* **程序源代码需要编译成为二进制形式之后才能够运行使用**
* 源代码基本编译流程:`先解压缩``比较麻烦``安装软件必须要管理员权限`
1. ./configure 检查编译环境、相关库文件以及配置参数并生成makefile
2. make 对源代码进行编译,生成可执行文件
3. make install 将生成的可执行文件安装到当前计算机中
* 源代码形式的软件使用起来较为麻烦,但是兼容性及可控制性较好
* 开源软件一般都会大量使用其他开源软件的功能,所以开源软件会有大量的依赖关系(使用某软件需要先安装其他软件)
* RPM
* 源代码形式的缺点:操作复杂、编译时间较长`10M可能就要编译10几分钟,几百M可能要几个小时`、极容易出现错误`CentOS或者Redhat默认使用RPM方式管理软件`
* 源代码形式的有点:使用所有系统、可定制
* 为了方便实用,Erik Troan和Marc Ewing开发了RPM(redhat Package Manager)
* RPM通过将源代码基于特定平台系统编译为可执行文件`不能解决跨平台的问题`,并保存依赖关系,来简化开源软件的安装管理
* RPM设计目标如下
* 使用简单
* 使用单一软件包格式文件发布(.rpm文件)
* 可升级
* 追踪软件依赖关系
* 基本信息查询`作者、发布时间、版本号、说明等`
* 软件验证功能
* 支持多平台
* RPM软件包常用命令规范
* linuxcast`软件名称`-1.2.0-30`版本号,越高软件越新`.el6`针对于el6系统平台`.i686`32位还是64位x86_64`.rpm
* RPM基础命令
* 安装软件:`rpm -i software.rpm`
* 卸载软件:`rpm -e software``注意不加版本号等`
* 升级形式安装:`rpm -U software-new.rpm`
* rpm支持通过http、ftp协议安装软件
* rpm -ivh http://www.linuxcast.net/software.rpm
* 可以加入以下参数`通常都会加上vh两个参数`
* -v 显示详细信息
* -h 显示进度条
* RPM查询
* RPM会保存软件相关的很多信息,可通过以下命令查询
* rpm -qa 列出所有安装的rpm软件
* rpm -qf filename 查询目标文件属于哪个rpm包
* rpm -qi packagename 查询指定已安装rpm软件的信息`不需要加版本号等`
* rpm -ql packagename 查询指定已安装rpm软件包含的文件
* rpm -qip software.rpm 查询rpm文件的信息
* rpm -qlp software.rpm 查询rpm文件包含的文件
* RPM验证
* 软件在传播的过程中可能会被恶意的修改,所以为了安全起见现代系统都加入了对软件的验证功能
* 验证一般使用非对称加密算法,所以需要一个密钥
* 导入密钥
* rpm -import RPM-GPG-KEY-CentOS-6
* 验证rpm文件
* rpm -K software.rpm
* 验证已安装的软件`验证哪些不该被修改的文件被修改了`
* rpm -V software
-----------------------------------------------------------------------------------------------
课时23YUM软件管理
rpm软件包形式管理软件虽然方便,但是需要手工解决软件包的依赖关系,很多时候安装一个软件需要首先安装1个或多个(有时多达上百个)其他软件,手工解决时很复杂。使用yum可以解决这个问题。
YUM(Yellowdog Updater Modified)是一个RPM的前端程序,主要目的是设计用来自动解决RPM的依赖关系问题。其特点如下:
自动解决依赖关系
可以对RPM进行分组,并基于组进行安装操作
引入仓库概念,支持多个仓库
配置简单
YUM引入了仓库(repo)的概念、仓库用来存放所有现有的rpm软件包,当使用yum安装一个rpm软件时候,如果存在依赖关系,会自动在仓库中查找依赖软件并安装。
仓库可以是本地的,也可以通过HTTP、FTP或NFS形式使用集中的、统一的网络仓库
(如仓库中没有需要的依赖关系软件包,yum也无法解决软件依赖问题)
2.YUM仓库
yum使用仓库保存管理rpm软件包,仓库的配置文件保存在/etc/yum.repos.d/目录下,格式如下:
[linuxcast]
name=This is LinuxCast.net rpm sotf repo
baseurl=http://www.linuxcast.net/yum/centos/6/i386/rpms/(可以是互联网上的yum仓库,也可以是本地的一个文件目录)
enabled=1(1:启用该仓库,0:禁用该仓库)
gpgcheck=1(是否打开校验。防止rpm包进行恶意修改)
仓库可以使用file,http,ftp,nfs方式
yum配置文件必须以.repo结尾
一个配置文件内可以保存多个仓库的配置信息
/etc/yum.repos.d/目录下可以存在多个配置文件
mirrorlist参数可以通过后面的地址中动态获取baseurl方便baseurl的更新
enabled没有写时,默认为1,启用
3.YUM基本命令
yum管理软件的常用命令:
yum install software-name 安装指定软件
yum remove sofware-name 卸载指定软件
yum update software-name 升级指定软件
4.YUM查询
通过以下命令使用yum进行查询操作:
yum search keyword 搜索
yum list (all | installed | recent | updates) 列出全部、安装的、最近的、软件更新
yum info packagename 显示指定软件的信息
yum whatprovides filename 查询哪个rpm软件包含目标文件
4. 创建YUM仓库
可以通过以下方式手工创建yum仓库:
①将所有rpm文件拷贝到一个文件夹中
②通过rpm命令手工安装createrepo软件
③运行命令createrepo -v /rpm-directory
④如果有分组信息,则在运行命令的时候使用-g参数指定分组文件
createrepo -g /tmp/*compsxml /rpm-directory
CentOS/RHEL的分组信息保存在光盘repodata/目录下,文件名以comps.xml结尾的xml文件
创建好之后本机可以通过file方式直接使用,如果需要作为对外的YUM仓库服务器,可以通过HTTP,FTP或NFS协议共享出去
5. YUM CACHE
yum为了提高速度会通过很多信息,但是有时候缓存会造成一些故障,可以通过以下命令来清除缓存:
yum clean all
每次运行安装或查询类命令会重建yum缓存
每次yum进行修改时需要删除缓存信息