Unix发展史:
1969年,美国贝尔实验室的肯 汤普森在DEC PDP-7机器上开发出了UNIX系统,并和丹尼斯里奇开发完成B语言
1971年,肯 汤普森的同时丹尼斯里奇除了UNIX正式版;1973年,完成C语言的开发并将Unix系统第三版用C语言重写,这为提高UNIX系统的可移植性打下基础
常见的UNIX主要发型版本
AIX IBM
HP-UX HP
Solaris Sun
Linux、BSD Red Hat
Linux发展史:
1991年,芬兰大学生李纳斯和后来陆续加入的众多爱好者共同开发完成
Linux主要发行版本:redhat centOS SUSE...
ubuntu
Linux特点:
开源、免费、安全、稳定
缺点:
易用性差、厂商支持性差
开源软件:
php、http、python....
特点:
绝大多数开源软件免费
可以获得软件源代码
可以自由传播、改良甚至销售
Linux应用领域:
基于Linux的网站服务器
处理电影娱乐业
嵌入式应用
/-----------------Linux安装(基于虚拟机)--------------------------/
虚拟机:
VMware是一个虚拟PC的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新的PC,以此来实现在一台机器上真正同时运行两个独立的操作系统
VMware特点:
不需要分区或重新开机就能在同一台Pc上使用多种操作系统
本机系统可以与虚拟机系统网络通信
可以设定并随时修改虚拟机操作系统的硬件环境
Linux安装事要:
1.磁盘分区:
磁盘分区是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分。
2.分区类型:
主分区:最多只能有4个
扩展分区:
最多只能有1个
主分区加扩展分区最多有4个
不能写入数据,只能包含逻辑分区
逻辑分区:分区数超过3个后,自动出现在扩展分区里的描述分区。
3.格式化(写入文件系统):
windows:fat16(单文件容量最大2G) fat32(单文件最大4G) ntfs(单文件最大8G)
Linux: ext2 ext3 ext4
//越新的文件系统,支持硬盘分区大小更大,单文件更大,读写速度更快,,数据更安全
4. 硬件设备文件名
硬件 设备文件名
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-d]
// /dev/hda1 hd:IDE硬盘 sd:SCSI,SATA硬盘 a:第一块硬盘 1:第一个分区
// /dev/sdv5 第三块scsi硬盘的第一个逻辑分区
5.挂载(给每个分区分配挂载点)
windows中: 盘符
C:\
D:\
E:\
Linux中:
硬盘文件名---------指定挂载目录(盘符)
/dev/sda1 /boot
必须分区:
/ ---根分区
swap分区 ---交换分区,内存2倍,不超过2GB
推荐分区:
/boot --启动分区,200MB(相当于windows的隐藏分区)
6.密码原则
复杂性
八位字符以上,大小写字母、数字、符号
不能是英文单词
不能和用户相关的内容
易记忆性
时效性
栗子:
Flzx_3QC (飞流直下三千尺)
!see(5tl)!sayshit(man)
7.安装日志:
/root/install.log :存储了安装在系统中的软件包以及其版本信息
/root/install.log.syslog:存储了安装过程中留下的事件记录
/root/anaconda-ks.cfg:以Kickstart配置文件的格式记录安装过程中设置的选项信息
8. 安装完成准备
关闭防火墙
使用Setup工具关闭
关闭SELinux 曾强安全组件
临时:setenforce 0
永久:vim /etc/selinux/config disabled 重启生效
启动网卡
vim /etc/sysconfig/network-scipts/ifcfg-eth0
修改ONBOOT="yes"
重启网络服务
service network restart
/---------------------Linux常用命令-----------------------------------/
Linux文件命名规则
1.除了/之外,所有的字符都合法,但有些字符最好不用,如空格符、制表符、退格符和字符@#$%()-等
2.避免使用 . 作为普通文件名第一个字符;
3.大小写铭感(包括文件命名,命令,命令选项,用户名等)
Linux命令的格式
命令 [选项] [参数]
栗子: ls -la /etc
命令名称:ls
命令英文愿意:list
命令所在路径:/bin/ls
执行全新啊:所有用户
功能描述: 显示目录文件
语法:ls [-ald] [文件或目录]
-a 显示所有文件,包括隐藏文件
-l 详细信息显示(长格式显示)
-d 查看目录属性
文件颜色
1、默认色代表普通文件
2、绿色代表可执行文件。
3、红色代表tar压缩包文件
4、蓝色代表目录文件
5、洋红色代表图像文件
6、青色代表连接文件
7、黄色代表设备文件
8、背景红色代表损坏的连接文件
更多的文件颜色规则详见:/etc/DIR_COLOR
常见文件类型:
- 普通文件
l 连接文件
d 目录文件
Linux命令提示符:
[root@localhost src]#
[当前登录用户@主机名 当前所在目录]
# 超级用户
$ 普通用户
当前所在目录:
~ 用户家目录
/root 管理员
/home/用户名 普通用户
(Linux系统严格区分大小写,包括命令和文件名)
Linux常见目录
/ 根目录
/bin 命令保存目录(普通用户就可以读取的命令)
/boot 启动目录,启动相关文件
/dev 设备文件保存目录
/etc 配置文件保存目录
/home 普通用户的家目录
/lib 系统库保存目录
/mnt 挂载目录
/root 超级用户的家目录
/tmp 临时目录(重启后可清空)
/sbin 命令保存目录(超级用户才能使用的目录)
/proc 记录服务器内存及cpu情况的动态文件系统
/sys 同上
/usr 系统软件资源目录
/usr/bin/ 系统命令(普通用户)
/usr/sbin/ 系统命令(超级用户)
/usr/local/ 常用安装软件目录
/var 系统相关文档内容
/var/log/ 系统日志位置
/var/spool/mail/ 系统默认邮箱位置
/var/lib/mysql/ 默认安装的myslq库文件目录
/--------------------Linux命令-----------------------------------/
一:目录操作命令
1.cd 切换所在目录
命令名称:cd
命令英文愿意:change directory
命令所在路径:shell内置命令
执行权限:所有用户
相对路径:参照当前所在目录,进行查找。一定要先确定当前所在目录。
cd ../usr/local/src
绝对路径:从根目录开始指定,逐级递归查找。在任何目录下,都能进入指定位置。
cd /usr/local/src
cd ~ 进入当前用户的家目录
cd 进入当前用户的家目录
cd - 进入上次目录
cd .. 进入上一级目录
cd . 进入当前目录
2.pwd显示当前所在目录
命令名称:pwd
命令英文原意:print working directory
命令所在路径:/bin/pwd
执行权限:所有用户
3.mkdir文件出命令
命令名称:mkdir
命令英文愿意:make directories
命令所在路径:/bin/mkdir
执行权限:所有用户
语法:mkdir -p[目录名]
功能描述:创建新目录
-p递归创建
栗子: mkdir newdir
mkdir -p /11/22/33/44 (递归在根目录下创建11...)
4、rm删除
命令名称:rm
命令英文原意:remove
命令所在路径:/bin/rm
执行权限:所有用户
-rf 文件名
-r 删除目录
-f 强制删除
5.cat 文件名
查看文件内容、从头到尾
命令名称:cat
命令所在路径:/bin/cat
执行权限:所有用户
-n 列出行号
6.more 文件名 分屏显示文件内容
命令所在路径:/bin/more
执行权限:所有用户
【空格向下翻页 B 向上翻页 Q退出】
7.head 文件名
显示文件头
命令所在路径:/usr/bin/head
执行权限:所有用户
head -n 行数 文件名 (指定显示文件头几行)
head -n 20 文件名
tail -n 行数 文件名 指定显示文件尾行
8.连接文件
ln
命令名称:ln
命令英文原意:link
命令所在路径:/bin/ln
ln -s 源文件 目标文件 //软连接,相当于windows中的快捷方式
ln 源文件 目标文件 //硬连接,拷贝加同步更新
//不能给目录,不能跨分区
文件名都必须写绝对路径,否则软连接移动后失效
文件和目录都能操作的命令:
1.cp-复制
命令名称:cp
命令英文原意:copy
命令所在路径:/bin/cp
执行权限:所有用户
cp 源文件 目标位置
-r 复制目录
-p 连带文件属性复制
-d 若源文件是连接文件,则复制连接属性
-a 相当于-pdr(all)
cp aa /tmp/ 原名复制
cp aa /tmp/bb 改名复制
2.剪切或改名
命令名称:mv
命令英文原意:move
命令所在路径:/bin/mv
执行权限:所有用户
mv 源文件 目标位置
栗子:
mv /root/aa /tmp/
mv aa bb (更改文件名字)
3.修改权限
- rwx rwx rwx
文件类型、文档所有者权限、文档所在群组权限、其他访问者权限
文档类型:
- 普通文件
d 目录文件
l 连接文件
文档权限代表
r 读 4(十进制表示)100
w 写 2(十进制表示)010
x 执行 1(十进制表示)001
chmod
命令名称:chmod
命令英文原意:change the permissions mode of a file
命令所在路径:/bin/chmod
执行权限:所有用户
逻辑描述方法:
属主权限: u
属组权限: g
其他人权限:o
chmod u+x aa //aa文件的属主加上执行权限
数字描述法:
chmod 777 aa
// -rwxrwxrwx aa
文件与目录权限区别:
文件:
'r' cat more head tail 查看文件内容
'w' echo vi 修改文件内容
'x' sh(execute) 执行
目录
'r' ls find tree 列入文件
'w' touch mkdir rm 创建删除文件
'x' cd 进入目录
!!!!!!!!!!!!!!赋予权限要合理!!!!!!!!!!!!!!!!!!!!!!!!!!!!
对目录w权限,就意味着需要有rwx权限
对脚本执行,需要rx并对该目录有rx权限
修改属主和属组:
chown
命令名称:chown
命令英文原意:change file ownership
命令所在路径:/bin/chown
执行权限:所有用户
chown 用户名 文件名 改变文件属主
chown user1 aa user1(必须存在)
chown user1:user1 aa 改变属主同时改变属组
chgrp 组名 文件名 改变文件属组
新建文件权限为644,新建目录权限为755
umask 显示0022
创建文件的默认权限掩码值
第一位特殊权限位
其他为三类用户的权限掩码值,用最大权限777减去
777
-022
----------
755
就是创建文件的默认权限
帮助命令:
1、man命令 (查看命令的帮助-只用于有文件实体的命令)
命令名称:man
命令英文原意:manual
命令所在路径:/usr/bin/man
执行权限:所有用户
2、help命令 (查看shell内核命令)
用法:[命令] --help
查找命令:
1、whereis 命令名 (查找命令的命令,同时看到帮助文档的位置)
命令名称:whereis
命令所在路径:/usr/bin/whereis
执行权限:所有用户
which 相同,可以看到命令的别名
2、find 搜索文件命令
通配符---常用于文件查找
* 任意字符任意多个
? 任意字符一个
[] 指定范围值
^ 反响匹配
正则表达式---常用于内容查找
. 除换行外任意字符
* 任意个
? 0或1个
^ 开头
find命令
命令名称:find
命令所在路径:/usr/bin/find
执行权限:所有用户
1、按照文件名查找
find 查找位置 -name 文件名
find / -name aabbcc //精确超找文件aabbcc
find /etc -name init* //超找在/etc下以initiative开头的文件
2、按照用户
-user 用户名 按照属主用户名查找文件
-group 组名 按照属组组名查找文件
3、按文件大小
-size +10k(大于10k),-10k(小于50k)
find / =size +10k 查找/下大于10k的文件
(默认单位512Byte)
4、按照类型
-type 类型 按照文件类型查找
f:普通
d:目录
l:链接
5、按照权限
find /root -perm 644 (按照权限查找)
6、按照文件名(不区分大小写)
-iname 按照文件名查找,不区分大小写
7、按照i节点
-inum 按照i节点查找(文件ID号)
逻辑连接符 -a(and) -o(or)
多条件查找,条件之间可加逻辑连接符
find /etc -size -10M -a -size +1M
(查找小于10M并大于1M的文件)
对查找到的文件进一步处理
find ... -exec 命令 {} \;
{}表示find查询的结果集
\是转义符 表示一个命令或符号使用其本身的意义,不使用别名
; 分号是表示语句的结束(固定格式,只能这样写,中间有空格)
转义符的作用是什么?
在linux中有一个别名机制,如rm删除文件,执行的确实rm -i (用which rm 可以查看命令别名),使用rm删除文件前会提示,就是因为rm -i 这个参数。如果想使用命令原意,可以在加\转义
栗子:\rm test.txt 则不会提示,直接删除
3、grep “字符串”文件名
(查找符合条件的字串行)
命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
grep -i "root" /etc/passwd
-v 反向选择
-i 忽略大小写
find:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配。通配符是完全匹配
gerp:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式匹配,正则表达式是否包含匹配
压缩和解压缩
格式:
.gz .bz2 linux可以识别的常见压缩格式
.tar.gz .tar.bz2 常见的压缩和打包命令
压缩同时打包
tar -zcvf 压缩文件名 源文件
tar -zcvf aa.tar.gz aa
-z 压缩.gz格式
-j 压缩.bz2格式
-c 打包
-v 显示压缩过程
-f 指定压缩包名
(注意:选项f必须在最后,否则报错)
tar -zxvf 压缩文件名 解压缩同时解打包
-x 解压缩
查看未解压缩的包内容
tar -ztvf aa.tar.gz (查看不解包)
tar -jtvf aa.tar.bz2
-t 只查看,不解压
tar -jxvf root.tar.bz2 -C /tmp/(指定解压缩位置)
网络命令
1、ping 测试网络连通性
ping -c 次数 ip 探测网络通畅
2、ifconfig 查询本机网络信息
可临时修改网卡ip
ifconfig eth0 192.168.1.1 mask 255.255.255.9
3、netstat 查看网络状态的命令
-t 查看tcp端口
-u 查看udp端口
-l 监听
-n 以ip和端口号显示,不用域名和服务器名显示
-a 查询所有连接
-p 查看进程名
通常用 netstat -ptlun
4、write 和 wall(=write all) 广播命令
write user 回车
》发送内容
》Ctrl+D 保存发送
wall 回车
》发送内容
》Ctrl+D保存发送
所有用户都能收到信息
关闭和重启命令
1、shutdown -h now 没有特殊情况,使用次命令
-h 关机
-r 重启
shutdown -r now 等同于 reboot
挂载命令
linux所有存储设备使用前必须要挂载,包括硬盘(硬盘开机自动挂载)U盘等需要手动挂载
mount挂载
命令名称:mount
命令所在路径:/bin/mount
执行权限:所有用户
光盘挂载
/dev/sdal 第一个scsi硬盘的第一分区
/dev/cdrom 光盘设配软连接
/dev/hdc 光盘设配名 centos5.5
/dev/sr0 光盘设备名 centos6.x
(以上三个文件都是一回事,版本不同而已)
mount -t 文件系统 设备描述文件 挂在点(已经存在空目录)
栗子:mount -t iso9660 /dev/cdrom /mnt/cdrom
光盘卸载:
umount /dev/cdrom
umount /mnt/cdrom 强调:退出挂载目录,才能卸载
U盘挂载
fdisk -l 查看设备识别情况,u盘插入后会识别为sdb
mount -t vfat /dev/sdb1 /mnt/usb
CentOS6.x系列挂载时不需要指定-t类型也能自动识别挂载成功!!
/========================Vim操作========================================================/
1、常用模式操作命令
1、插入
i 在光标所在字符后插入
I 在光标所在行尾插入
a 在光标所在字符前插入
A 在光标所在行首插入
o 在光标下插入新行
O 在光标上插入新行
2、定位
小范围移动 h j k l 对应方向:← ↓ ↑ →
:set nu 设置行号
:set nonu 取消行号
gg 到文章第一行
G 到文章最后一行
nG 到第N行
:n 到第N行
3、替换和撤销
r 取代光标所在字符
R 开启替换模式一直替换知道esc结束
u 撤销
Ctrl+r 反撤销
4、搜索和替换
"/string" 查找指定字符串
:set ic 忽略大小写
n 从结果中查找下一个
N 从结果中查找上一个
:$s/old/new/g 全文替换指定字符串
:$s/old/new/c 全文替换指定字符串,每次替换询问
:n1,m2s/old/new/g 在指定范围替换指定字符串
小技巧:
:1,5s/^#/g 注释1到5行
:1,5s/^#//g 取消注释
:1,5s/^/\/\//g 文件头加入//
显示颜色高亮
:synatax on 开启高亮
:synatax off 关闭高亮
Vim配置文件
自定义配置
~/.vimrc文件,没有手动创建
************************软件包管理********************************************************
一、软件包分类
1、二进制包(rpm)
特点:安装速度快 简易
缺点:自定义性差 依赖性
a-->b-->c 树形依赖
a-->b-->c-->a 环形依赖(这玩意要怎么安装!)
2、源码包
由软件开发源码组成,安装时需要编译工具如gcc、gcc-c++等
优点:特点、开源、定制
缺点:安装时间长,一旦报错,不易解决
3、脚本安装包
shell脚本编写的安装包 实际内容依然是两种安装的方式,安装过程可以交互
二、二进制安装包的管理(rpm)
1.rpm管理工具
1、软件包命名
包名-版本号-发布次数-适合linux系统-硬件平台.rpm
操作没有安装过的软件包,软件包使用包全名
否则直接使用包名
2.安装与升级卸载等
rpm -ivh 包全名(绝对路径,一般在光盘的软件包目录中[Packages])
-i 安装
-v 显示详细信息
-h 显示进度
-U 升级
-e 卸载
--nodeps不检查依赖性,强卸载!
查询
-q 查询包是否安装
-qa | grep httpd 显示所有安装包
-qi 查询包的信息
-p 查询未安装包的信息
-qip 查询没有安装包的信息
-i information
-ql 查询包中文件的安装位置
-qlp 查询没有安装的包,打算安装位置
-l list
-qf 查询系统文件输入哪个包
开启/关闭 服务
service httpd restart|start|stop|status
yum在线管理工具(相当于windows下360软件管家)
1、安装
yum -y install 包名
-y 自动回答yes
2、卸载
yum -y remove 包名
3、升级(有网络)
yum -y update 包名
4、查看
yum list 查看所有可以安装的包
【如果没有网络,yum管理工具可以将多媒体软件库作为yum源(池),继续完成软件管理】
yum默认将/etc/yum.repo.d/CentOS-base.repo文件作为第一yum原配置文件,此文件描述了网络站点的下载地址,
如果此文件存在,则继续上网安装,断网时会安装失败。需要将yum源切换为光盘的多媒体文件中去
将光盘作为yum源
1、将yum第一源文移走或改名
mv /etc/yum.repo.d/CentOS-base.repo /root/
2、挂载光盘
mount /dev/cdrom /mnt/cdrom
3、修改media配置文件,指定yum源为挂载点
vim /etc/yum.repos/d/CentOS-Media.repo
#修改开始#
baseurl=file:///mnt/cdrom/ 指定yum源位置
enabled=1 yum源文件生效
gpgcheck=1 rpm验证不生效
测试安装
yum -y install gcc (gcc是c语言编译器,不装gcc,源码包不能安装)
三、源码包安装
1、上传软件包
使用winscp等工具远程连接linux,上传所需安装包
2、安装(重点)
1、解压
tar -xf 包文件
2、cd解压目录
进入解压文件目录
3、查看安装文档
README INSTALL
4、检测
./config --prefix=/usr/local/apache2
功能:
1、检测系统环境,生成Mackfile
2、定义软件选项
--prefix指定软件安装目录
5、编译
make
【若编译失败使用make clean清楚编译文件】
6、安装
make install
【报错判断:
第一:安装过程是否停止
第二:停止处是否出现error wraning no 等错误报警】
7、启动
/usr/local/apache2/bin/apachect1 start
【与yum安装方式区别开】
[源码包的启动脚本大多存在与安装目录中]
8、卸载
直接删除安装目录
rm -rf /usr/local/apache2/
/=================About shell================================================================/
什么是shell
命令解析器,帮助人际交互的翻译官
windows的桌面也是shell的一种!
linux的shell有
/etc/shells 记录该Linux安装了那些shell
B类 sh bash
C类 tcsh
shell不同,命令提示符不同
几乎所有Linux缺省都是bash(Bourne-again Shell),非常适合于一些管理操作
一些比较老的unix,缺省都是sh
重点来了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
bash提供常用功能如下:
一、命令补全
使用tab建
如果不是唯一,按两下全部列出
二、快捷操作
Ctrl+C 终止命令
Ctrl+A 光标到行首
Ctrl+E 光标到行尾
Ctrl+U 剪切光标前内容
Ctrl+K 剪切光标后内容
Ctrl+Y 粘帖剪切的内容
Ctrl+L 清理屏幕
Ctrl+D 注销登录 相当于exit和logout 或者保存
Ctrl+Z 将进程在后台挂起
Ctrl+Q 可以接触Ctrl+S的文件保存锁定
命令历史
history 列出所有的命令(默认最多保存条数1000)
!序号 执行历史中第几条命令
!命令 执行最近的这条命令
按向上(或向下)箭头,翻出历史记录
命令别名
别名:类似快捷键
命令:alias
添加一个别名(临时)
alias copy=cp 就可以用copy来复制文件了
如果有参数:
alias drm="rm -rf"
删除别名:
unalias copy
别名永久修改
在用户宿主目录:~/.bashrc文件中添加别名信息如:alias vi=vim
重启生效 或者 source ~/.bashrc及时生效
拓展:
source命令
作用:在当前bash环境下读取并执行Filename中的命令
该命令可用"."来代替【一般情况下】
输入输出重定向
shell对于每个进程预先定义了3个文件描述字
0 标准输入 STDIN 键盘
1 标准输出 STDOUT 显示器
2 标准错误输出 STDERR
重定向:就是改变这个标准设备,不用键盘输入,不用显示器输出
1、输出重定向
>或>>
栗子:
echo hell 直接输出的到显示器上
echo hell >test.txt 将输出定向到test.txt中
追加写入用>>
2、输入重定向
栗子:wall</tes/msg 从一个文件读取内容发广播
3、错误输出重定向
2>或2>> #描述字和符号之间不许有空格
栗子:
ls /aaaaaa 2>ls.err
管道连接符
将一个命令的输出传送给另一个命令,作为另一个命令的输入
用法:
命令1|命令2|命令3
栗子:
ls -l/etc | more
一个新的命令:wc -l统计文件有多少行
命令连接符
";"
不管执行是否成功,多个命令依次执行
栗子:pwd;ls;date
"&&"
前面执行成功,才执行后面的命令,如果前面的命令错误,后面终止执行
"||"
前面执行失败,才执行后面的命令
/**********************用户管理***************************************************/
用户及用户组配置文件
用户信息文件:/etc/passwd(重要)
用户密码文件:/etc/shadow
用户组信息文件:/etc/group
/etc/passwd 文件中格式
用户名:用户名,字段和字母组成
密码:标识,代表密码位,并不存放真实密码
UID:用户ID
GID:初始组ID
描述:描述用户的信息
宿主目录:用户登录时的缺省目录
命令解析器:使用哪种shell,默认为bash
栗子:
1 root:x:0:0:root:/root:/bin/bash
第一部分:用户名
第二部分:密码位
第三部分:用户id=uid
第四部分:组id=groupid
第五部分:描述给管理员
第六部分:宿主目录=家目录
第七部分:该用户命令解析器
用户类型:
Linux用户分为3种
超级用户:root UID=0
普通用户:UID=[500-60000]
伪用户:UID=[1-499]
(伪用户因系统应用和程序服务而存在,如bin、shutdown、reboot)
伪用户通常不需要或无法登录 nologin
大多数没有宿主目录,个别存在
/etc/shadow
栗子:
1 root:$6$MhdbjN/aFqpcLIzd$uXWtWWklREIuwDmDjcjFxL8Csyrdu7ZFM15CuCAbCsbpCP4Cu4N Nz3gaDvlVqncGZLDGK.1771fthk3Lsjwz6.:16684:0:99999:7:::
第一部分:用户名
第二部分:用$分成三部分
1、加密类型 6 SHA-512 5 sha-256 1 md5
2、盐值(salt) 增加密码复杂度
3、加密密文
第三部分:单位天
最后一次密码修改时间 相对UNIX时间元年 19700101
第四部分:单位天
密码最小修改时间间隔
第五部分:单位天
密码有效时间 99999
第七部分:单位天
密码失效补救时间
第八部分:单位天
密码失效时间 相对于UNIX时间元年 197000101
第九部分:缺省 未来使用
/etc/group
栗子:
1 root:x:0:
第一部分:组名
第二部分:组密码
第三部分:组ID=GID
第四部分:组内用户列表
(将改组当做附属组的用户,用逗号分割)
如何手动添加一个用户
1、建立所需组群
2、将/etc/group和/etc/gshadow同步化
3、建立帐号属性
4、将/etc/passwd和/etc/shadow同步化
5、建立帐号密码
6、建立家目录
7、修改家目录权限
创建用户:
用户及用户组管理命令
添加 useradd groupadd
修改 usermod groupmod
删除 userdel groupdel
密码 passwd gpasswd
查看用户信息 id
切换用户 su
命令格式:useradd 选项 用户名
-g 缺省组(默认为用户名组)
-G 所属组(添加多个用户组,用','隔开)
-c 描述信息
-d 指定家目录
密码及删除
passwd 用户名
-l 锁定
-u 解锁
(只有root有权限)
userdel -r 用户名
-r:删除用户相关文件,建议使用
修改用户信息
usermod
-g 修改缺省组
-G 修改所属组
-l 改名
-c 改备注
-e 过期时间
-L 锁定用户
-U 解锁
-aG 追加所属组
添加用户组
groupadd 组名
修改:groupmod 选项 组名
-n: 修改组名
groupmod -n newname oldname
删除组:grpupdel
组密码:gpasswd -a 用户名 组名
-a添加用户到组
-d删除用户从组
特殊权限:
SetUID
ls -l /usr/bin/passwd
chmod 4755 filename
chmod u+s filename
SetGid chmod 2755 file
SetBIT chomod 1777 dirname
ls -ld /tmp
特殊权限位的理解
危险的实验:
将vi命令赋予setUID
修改passwd文件和shadow文件
特殊权限的作用
当你在普通用户执行vi时,这一刻root附体
setGID效果同setUID,想用root组权限
粘着位的作用:创造一块各玩各的空间
ACL权限
ACl,一个文件/目录访问控制列表,可针对指定的用户/组分配RWX权限
watch
设置权限:
setfacl -m<rules><files>
setfacl -m u:用户名:权限 文件名
setfacl -m g:组名:权限 文件名
栗子: setfacl -m u:jack:rx /backup
设置ACL命令的参数
-m:设定权限
-x:移除指定权限
setfacl -x u:jack /backup
-b:移除所有权限
-R:递归设置(对于目录)
继承设置:setfacl -m d:u:jack:rwx -R /test
对于新创建的文件和目录也生效
查看ACL权限:getfacl文件(唱歌时后面多个+)
Linux忘记密码怎么办:
在启动界面按任意键进入GRUB目录
把Kernel行文件打开 在最后加个"1" 回车保存后按B进入单用户模式进行改密码
/******************Linux进程管理***********************************************/
进程和程序的区别
一动一静,对应关系-多对多
父进程与子进程
老子管儿子,僵尸和孤儿
前台进程和后台进程
前台进程
ping 127.0.0.01>>ping.result
创建一个子进程,运行命令,shell等待他
结束,才能返回给用户提示符。
这条命令在前台运行,用户在它完成之前不能执行另一个命令
后台进程
ping 127.0.0.1>>ping.result&
若后随一个&,shell创建子进程运行此命令
但不等待命令退出,而是直接返回到对用户给出提示。
[后台进程必须是非交互式的]
插入一命令:
watch
检测一个命令的运行结果。
可以拿他来检测你想要的一切命令的结果变化,比如tail一个log问及那
ls检测某个文件的大小变化
watch [参数][命令]
-n watch缺省每2秒运行一个程序,可以用-n来指定间隔的时间
-d 会高亮显示变化的区域
-t 会关闭watch命令在顶部的时间间隔
watch -n 1 ls -l
进程常用命令
1、w 显示目前登入系统的用户信息
-f 开启或关闭显示用户从何登入系统
-l 使用详细格式列表
2、who
简单查看登录者的信息
3、ps查看进程信息(process status)
-a 显示终端下的进程(当前用户进程)
-u 显示用户和启动时间
-x 表示没有控制终端的进程
-e 显示所有进程
-l 长格式显示
-uU用户名 查看系统中指定用户执行的进程
ps -le 或aux 查看所有用户执行的进程详细信息
常见选项的含义
PID 进程号 1为init系统第一个进程
PPID 父进程的进程号
TTY 启动的终端 tty1-7本地 1-6字符 7图形 pts/n远程
STAT 进程当前状态:s休眠 D不可中断的休眠 R运行 Z僵死 T停止
NI 进程优先级
TIME 进程自启动依赖站CPU的总时间
COM 进程的命令名
USER 用户名
%CPU 占CPU时间和总时间的百分比
%MEM 占用内存与系统内存的百分比
start 进程触发的时间
tim 占CPU的时间
command 进程本身
kill 杀死一个进程
kill 进程号(PID)
kill的信号 kill-l可以列出很多
常用:kill -9 进程号(强行关闭)
kill -1 进程号(重启进程)
关闭图像程序 xkill 鼠标按哪,关闭那
结束所有同名进程 killall -9 进程名称
5、以p开头的命令
pgrep httpd 查看 httpd进程的所有pid
重启apache进程:kill -1 'pgergp httpd'
pkill httpd 直接关闭httpd进程,不用pid了
6、优先级命令
nice
指定程序进行的优先级
格式:nice a myprogram
列:nice --5 /etc/rc.d/init.d/httpd start(默认是0,指定为-5)
ps -le | grep httpd
renice
改变一个正在进行的进程的ø优先级
栗子: renice n pid
优先级取值范围(-20,19)默认值为0 值越小,权越大
ps -le 中,NI就是优先级
7、前后台进程操作
一个符号:
把进程放到后台运行 在后面加&
ping 127.0.0.1>>/test/ping.result&
另一个终端去查看
tail -f/test/ping.result
两个操作:
进程的挂起和终止
挂起 Ctrl+z 暂停
终止 Ctrl+c
三个命令:
查看被挂起或在后台执行的过程
jobs
进程的恢复
fg[序号] 恢复到前台继续运行
bg[序号] 恢复到后台继续运行
若不加序号,则默认将命令作用与+修饰的进程
8、top命令
显示,管理执行中的程序
语法:
top [bciqsS][d<间隔秒数>][n<执行次数>]
执行top指令可显示目前正在系统中执行的程序,并通过它所提供的互动界面,用热键加以管理
上面的信息,类似与w显示的信息
下面类似与ps -le信息
内置命令:
d 间隔描述
c 显示整个命令行,而不仅仅显示命令名 command
u 用户名 只显示某用户的信息,管理员可以看某用户在干嘛
k 提示输入pid关闭进程
r 调整优先级
M 内存排序
p CPU排序
q 退出
9、free-m 查看内存状态
10、查看proc文件下信息
ls/proc
该目录存放的是进程信息,数字以pid为目录名,信息存放在目录中
cat /proc/cpuinfo 查看cpu信息
cat /proc/menminfo 内存信息
cat /proc/partitions 分区信息
/**********************进程分类****************************************************/
1、分类
standalone 独立运行
xinetd 进程托管
atd、crond 计划任务
standalone 独立运行
如apache、mysql的服务,启动后,进程会一直在系统中
占用cpu的 内存资源,等待或处理客户端的请求
占用系统资源多,但响应速度快
xinetd 进程托管(需要独立安装yum -y install xinetd)
有些服务,用的很少,没必要独立运行 列入telnet
ls /etc/xinetd.d查看这个目录有很多脚本
服务不启动,由xinetd监听这个端口,有客户端访问,则启动进程,等服务完成后,结束进程
响应速度慢一点,但减少了系统资源占用
atd、crond计划任务
每隔一分钟,从休眠中醒来一次,所以,计划任务不能精确到秒
2、管理
#chkconfig --list
运行级别:0-6
0 关机
1 单用户模式
2 不完全多用户
3 完全多用户
4 未分配
5 图形界面
6 重启
init 0 关机
init 6 重启
runlevel 查询系统当前运行级别
vi /etc/inittab
id:3:initdefault: 定义系统默认运行级别
列出在每一种运行级别下服务是启动还是关闭
chkconfig --list|grep atd(查看计划任务服务)
3 、启动服务
rpm 包安装的服务
service 服务名 start|stop|restart|status
设置开机自启动
vi /etc/rc.local ===>/etc/rc.d/rc.local
ntsysv
所有系统默认安装服务都可以使用ntsysv命令进行自启动管理
源码包安装的服务
绝对路径启动
/usr/local/apache2/bin/apache2 start
开机自启动
vim /etc/rc.local
写入启动命令
/usr/local/apache2/bin/apache1 start
***************************计划任务********************************************
主要分为两种计划任务:
一次性计划任务
周期性计划任务
一次性计划任务:
1、指定时间的方式
绝对计时方法
midnight 午夜
noon 中午
teatime 下午茶(16:00)
hh:mm[todayo]
hh:mm tomorrow
hh:mm MM/DD/YY
相对计时方法
now+n minutes
now+n hours
now+n days
具体看帮助 man at
2、如何设定系统时间
系统时钟:date
设置日期:date -s '1995-11-25 11:00'
硬件时钟
clock--systohc 将系统时间存回硬件时钟内
clock--hctosys 系统时间设成和硬件时钟一致
3、任务设定
指定在今天下午17:30执行某命令,假设当前时间是2013年1-15
at 17:30
at now+3 hours回车进入编辑命令
栗子
at now + 1 minutes回车
/usr/bin/wall "Hello World!"
4、查看任务
查看队列中的任务
at-l 或 atq
存放在这里
ls/var/spool/at/的一个可执行文件,任务执行后文件消失
5、删除任务
删除一次性计划任务
ad -d 序号
7、低负载计划任务batch(拓展)
batch用法与at一样
无需指定时间,安排在系统负载较轻是运行一次
一般负载低指0.8(w或top命令能看到)
周期性计划任务
1、crontab命令
周期性计划任务
三个常用选项:
-l 列出当前crontab
-r 删除当前的crontab
-e 编辑当前的crontab文件
crontab -e
内容格式:分 时 日 月 周 命令/脚本
栗子:
每天04:00
0 4 * * * /usr/local/apache2/bin/apachel start
周二和周五18:00
0 18 * * 2,5
1月到3月,周二和周五18:00
0 18 * 1-3 2,5
!写命令时,最好写上出错信息!
/bin/cp -r/etc/backup/etc.bak 2>>error.err
3、特殊匹配符号
多个值用 ","
连续的值 "-"
任务匹配 "*"
步长 "/n"
4、执行命令
命令给出绝对路径
用户必须具有运行的权限
保存在/var/spool/cron
检查crond进程是否开启
ps -le|gerp crond
/etc/rc.d/init.d/crond start
5、权限设置
限制那些用户可以使用crontab
/etc/cron.allow
/etc/con.deny
***************************VSFTP*********************************************
Ftp遵循网络层ftp协议,三次握手建立连接后开始交互
默认两个端口
20 数据传输
21 命令传输
(防火墙PortBB会拦截文件传输)
安装vsftpd服务
yum -y install vsftpd
启动 service vsftpd start
默认启动后,即支持普通用户宿主目录访问及匿名访问
匿名访问
用户名:ftp 或 anonymous
密码为空
window下ftp常用命令
连接:ftp 192.168.10.123
ls 查看所在目录文件信息
cd 切换ftp上的目录
get 下载单个文件
put 上传
bin 切换到使用二进制传输方式
ascii 借还到文本传输方式
lcd 指定下载到本机的哪个目录
prompt 关闭交互模式
mput 上传多个(先关闭交互模式,多个文件之间用空格分割)
mget 下载多个
bye 退出
配置文件
vim /etc/vsftpd/vsftpd.conf
匿名用户:
anonymous_enable=YES 是否允许匿名用户访问 关闭:改为NO
anon_upload_enable=YES 匿名用户允许上床,默认注释了
anon_mkdir_write_enable=YES 匿名用户允许创建目录,默认是注释了
anon_max_rate=100000追加 匿名用户最大传输速率为100kb/s
(记得修改目录LInux文件系统权限!!!)
日志
xferlog_enable=YES是否使用日志
(精良要生成日志)
xferlog_std_format=YES 日志使用标准的格式
xferlog_file=/var/log/xferlog 日志文件存放的位置, 需要开启
用户访问
默认普通用户,直接可以登录访问宿主目录
默认可以上传下载
local_enable=YES
write_enable=YES
loacl_umask=022 #创建的目录权限为755
local_max_rate=20000 追加用户最大传输速率为 200kb/s
(只要系统中的普通用户,默认都能登录ftp,这样有安全隐患)
访问列表
限制指定用户不能访问,而其他用户可以访问
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
栗子:
限制指定用户能访问,其他用户不能访问
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
vi /etc/vsftpd/user_list #一个用户一行
限定用户
chroot 让ftp用户把宿主目录当作根目录,这样不能切换其他目录了
chroot_local_user=YES
控制那些用户不受此限制
chroot_list_enable=YES 白名单 NO 黑名单
chroot_list_file=/etc/vsftpd/chroot_list #一个用户一行,列表中的用户,不受chroot限制
其他
ftp_banner=Welcome to blah FTP service
欢迎信息,防止透露出ftp的软件版本好
idle_session_timeout=600 空闲10分钟后被挂断
max_clients=50 服务器总并发连接数
max_per_ip=3 每个客户机最大连接数
list_port=10011 指定一个非标准端口 默认连接为21 传输20
扩展:
nmap端口扫描工具
用法:
nmap {IP}
nmap 默认只扫描知名端口
nmap -pl-65535 192.168.10.10 扫描全部端口(1到65535)
************************Samba服务器**************************************************
samba服务器在unix系统中实现了smb/cifs协议
通过Samba服务可以实现UNIX/Linux主机与windows主机之间的资源互访
特点:
必须是系统用户,但使用独立密码
默认安装samba并添加用户(smbpasswd -a 用户名),即可访问自己的宿主目录(可读写)
查看是否安装了samba
rpm -q samba
安装
yum -y install samba
启动
service smb start
两个进程:
smbd ==>tcp 139 用户验证和文件共享
nmbd ==>udp 137 138 浏览共享和计算机名解析
用户管理
1、首先必须是系统用户,添加Linux系统用户
设置samba的密码(samba自带的用户管理工具)
smbpasswd -a 用户名 #加用户
smbpasswd 用户名 该密码
roo用户可以使用管理命令
pdbedit -a username:新建samba账户
pdbedit -x username:删除samba账户
pdbedit -L:列出samba用户列表:读取/etc/samba/passdb.tdb数据库文件
pdbedit -Lv:列出samba用户列表的详细信息
建立samba连接
windows中连接samba
可以映射网络驱动器
net use
net use * /de/y
net use \\192.168.10.123 "password" /user:your_user
防火墙:
iptables -L查看
iptables -F 清空防火墙规则,拆除防火墙
及时生效,重启后复原
service iptables stop
永久生效,重启后不会复原
SElinxu
允许访问
setsebool -P samba_enable_home_dirs on
或完全禁用
vi /etc/selinux/config 改为SELINUX=disabled
Samba配置文件
vim /etc/samba/smb.conf
[global]全局环境选项:
workgroup 工作组或域
server string 描述信息
security 安全模式,有如下选项
share 不验证权限,直接共享
user 缺省,推荐有linux samba服务器做验证
server 第三方主机验证
domain 第三方主机验证(必须是windows 域控制器)
hosts allow 那些主机可以访问(缺省所有主机都可以)
哪些主机不允许访问,hosts deny 一般不和hosts allow同时使用
log file 日志文件(最好开)
[homes] 只要有这个配置段,用户默认就可以通过自己的用户名,访问自己的宿主目录
comment 描述
browseable=no 无权限访问的目录,不显示出来
/*******************Apache配置*************************************/
1、www: worl wide web 万维网
http协议 超文本传输协议
html语言: 超文本标识语言
2、URL统一资源定位符 协议+域名:
3、apache配置文件
默认网页保存位置:
源码包:/usr/local/apache2/htdocs/
rpm包安装:/var/www/html/
日志保存位置:
源码包:/usr/local/apache2/logs/
rpm包:/var/log/httpd/
配置文件位置:
/usr/local/apache2/etc/httpd.conf
日志轮替
日志需要轮替:
1、切割(年月日)
2、轮替 route 30
Logrotate:
vi /etc/logrotate.conf
/usr/local/apache2/logs/access_log{
daily
create
dateext
rotate 30
}
[root@localhost~]#logrotate -f /etc/logrotate.conf强制刷新截取日志
Error_log也要进行轮替
配置文件
针对主机环境的基本配置
ServerRoot apache主目录
Listen 监听端口
LoadModule 加载的相关模块
User.Group 用户和组
将htdocs目录用户组和用户改为daemon,之后可以。
ServerAdmin 管理员邮箱
ServerName 服务器名(没有域名解析时,使用临时解析。不开启)
ErrorLog"logs/error_log 错误日志
CustomLog"logs/access_log common 正确访问日志
DirectoryIndex index.html index.php 默认网页文件名,优先级顺序
Include /etc/extra/httpd-vhosts.conf 子配置文件中内容也会加载生效
主页目录及权限
DocumentRoot "/usr/local/apache2/htdocs"
主页目录
<Directory "/usr/local/apache2/htdocs">
#Directory关键字定义目录权限
Options Index FollowSymLinks
#options
None:没有任何额外权限
All:所有权限
Indexes: 浏览权限(当此目录下米有默认网页问件事,显示目录)
FollowSymLinks:准许软件连接到其他目录
AllowOverride None
#定义是否允许目录下.htaccess文件中的权限生效
None:.htaccess中权限不生效
All:文件中所有权限都生效
AuthConfig:文件中,只有我那工业认证的权限生效。
Require all granted 访问控制列表
定义此目录的允许访问权限:
栗子:
仅仅允许ip为192.168.1.1的主机访问
<RequireAll>
require all granted
Require ip 192.168.1.1
</RequireAll>
目录别名:
子配置文件名:
etc/extra/httpd-autoindex.conf
开启配置文件
Alias /icons/ "/usr/local/apache2//icons/"
apache以为在这里 实际目录位置
定义别名 /icons/----
http://192.168.1.253/icons/
<Directory "/usr/local/apache2//icons">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
4、用户认证
限制特定目录,只有指定用户可以访问
1、建立需要保护的目录
使用别名,在系统位置建立目录,然后保护
mkdir -p /share/soft
2、修改配置文件,允许权限文件生效
centos 命令软链接 centos软连接作用
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
centos7用命令上传、下载文件
centos7用命令上传、下载文件
centos linux 上传下载