1.1.1 Linux系统简介-UNIX发展历史和发行版本
父子关系,unix 60年代----windows 80年代----linux 90年代
unix发行版本——IBM,HP,SUN(solaris):可以在PC上使用,SUN已被orace收购
类Unix操作系统:苹果系统由Unix演变而来
unix——C语言(重写)——TCP/IP(发展) :网络操作系统
1.1.2 Linux系统简介-Linux发展历史和发行版本
91年芬兰大学生开发:企鹅LOGO(芬兰吉祥物) OR 南北极不属于任何国家,意为开源
内核:www.kernel.org/ 原班人马发布
其它的为开发版 (发行版)
分支:redhat和debian(区别:安装方式)
linux中的个人版:全功能版,测试用
1.2 Linux系统简介-开源软件简介
典型:php(大像),APACHE(自由羽毛),MYSQL
开源软件(源代码开放) 自由软件(freeware ,免费软件,不一定开源)
收费软件(Unix)
开源软件安全性好:足够多的眼睛就会让问题浮现
1.3 Linux系统简介-Linux应用领域
www.netcraft.com 操作系统统计:腾讯,淘宝,安卓
企业服务器和嵌入式应用
2.2 Linux系统安装-系统分区
windows:分区---格式化---分配盘符
linux : 分区---格式化---硬盘设备文件名(Sda---Sdd):第几块硬盘 ---挂载点:空目录(/ 根分区,/swap 虚拟内存 ,/boot 启动分区)
分区设备文件名(Sda1---sda8)
sda1--sda4(主分区)---sda5(第1个逻辑分区)
sda1:/boot——sda2:/swap(内存2倍,一般为2G)—— sda3:/home (文件分区)——sda4(扩展)——sda5:/(根分区)
2.4 Linux系统安装-远程登录管理工具
vmware 网络设置中:桥接(局域网其他的机器也能访问虚拟机,其它方式只能与本机通讯) 如果有2块网卡,要选择用哪块网卡来桥
其它方式是本机网卡没有入网的情况下使用
远程工具:SecureCRT中文字体乱码解决:1.选项中--仿真--终端--Linux
2.外观--当前颜色方案:traditional --字体--任意中文字体--字符集gb2312--字符编码utf8
文件传输工具:WinSCP
3.1 给初学者的建议-注意事项
1.严格区分大小写
2.所有内容都是文件
3.不靠扩展名区分文件
4.所有存储设备都必须手动挂载
5.win和linux程序不能互相使用
3.2 给初学者的建议-服务器管理和维护建议
目录结构
/bin 保存命令的目录
/boot 启动文件
/dev 设备文件
/etc 配置文件
/home 宿主目录,家目录
/lib 函数库
/lost+found 磁盘碎片
/mnu or /media+/misc 挂载点 加载光盘,U盘
/usr/local 外来软件安装点 类似win的program
/proc+/sys 内存运行临时目录 重起清空
/srv 服务目录
/usr 系统资源目录,类似windows目录
/var 日志目录
4.1.1 Linux常用命令-文件处理命令-命令格式与目录处理命令ls
命令格式:
命令 选项 参数
ls -l /ec
ls 显示目录和文件(list)
ls -a ( -all )显示所有文件 (.开头的是隐藏文件)
ls -l (-long)长文件详细内容
ls -d 查看文件或目录本身的信息 定位查看 一般使用-ld
ls -i i节点,身份号
(通用参数-h 文件大小以K,M显示 可以配合-l选项)
du -sh 目录
查看目录大小
drwxr-xr-x
d 文件类型 d -(directory)目录 - -文件 l -(link)软链接
文件权限 r-red读 w-write写 x-execute可执行
3部分 rwx r-x r-x
3类用户 所有者u 所属组g 其它人o
user group others
4.1.2 Linux常用命令-文件处理命令-目录处理命令
mkdir (MD)创建目录 -p (递归创建)
cd 改变当前目录
pwd 查看当前目录
rmdir 删除空目录
touch 创建文件
cp 复制文件 -r 复制目录 -p 保持文件的属性 复制cp命令可以复制过程改名
mv 移动文件目录和改名 和cp的区别:作用目录时不需要用-r 可以移动过去改名也可以在当前位置改名
rm (remove)删除文件 -r 删除目录 加f 确认删除
清屏:clear=Ctrl+L
cat 查看短文件 -n 加行号 类似DOS下的TYPE
tac 查看后面几行
more 长文件查看 q退出 空格:翻页 回车:翻行
less 比more 多了向上翻 , page up:向上翻页 , 上箭头:向上翻行 ,/ 可查找 n:查找状态时下一个
head -n 查看文件的前几行
tail -n 查看文件的后几行 -f 动态显示后几页(监控日志)
4.1.4 Linux常用命令-文件处理命令-链接命令
ln(link)生成链接
-s 软链接:1.类似WIN快捷方式;2.有指向符;3.文件大小很小,所有用户都可以操作该文件
不加参数为硬链接:1.类似 cp -p (不同点:可以同步更新源文件内容;源文件删除,硬链接依然可以查看显示)
2.可以通过 ls -i 来看源文件和目标文件是不是存在硬链接关系(一个i节点对应该2个文件)
3.硬链接只能对文件生成,且不能跨目录
4.2.1 Linux常用命令-权限管理命令-权限管理命令chmod
chmod (改变文件权限)(root 和所有者才能使用)
1. {u,g,o,a}{+-=}{rwx}文件或者目录
2.数字表示权限: r--4 w--2 x--1
3.-R 递归修改,相当Win中的下级目录继承上级目录的权限
文件 目录
r 读取查看(cat相关) 查看目录(ls)
w 修改(vim) 创建删除(mkdir,touch,rm)
x 执行 进入目录 (cd)
目录权限RX通常同时出现
chown(ch won)改变文件目录所有者(root才能使用)
格式:chown 用户 文件名
chgrp 改变文件目录所属组
umask 改变查看目录默认创建权限
umask 结果 :0022 777-022=755 (rwx-r-x-r-x)
umask -S 直观查看默认创建权限
改变 umask 023 777-023=754 (这才是最后的创建权限)
umask 022 系统默认
4.3.1 Linux常用命令-文件搜索命令-文件搜索命令find
find(搜索) 范围 匹配条件
-name 按文件名 *(通配符) ?(通配符:单个字符)
-iname 不区分大小写
-size (+-=)大于小于等于N
-user (group)按所有者和所属组
- amin 访问时间access (cd)
- cmin 改变文件属性 change
- mmin 修改文件内容modify
-type f 文件 d目录 l软链接
- inum I节点
连接参数:
-a (and)同时满足
-o (or)只满足一个条件
对查找出的内容再做一个操作: -exec 命令 {} \; ( 换成-ok: 确认操作)
locate 文件名 (全盘搜索) 相对应的升级locate的索引文件库updatedb
-i 不区分大小写
which 查找命令===whereis(多了帮助信息位置)
grep 要找的文件内容 文件 (在文件中查找内容)
-i 不区分大小写
-v ^# 查找所有内容,排除以#号开头的行
--color =auto 自动显示颜色
4.4 Linux常用命令-帮助命令
man (manual手册)查看命令和配置文件帮助
man [1,5] password 单词即是命令又是配置文件 (1.查看命令 5.查看配置文件)
man=info
help 内置命令
4.5 Linux常用命令-户管理命令
useradd 用户名(添加用户)
passwd 用户名(为用户设置密码)
who 查看当前登陆用户
tty 本地终端
pts 远程终端
w=who
4.6 Linux常用命令-压缩解压命令
gzip 压缩 gunzip 解压缩 (缺点:只能压缩文件,不保留原文件)
tar 参数 生成的文件 要压缩的目录(对目录打包并压缩)
参数 -z 打包并压缩 -f 指定文件 -v显示压缩信息 -c打包
通常参数 tar -czvf
-x 解包对对应 -c 通常参数tar -xzvf
zip -r(压缩目录)生成的文件 要压缩的目录
unzip 解压缩
bzip2(Gzip的升级) -k (保留原文件或者压缩包)
tar -cjvf xxx.tar.bz2 要压缩的目录 (-j调用bzip2)
bunzip2 解压缩
tar -xjvf xxx.tar.bz2 解压缩tar.bz2
4.7 Linux常用命令-网络命令
write 用户名 (通信私聊)
ctrl+d 发送
wall 信息 (给所有在线用户发信息)
ping -c 3 (ping 3 次)
mail 用户名----------- 发邮件
mail---------查看邮件:序号查看,D+序号 删除指定邮件
last 登陆详细日志
lastlog 简单日志
lastlog -u 用户ID (指定用户)
traceroute 路由路径
netstat (查看网络信息)
-rn 查看路由信息
-an 查看所有信息
-tlun 只查看tcp/udp 信息 l:监听 t:TCP信息 u:UDP信息 n:显示IP地址和端口号
setup 网络配置
service network resart 网络服务重启(设置生效)
设备挂载
mount 显示挂载清单
ls -l /dev/cdrom 查看当前光驱文件名
mkdir /mnt/cdrom 先创建挂载点
mount 设备文件名 挂载点 (mount /dev/cdrom /mnt/cdrom)
umount 卸载 挂载点(必须退出当前设置挂载点)
4.8 Linux常用命令-关机重启命令
shotdown (关机重启命令)
-h [时间,now]关机
-r [时间,now]重启
-c 取消命令
reboot 重启
init [0-6] 切换运行模式
cat /etc/inittab 查看缺省启动模式
查看当前运行级别:runlevel
logout 退出用户
5.1 文本编辑器Vim-Vim常用操作
vim 文件名
默认命令模式---》: 转到编辑模式---》---i转到插入模式---》esc 返回命令模式---》wq 保存退出(q!不保存退出)
命令模式下输入 : set nu (加行号)
: set nonu (去除行号)
:n (移动到指定行)
gg :首行
G :尾行
0 :行首
$ :行尾
删除命令:
x : 删除单个字符
nx:连续删除N个字符
dd:删除光标所在行
ndd:删除N行
D:删除光标所在字符至行尾
:n1,n2d 删除指定行
复制剪切命令:
yy:复制
nyy:多行复制
p:粘贴到行下
P:粘贴到行上
剪切:dd+pp
编辑状态改变:
r 替换一个字符
R 替换模式
u 撤销
搜索替换命令:
/要搜索的字符串
n :下一个
/set ic 不区分大小写 /set noic 取消不区分大小写
:%s/源/目的/g 不提示全文替换
:n,ns/源/目的/c 提示替换某行到某行
保存退出:
:w (保存)
:w /文件名 (另存为)
:r 文件名 (导入文件内容)
:! 命令 (临时切换出vim使用命令)
上面2个命令一起使用 :r !date (导入当前时间)
快捷键定义:
:map (ctrl+v+ctrl+快捷字母) 要定义的操作
连续注释:
:n1,n2s/^/#/g (注释)
:n1,n2s/^#//g (去注释)
\ 转义符 比如 \/ 代表的是字符/
:ab mymail [email protected] (定义快捷AB)
vim自定义配置文件路径: /root/.vimrc /home/zouzou/.vimrc
6.1 软件包管理-简介
软件包分类:
1.源码包 (C语言脚本)
分支:脚本安装包(类似windows的安装界面)
源码包优点:
(1)开源,可修改源代码;
(2)可自由选择安装功能;
(3)编译安装,执行效率更高;
(4)卸载方便
源码包缺点:安装步骤多,安装时间长,安装出错解决复杂;
2.二进制包(0101机器语言包)
类似windows 是 exe包,linux redhat系统 的是RPM包(系统默认包)
RPM包优点:安装简单,安装速度快
RPM包缺点:看不到源码,安装选项少,依赖性(A包--B包--C包)
6.2.1 软件包管理-rpm命令管理-包命名与依赖性
1.包全名和包名
包全名:没有安装的软件包,注意路径(放在系统能识别的文件夹里,比如package),一般是软件安装升级
包名:操作已经安装好的软件包时,使用包名,这些包放在/var/lib/rpm 下 ,一般是软件的卸载
2.rpm安装
rpm -ivh 包全名
-i 安装 -v 显示详细信息 -h 显示进度
3.rpm升级
rpm -Uvh 包全名
-U 升级(upgrade)
4.rpm卸载
rpm -e 包名
-e 卸载(erase)
6.2.3 软件包管理-rpm命令管理-查询
rpm -q 包名
-q (query查询)
-a (all查询所有已安装过的包)
-i (information已安装包的信息)
rpm -qip 包全名
-p (package查询未安装包的信息)
rpm -ql 包名(查询包安装位置)
-l (list列表)
-p 未安装包装备安装的位置
查询系统文件名是属于哪个安装包:
rpm -qf 系统文件名
-f (文件file)
查询包依赖性
rpm -qR 包名
-R (依赖性requires)
6.2.4 软件包管理-rpm命令管理-校验和文件提取
1.RPM包校验
rpm -V 包名
-V (依赖verify)
校验不通过含意
2.RPM包中文件提取
rpm2cpio 将rpm包转换为cpio格式
rpm -qf /bin/ls 查询属于哪个包
mv /bin/ls /test/ 制造假像
rpm2cpio /mnt/cd/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls 进行修复
如不行还可以 cp /root/bin/ls /bin/
6.3.1 软件包管理-RPM包管理-yum在线管理-IP地址配置和网络yum源
网络配置文件中默认网卡是不启动的:
vim /etc/sysconfig/network-scripts/ifcfg-etho0 中 ONBOOT=yes
yum源配置文件:
6.3.2 RPM包管理-yum在线管理-yum命令
查询:
yum list 查询可用安装包
yum search 包的名称
安装:
yum -y install 包名
-y 自动回答YES
升级:
yum -y update 包名
卸载:
yum -y remove 包名
软件组查询:
yum grouplist |more
|more 显示的太多可以用more暂停便于观察
软件组安装:
yum groupinstall “查询到的软件组”
软件组卸载:
yum groupremove
6.3.3 RPM包管理-yum在线管理-光盘yum源
yum 文件路径 /etc/yum.repos.d/
步骤:
挂载光盘
1.让网络yum源失效,配置文件改成.bak
2.改光盘yum配置文件
baseurl
enable=1
6.4.1 软件包管理-源码包管理-源码包与RPM包的区别
源码包安装位置人为指定
源码包建议安装位置:/usr/local/软件名 软件启动必须用绝对路径
httpd 服务默认位置 /etc/rc.d/init.d/httpd
绝对位置启动服务 /etc/rc.d/init.d/httpd start(服务启动方式 service httpd start)
httpd 默认网站根目录 /var/www/html
6.4.2 软件包管理-源码包管理-源码包安装过程
准备工作:
源码下载上传解压
确认gcc 安装是否成功 rpm -q gcc
源代码位置:/usr/local/src
软件安装位置:/usr/local
1.进入到源码解压位置 (查看安装说明vim INSTALL)
2.配置文件 ./configure --prefix=/usr/local/apache2
3.make (如果报错,清除make clear)
4.make install
5.启动服务 /usr/local/apache2/bin/apachectl start
6.5 软件包管理-脚本安装包
类似windows安装方式(主要是源码包,驱动程序安装)
webmin(apache图形管理工具 ):
http://sourceforge.net/projects/webadmin/files/webmin/
安装命令 ./setup.sh
7.2 用户和用户组管理-用户管理相关文件
用户信息配置文件/etc/passwd
1.用户名称
2.密码标志
3.UID用户ID(改UID变超级用户) 1-499 伪用户 500-65535 普通用户
4.初始组(初始组+附加组)
5.用户说明(备注)
6.家目录
7.用户的shell:命令解释器 (/bin/bash默认 /sbin/nologin禁用用户)
7.1.2 用户和用户组管理-用户配置文件-影子文件
影子文件/etc/shadow
1.用户名称
2.密码位 (* 和!禁用密码)
3.最后一次修改密码时间 :1970是起始时间,后面+天
4.限定2次密码修改间隔
5.密码有效时间
6.密码到期警告时间
7.密码到期宽限时间
8.帐号失效时间 :比67权优先
9.保留
把时间戳换成日期
date -d "1970-01-01 16066 days"
把日期换成时间戳
公式
7.1.3 用户和用户组管理-用户配置文件-组信息文件
/etc/group
1.组名
2.组密码位
3.GID
4.组中附加用户
/etc/gshadow
1.组名
2.组密码
3.组管理员用户
4.组中附加用户
7.2 用户和用户组管理-用户管理相关文件
家目录
普通用户:/home/user 提示符$ 改用户uid 为0 但家目录不会变
超级用户:/root 提示符#
用户邮箱
/var/spool/mail/用户名
用户模板目录
/etc/skel
7.3.1 用户和用户组管理-用户管理命令-useradd
useradd
参数
-u UID
-d 指定家目录位置
-c 指定用户说明,如有空格请加双引号
-g 指定初始组
-G 指定附加组,多组用,分隔
-s 指定用户登陆shell 默认:/bin/bash
useradd 默认值
7.3.3 用户和用户组管理-用户管理命令-usermod和chage
usermod(和useradd参数同)
-L 锁定用户
-U 解锁用户
chage 用户 (修改用户密码状态)
chage -l 用户 :查看用户密码信息
-d 0 密码最后一次修改时间(被加0后说明用户没有修改过密码,实现的功能是用户一登陆就让其修改密码)
7.3.4 用户和用户组管理-用户管理命令-userdel和su
userdel -r 用户 删除用户并删除用户的家目录
id 用户 查看用户ID信息
su - 用户名(切换用户)
su - root -c "useradd user1" (临时切换到root 执行只有超级用户才能执行的命令)
7.4 用户和用户组管理-用户组管理命令
groupadd 用户组
groupmod -n 新组 老组 (修改组名)
gpasswd -a ( -d ) zouzou root 从root组加入(删除)zouzou用户
8.1.1 权限管理-ACL权限-简介与开启
df -h 查看分区信息
dumpe2fs -h /dev/sda1 查看分区是否支持ACL
手动挂载支持ACL,vim /etc/fstab (defaults,acl) ,然后重启系统 或者手动重新挂载根分区,mount -o remount /
8.1.2 权限管理-ACL权限-查看与设定
设定ACL权限:
setfacl -m u:st:rx /project 设置st用户对project有rx的权限
查看ACL权限:
getfacl 文件或目录
8.1.3 权限管理-ACL权限-最大有效权限与删除
最大有效权限:通过修改mask值后期控制group组(所属组+附加组)和mask值相与得到另外的权限
setfacl -m m:rx 文件或目录
删除acl 权限:
setfacl -b 文件或目录 (删除全部ACL权限)
setfacl -x u[g]:用户或组 文件或目录 (有选择的删除权限)
8.1.4 权限管理-ACL权限-默认与递归ACL权限
递归: -R 对目录有效 (对现有文件执行递归权限,对新建文件或目录无效)
默认递归继承: d: -R (对之前文件或目录无效 ,如果想对以前新建的文件要设置权限还需执行上面的权限)
8.2.1 权限管理-文件特殊权限-SetUID
功能理解:
1.可执行程序才能设置SUID权限(只对文件)
2.命令执行者(普通用户)对该程序有X权限
3.普通用户在执行拥有SUID的程序的时候,暂时(执行完变成普通用户)变成所有者用户的权限
4.(不确定)所有者U也应该对该文件有X权限
x(超级执行)
例: passwd(rwsr-xr-x) --------》可以对/etc/shadow修改
cat(rwxr-xr-x) --------》不能对/etc/shadow查看
设置SETUID权限 取消SETUID权限
chmod 4755 文件名 chmod 755 文件名
chmod u+s 文件名 chmod u-s 文件名
4755---setuid
2755---setgid
1755---sticky bit
8.2.2 权限管理-文件特殊权限-SetGID
SETGID权限对文件的处理和SetUid权限相似,----》变成当前文件所属组的权限
(普通用户获得所属组r权限)
例:locate(rwx--s--x)-----》/var/lib/mlocate/mlocate.mdb (rw-r-----)
chomod g+s (或者chmod 2755)
可以针对目录(用的少)
8.2.3 权限管理-文件特殊权限-Sticky BIT
翻议:黏着位(简称sbit)
作用:只能针对目录,对目录设置t权限后,虽然普通用户有777权限,但只有所有者才能删除该目录下的文件。
chmod o+t (或者chmod 1777)
8.3 权限管理-chattr权限
文件隐藏属性
chattr +i 文件 (+I属性 连ROOT用户都不能修改,删除,改名;锁住文件)
目录 (+I属性,/test/abc.txt 只能查看修改abc.txt 不能删除原有文件,不能新建文件)
主要作用:保护文件,防止误操作
chattr +a 文件 (比I属性多了个追加)
目录 (比I属性多了追加文件和修改文件)
取消属性-i 和-a
lsattr -a -d 查看所有文件隐藏属性,以-d方式
8.4 权限管理-sudo权限
sudo作用:root用户分配命令给普通用户(切记不要授权vim使用权限)
visudo 命令 (修改的是/etc/sudoers文件)
st ALL=/usr/sbin/useradd
%(组)
要授权的用户 被管理计算机的IP(目的IP)=命令绝对路径
sudo -l 普通用户查看当前用户可以执行哪些sudo命令
sudo 命令绝对路径(执行方法)
9.1 文件系统管理-回顾分区和文件系统
9.2.1 文件系统管理-文件系统常用命令-df、du、fsck、dumpe2fs
df -h 文件系统查看 (统计文件+系统资源)
du -sh 统计目录大小 -s:只统计主目录,不统计子目录(只统计文件占用)
fsck 设备文件名 :修复文件系统(类似chkdsk) (有可能修复系统,尽量不要修系统上当)
-a 或 -y 都是自动修复
dumpe2fs 设备文件名 ( 显示磁盘状态 )
9.2.2 文件系统管理-文件系统常用命令-挂载命令
fdisk sdb (硬盘)
查看分区UUID:dumpe2fs 分区名
1.挂载文件/etc/fstab
配置文件格式 :/dev/sdb1 /disk1 ext4 defaults 1 2
缓存cached:加速读
缓冲buffers: 加速写
查看swap分区 free -m 按m显示
分swap分区思路:fdisk ---》n建逻辑分区 ---》t改ID为82---》w保存退出---》如果退出分区在使用可以用partprobe重新载入分区---》格式化mkswap /dev/sdb6---》加入swapon(off) /dev/sdb6 这个是手动, 要开机自动加载swap请改启动配置
1.概念
硬件---》内核---》shell命令解释器---》应该程序 (此流程可逆)
shell是解释执行的编程语言,现编现执行,还可以直接调用linux命令
2.分类
A.早期的sh 主流bash兼容早期的sh
B.C家庭的csh和tcsh
3.系统中默认可用sh
查看/etc/shells
shell切换 默认bash ---sh---csh (exit退出当前shell)
10.2 Shell基础-脚本执行方式
[^0-9] 非数字的任意一个字符
特殊符号
变量不能以数字开头
变量值默认是字符串
环境变量建议大写(区分小写命令)
变量分类: 用户自定义变量------》环境变量------》预定义议量-------》位置参数变量