linux 笔记

linux笔记
netfilter/iptables   #iptables -F
iptables -F   /etc/selinux/config  可以关闭  SELINUX=disabled
setenforce 0       selinux关闭
pkill -HUP     nginx  重新加载配置文件
pkill -USR1 nginx  消耗的效率比-HUP更高
ulimit -a          查看所有限制
ulimit -n          可以查看当前的最大打开文件数
watch -n 1 "/sbin/ifconfig eth0 | grep bytes"  查看吞吐量
sar -n DEV
lspci linux下查看网卡芯片信息
arp  查看ip和mac的绑定
service network restart 重新启动网络服务
setup linux系统设置(图形)
ifdown eth0   禁用网络接口   ifconfig eth0 down
ifup   eth0   启用网络接口   ifconfig eth0 up
vi /etc/sysconfig/network     计算机的主机配置信息
vi /etc/sysconfig/network-scripts/ifcfg-eth0 网络设备配置文件
netstat -an | grep LISTEN  监控网络状态
netstat -an | grep :22
nmap 扫描周只端口、知名端口、改变服务器的默认端口可防止攻击
nmap 192.168.0.14
cat /etc/hosts   linux下hosts文件
route  查看路由表
traceroute  指令让你追踪网络数据包的路由途径,
traceroute   www.baidu.com
nslookup 查询Internet 域名信息nslookup
本机拷贝文件到远程主机
scp  本地文件 用户名@远程主机地址:远程主机目标目录
scp -r 本地目录 用户名@远程主机地址:远程主机目标目录
    -P 指定端口号
[root@helen ~]#scp -r /etc [email protected]:/home/mickey
rsync -arHz --progress -delete /script/ [email protected]:/home
-a 保持文件属性
-r 子目录递归处理
-H 保持文件硬链接
-z 备份文件传输时压缩处理
--progress 在传输时显示传输过程
--delete 删除目标备份没哟的文件
-c ssh 使用ssh加密隧道传输

linux shell
#/bin/sh
date date +%F    返回日期
date +%Y%m%d
df -h           查看磁盘使用情况
who
free -m  查看内存的使用情况
write xiaobai < /tmp/sysinfo && /bin/rm /tmp/sysinfo
/usr/bin/pgrep httpd 获取httpd下所有的进程号
/etc/rc.d/init.d/httpd start 启动apache
启动apache
$* 这个程序的所有参数
$# 这个程序的参数个数
$$ 这个程序的pid
$! 执行上一个程序命令的pid
$? 执行上一个命令的返回值
expr `expr 5+7`/$var4
/bin/grep $username /etc/passwd > /dev/null 2> /dev/null
userinfo=`/bin/grep ^$username:x /etc/passwd`
userid=`/bin/echo $userinfo | /bin/awk -F: '{print $3}'`  -F:表示用:号分隔 默认为空格
kill -9 强制杀死进程
awk -F: '$3==0 {print $1}' /etc/passwd

awk -F: 'length($2)==0 {print $1}' /etc/passwd

echo $passwd | /usr/bin/passwd --stdin $name$m

dnum=`df |awk 'NR==3{print int($4)}'`
/usr/bin/nc -w2 192.168.10.1 80    -w2 设置等待连接的秒数为2秒

netstat -an|grep :80|wc -l  统计并发数

Snapshotting
   快照是默认的持久化方式。
Append-only file
aof 比快照方式有更好的持久化性,是由于在使用aof持久化方式时,redis会将每一个收到的写命令都通过write函数追加到文件中(默认是 appendonly.aof)。
appendfsync everysec  //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
Mongodb固定集合和性能优化
Capped Collection(固定集合)

GridFS大文件管理
GridFS是一种在MongoDB中存储大二进制文件的机制,使用GridFS的原因有以下几种:
存储巨大的文件,比如视频、高清图片等。
利用GridFS可以简化需求。
GridFS会直接利用已经建立的复制或分片机制,故障恢复和扩展都很容易
GridFS可以避免用户上传内容的文件系统出现问题。
GridFS不产生磁盘碎片

慢查询
MongoDB Database Profiler是一种慢查询日志功能,可以作为我们优化数据库的依据。
    上面profile的级别可以取0,1,2三个值,它们表示:
0- 不开启
1- 记录慢命令(默认为>100ms)
2- 记录所有命令
    db.getProfilingLevel();
db.setProfilingLevel(1);
    启动时可以修改默认慢查询参数100ms

Replica Sets复制(副本集)
Mogodb在1.6版本开发了replica set,主要增加了故障自动切换和自动修复成员节点。各个db之间数据完全一致,最为
显著的区别在于,副本集没有固定的主节点,它是整个集群选举出得一个主节点,当其不工作时变更为其他节点,强烈推荐使用。

service smb restart
chkconfig --list
chkconfig smb on
chkconfig --list smb
chkconfig smb on
chkconfig --list smb

setfacl –m u:apache:rwx  file 设置apache用户对file文件的rwx权限 
setfacl –m g:market:rwx  file  设置market用户组对file文件的rwx权限 
setfacl –x g:market file   删除market组对file文件的所有权限 
getfacl  file  查看file文件的权限

ps -el | grep searchd
netstat -tunpl | grep :9312
netstat -an | grep :80

groupadd softadm
[root@localhost ~]# groupadd software
[root@localhost ~]# usermod -G software xiaobai
[root@localhost ~]# chgrp software /software/
[root@localhost ~]# chmod g+w /software/

1.创建存档文件
tar cf test.tar test.txt
2.查看存档文件
tar tf test.tar
3.解存档文件
tar xf test.tar
4.创建压缩文件(gz)
tar czf test.tar.gz test.txt
5.查看gz格式压缩文件(gz)
tar tzf test.tar.gz
6.解gz压缩文件(gz)
tar xzf test.tar.gz

fdisk分区

lvm的使用
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对
磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来
为文件系统屏蔽下层磁盘分区布局,从而提高磁盘分区管理的灵活性。通过lvm系统
管理员可以轻松管理磁盘分区。

Linux的chattr与lsattr命令
这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。
+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
chattr
chattr +i 文件
+i 表示不可修改
+a 只能增加

chown  www.www  * -R  修改当前目录下所有文件和子文件的权限
whois ip或域名   //查看信息

sudo  对于root授权的用户,可使用该命令临时切换到root用户环境下 (不需要密码)
授权文件为 /etc/sudoers 文件

whois  www.baidu.com
dig +trace  www.baidu.com
traceroute  www.baidu.com

whois ip或域名   //查看信息
dig +trace 域名
nslookup  域名
traceroute 域名

netstat -nal |grep -E "EST|WAIT" |wc -l
netstat -nal |grep -E "WAIT" | wc -l

vi /etc/xinetd.d/rsync
disable=no  启用服务
重启xinetd进程 service xinetd restart

xinetd是一个daemon程序,所有结尾带d的程序都是daemon程序,也就是守护程序 
守护程序分为2种处理模式: 
第一个是stand alone状态的,表示该程序始终监听,一直处于运行状态,例如httpd 
第二个是super daemon,它始终处于sleep状态,直到有人唤醒它,xinetd就是一个super daemon,但它的使命是将一个请求转给其他服务,也就是服务的管理者
XINETD 是系统的一个非独立服务,有很多服务要依靠它实现

mkdir 创建空目录 mkdir -p /a/b/c/d   //-p创建多个链接
more  分页显示文件内容  只能向下分页
less 可用pageup和pagedown来查看文件   上下都可以翻页
动态查看文件 tail -f 文件
所有的软链接文件权限 lrwxrwxrwx --> 原文件
用户能不能访问和执行取决于对源文件有什么权限
软链接 时间值 是创建软链接文件的时候的时间值
软链接类似win下的快键方式
硬链接:
类似于copy 完全copy
一个文件变化 另一个文件也会变 同步更新
删除源文件 硬链接还在

疑点:问什么硬链接可以同步更新?
硬链接文件与源文件有同一个inode
ls -i 查看inode

which 找出命令的绝对路径  别名
whereis [命令] //显示系统命令和帮助手册所在的目录
alias copy=cp
alias xrm="rm -r"
shutdown -h (关机)
shutdown -h 10 (十分钟之后关机)
reboot(重启)
init 6(重启)
init 0(关机)
给某个用户发消息
write username  (只能在同一个服务器上)
对方要在线
给所有人发消息 广播
wall Happy New Year!
查看命令的全拼
whatis
grep 字符串 文件   //搜索字符窜在文件中的位置
grep -v "#"  文件   // 过滤带警号的行
gerp 字符串 文件夹/* 
grep -r  字符串 文件夹 //明确要搜索子目录
 man 5 /etc/passwd
man 会调用more来查看帮助文档


-type 文件类型
f 二进制文件
l 软链接文件
d 目录
find /etc -name init* -a -type f
find /etc -name init* -a -type l
1、连接符 -a and 逻辑与 -o or 逻辑或
  find /etc -size +163800 -a -size -204800
  -user 文件所有者
find /home -user xiaobai
find /etc -mmin -120      120分钟
find / -size +204800
-size 文件大小 block数据块 100MB==102400KB==204800block

NTP 网络时间按协议
/etc/rc.d/rc.sysinit
服务的启动程序都在/etc/rc.d/init.d目录下
runlevel  查看当前运行级别
ntsysv  (直观的菜单叠选的方式)

//重启网络
service network restart

关闭防火墙
service iptables stop
service sshd start

数据压缩 bzip2(海量数据压缩)  安全 空间占用小
备份目录
cp -rpu
    -p  保留备份目录及文件属性
    -u  增量备份

tar 命令
可以同时打包多个目录  默认就是保留原来文件的属性
tar -zcf /backup/config_2012010701.tar.gz /etc  /boot
查看备份包文件(不解包)
tar -ztf /backup/config_2012010701.tar.gz
查找某个文件
tar -ztf /backup/config_2012010701.tar.gz | grep passwd

解压
tar -zxf /backup/etc_2012010701.tar.gz (默认好像解压到当前目录下)
-C 指定要解压的目录
tar -zxf /backup/etc_2012010701.tar.gz  -C /root/Public/

只解压某个文件
在根目录下
tar -zxvf /backup/etc_2012010701.tar.gz etc/passwd

-r(把一些文件追加到打包文件中)与-u(更新包中的文件)
-r与-u只针对tar包使用  压缩文件就不可以

理念和方法最重要

复习
定时执行计划任务中的命令
#tar -zcf /backup/etc_$(date +%F).tar.gz /etc
#tar -zcf /backup/etc_$(date +%Y.%m.%d-%H%M).tar.gz /etc

命令
fdisk
fdisk -l  查看磁盘情况
fdisk /dev/sda 给磁盘分区

查看已经挂载上的分区
df -l  
df -T  显示文件系统类型


vi
vi配置文件  在家目录下 vi .vimrc
set nu设置行号
set nonu 取消行号
:w  file_name  另存为
:q!  强制退出
:wq! 
:set fileencodings=utf-8 //设置
:set fileencodings  //查看

nslookup + dns   查看负载均衡




SNMP 简单网络管理协议
yum -y install net-snmp*

wget -c  http://down1.chinaunix.net/distfiles/rrdtool-1.4.5.tar.gz

MRTG的优点:简单、易上手,基本安装完了之后只要更改一下配置文件即可。
缺点:
1、使用文本式的数据库,数据不能重复使用;
2、只能按日、周、月、年来查看数据;
3、只能画两个DS(一条线、一个块);
4、每取一次数据即需要绘图一次,浪费系统资源;
5、无管理功能;

cacti其实是一套php程序,它运用snmpget采集数据,使用rrdtool绘图。
它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。
更难能可贵的是,它提供了强大的数据管理和用户管理功能,一张图是属于一个host的,
每一个host又可以挂载到一个树状的结构上。用户的管理上,作为一个开源软件,
它居然做到为指定一个用户能查看的“树”、host、甚至每一张图,
还可以与LDAP结合进行用户的验证!

rpm -qa | grep mrtg*
yum -y install mrtg*
mrtg流量图的实现过程
1.snmp调试
2.修改mrtg配置文件
3.根据配置文件生成图片和部分网页文件
4.生成首页index.html
5.cron轮询生成流量监控软件




cd /etc/cron.d/
放在这个目录下的脚本不用写计划任务了,会自动执行

shell脚本邮件报警-web
企业邮件服务器
25   发邮件端口
110  收邮件端口


网络实验环境
一台linux服务器
安装postfix
安装webmail


一台window xp客户端
安装outlook express


首先卸载服务器上的sendmail
pstree | grep sendmail
service sendmail stop
chkconfig sendmail off
chkconfig --list sendmail
pstree | grep sendmail
yum -y install postfix*


postfix负责25端口
dovecot负责110端口


yum -y install dovecot*


修改配置文件
vi /etc/postfix/main.cf
    myhostname = mail.g.cn
mydomain = g.cn
//发件人@后的后缀
myorigin = $myhostname
    myorigin = $mydomain
//25号端口在所有人上监听
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
//收件人的后缀
mydestination = $myhostname,$mydomain
//服务器所处的网段
mynetworks = 192.168.124.0/24, 127.0.0.0/8
//转发邮件
relay_domains = $mydestination


netstat -tunpl | grep 25
pstree | grep master
chkconfig postfix on
chkconfig --list postfix
改变邮件服务器当前选择的默认邮件服务
alternatives --config mta
输入2


netstat -tunpl | grep 110   //收邮件服务还没起来
vi /etc/dovecot.conf 
    把这一行的注释去掉
    protocols = imap imaps pop3 pop3s
pop3就相当与110端口


service dovecot restart
!net
!ps


useradd user1
passwd user1
useradd user2
passwd user2


这样系统会默认创建两个邮箱
[email protected]   [email protected]
用outlook测试发邮件 成功


在linux里面发邮件
telnet 192.168.124.130 25
[root@localhost ~]# telnet 192.168.124.130 25
Trying 192.168.124.130...
Connected to localhost (192.168.124.130).
Escape character is '^]'.
220 mail.g.cn ESMTP Postfix
mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected]
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
root -> user1
.
250 2.0.0 Ok: queued as 8DE97850A8
quit
221 2.0.0 Bye
Connection closed by foreign host.
You have new mail in /var/spool/mail/root
[root@localhost ~]# 




shell发送邮件脚本
#!/bin/bash
#disk.sh
echo "shell 111111111" | mail  [email protected]  -s "shell..." 


监控apache、mysql、磁盘空间
[root@localhost ~]# touch apache.sh
[root@localhost ~]# touch mysql.sh
[root@localhost ~]# touch disk.sh
[root@localhost ~]# chmod a+x apache.sh disk.sh mysql.sh
穿过服务器的端口
[root@localhost ~]# nc -w4 localhost 80
[root@localhost ~]# echo $?  //返回上一次指令的执行状态 0表示成功 1表示未成功


vi apache.sh
#!/bin/bash
#apache.sh


nc -w2 localhost 80
if [ $? -ne 0 ]
then
    echo "apache's 80 port is down,please you restart the apache process!"|mail  [email protected]  -s "apache is down"
    /usr/local/apache2/bin/apachectl restart
fi

vi mysql.sh
#!/bin/bash
#apache.sh


nc -w2 localhost 3306
if [ $? -ne 0 ]
then
    echo "mysql's 3306 port is down,please you restart the apache process!"|mail  [email protected]  -s "mysql is down"
    service mysqld restart
fi


vi disk.sh
#!/bin/bash
#disk.sh


num=`df | awk 'NR==2{print int($5)}'`
if [ $num -gt 85 ]
then
    echo "disk spache is ${num}%,now > 85%"|mail  [email protected]  -s "disk spache > 85%"
fi


[root@localhost ~]# dd if=/dev/zero of=text.txt bs=1M count=1000



写满操作系统 系统崩溃
dd if=/dev/zero of=/var/swap/file.swap bs=1024k count=64000000000000000000
可以用dd命令来测试文件的读写速度

磁盘配额 需要quota软件包

dd 软盘对拷
dd if=/boot/symvers-2.6.32-71.el6.i686.gz of=file1 bs=1k count=1024
dd if=/boot/symvers-2.6.32-71.el6.i686.gz of=file2 bs=1k count=1024
dd if=/boot/symvers-2.6.32-71.el6.i686.gz of=file3 bs=1k count=1024


练习
swap分区不够 可以用swapfile  通过文件的形式实现swap的功能
1.mkdir /var/swap
  chown 700 /var/swap  (只有root用户才能操作)
2.dd 硬盘对拷 可以把硬盘下的mbr都拷过去
   知识点:
     dd if=/dev/sda of=/dev/sdb
     伪设备
     /dev/zero   不断的输出0
     /dev/null   黑洞  接收多大的数据都会消失
     find / -name abc > abc.find 2>abc1.find
     find / -name abc > abc.find 2>/dev/null  从/下找abc文件 把信息输入到abc.find里 错误信息输入到/dev/null里
   操作
     dd if=/dev/zero of=/var/swap/file.swap bs=1024k count=64
3. 
把文件当成swap空间来用
mkswap  /var/swap/file.swap
4.
查看系统内存信息 以M来查看
free -m 
5.启用
swapon /var/swap/file.swap
关闭
swapoff /var/swap/file.swap  
6.free -m
7.然后在fstab文件中加一条
/var/swap/file.swap     swap      swap    0   0


复习
rpm -qa | grep quota
给用户分配权限
chown xiaobai.xiaobai -R xiaobai
su - xiaobai


配置snmp服务
1.安装snmp软件包
yum -y install net-snmp*
cd /etc/snmp/
mv snmpd.conf snmpd.conf.bak
vi snmpd.conf
   rocommunity public
   
service snmpd start
pstree | grep snmpd
netstat -tunpl | grep :161
netstat -tunpl | grep :162

yum -y install 包名(支持*) :自动选择y,全自动
yum install 包名(支持*) :手动选择y or n
yum remove 包名(不支持*)
rpm -ivh 包名(支持*):安装rpm包

chkconfig --list        #列出所有的系统服务
chkconfig --add httpd        #增加httpd服务
chkconfig --del httpd        #删除httpd服务
chkconfig --list        #列出系统所有的服务启动情况
chkconfig --list mysqld        #列出mysqld服务设置情况
chkconfig --level 35 mysqld on        #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig mysqld on        #设定mysqld在各等级为on,"各等级"包括2、3、4、5等级

alternatives  是 Linux中一个功能强大的命令,用于管理具有相同功能的不同软件(如:postfix/sendmail)或是同一软件的不同版本。
如开发中根据需要可能所使用的JDK版本会有所变化,总不能卸载后再安装吧,那得多麻烦
alternatives就可以让多个版本同时存在系统中,根据需要自定所使用版本

mail -s test  [email protected]  #第一种方法,你可以把当前shell当成编辑器来用,编辑完内容后Ctrl-D结束
echo "mail content"|mail -s test  [email protected]  #第二种方法,我用的最多,可能是喜欢管道的缘故吧
mail -s test  [email protected]  < file #第三种方法,以file的内容为邮件内容发信
 其实你很容易发现mail从标准输入读取文件内容并发信,我也只想让你知道这一点,到此,第二个例子结束。

w 查看个别用户的进程 w username
pstree
jobs  查看在后端运行的进程
fg 1  fg 2  把后端运行的进程拿到前端
 
bg 1 bg 2  (另开终端 恢复到后台)

wget -c 断点续传
-E或--extended-regexp   将范本样式为延伸的普通表示法来使用。
$ grep ‘w\(es\)t.*\1′ aa
grep -E,就不用"\"号进行转义,直接写成’w(es)t.*\1′就可以了。

netstat -nal 可显示所有的网络连接。
netstat -tunpl  网络连接(没有socket)

Linux 守护进程deamon有两种工作模式:stand-alone模式和xinetd模式
Linux 守护进程管理  Linux提供了几种不同的守护进程管理工具: ntsysv、chkconfig等,可以根据具体需要灵活运用。  

w 查看个别用户的进程 w username
ps -aux   (pa aux)
-a 显示所有用户的进程
-u 显示用户名和启动时间
-x 显示没有控制终端的进程(系统自己开启的进程)
ps -el
-e 显示所有进程 ,包括没有控制终端的进程
-l 以格式显示

ps -aux --sort pid
ps -aux --sort user
    
判断一个进程是否启动了
ps -aux | grep httpd

查看单个用户的进程
ps -uU xiaobai
ps -aux | grep xiaobai

进程的挂起和恢复
  ctrl+z 到后端执行  挂起
  ctrl+c 终止进程
  
find / -name init*
  按ctrl+z 暂停

pgrep httpd 列出所有httpd进程  

kill -1 `pgrep httpd` 重启httpd进程
pkill httpd 关闭httpd下的所有服务
  
nohup
使进程在用户退出登录后仍旧继续执行
格式
nohup program &
nohup find / -name init* > /root/find.init.20120103 &

在/proc目录中存放了进程启动的信息
cat /proc/partitions 查看分区
cat /proc/cpuinfo 查看cpu的信息
cat /proc/meminfo 查看内存信息

batch 命令 安排作业在系统负载不重时执行一次
at  安排作业在某一时刻执行一次
service atd start
ls /var/spool/at

   at配置文件,限制哪些用户可以使用at 命令
   /etc/at.allow
     如果这个文件存在,那么只在列在此文件中的用户才可以使用at命令,如果这个文件不存则查/etc/at.deny
   /etc/at.deny
    如果这个文件存在,则在此文件中累出的用户都不能使用at命令
   
    如果两个文件都不存在,则只有root用户可以使用at命令
    如果两个文件都存在,而且均为空,则所有用户都可以使用at命令

service crond start
/var/spool/cron/
cat  /etc/issue

  /etc/cron.allow
    如果这个文件存在,那么只在列在此文件中的用户才可以使用at命令,如果这个文件不存则查/etc/cron.deny
  /etc/cron.deny
   如果这个文件存在,则在此文件中累出的用户都不能使用at命令
  
   如果两个文件都不存在,则只有root用户可以使用cron命令
   如果两个文件都存在,而且均为空,则所有用户都可以使用cron命令
      
30 17 * * 1-5 /usr/bin/wall < /etc/issue
vi /etc/crontab


linux 下有三类用户 超级用户 普通用户 伪用户
pwconv      把/etc/passwd 中的密码移动到/etc/shadow
pwunconv    同pwconv相反

useradd 或 adduser 命令创建
userdel user  删除用户 (家目录不能删除)
userdel -r user  (可以删除家目录及所有信息)
  
更改用户名
usermod -l thisuser(new) myuser
usermod -L thisuser  (锁定用户)
usermod -U thisuser   (解锁)

passwd -S thisuser

passwd -l thisuser  (加锁)
passwd -u thisuser  (解锁)

/etc/login.defs 里面定义了添加用户的配置信息
/etc/default/useradd 里面定义了添加用户的配置信息

/etc/motd   登录成功显示给用户的信息
/etc/issue  尝试登录显示给用户的信息

shell
shell
/bin/sh
/bin/bash
/sbin/nologin  伪用户用的shell

man 5 /etc/passwd  5表示查看配置文件的信息
wc -l /etc/passwd  //查看配置文件有多少行
echo "1343" | md5sum  md5加密
man 5 /etc/shadow
grep root /etc/passwd /etc/shadow

ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27000 Aug 22  2010 /usr/bin/passwd
s(SetUID)
SetUID的定义:当一个可执行程序具有SetUID权限,用户执行这个程序时,将以这个程序
所有者的身份执行

SetUID  所有者 4
SetUID  所属组 2
粘着为1  其他人  用t表示
如果一个权限为777目录具有粘着位,每个用户都可以在这个目录下创建文件,但是只能
删除自己创建的文件

查找所有具有SetUID权限的命令
find / -perm -4000 -o -perm -2000
-o表示或得意思

只允许root登录
可以在/etc/目录下建立一个名为nologin的文件
   touch /etc/nologin(什么也不用写)
   
chmod 755 yyy.txt  rwxr-xr-x
chmod 644 yyy.txt  rw-r--r--
chmod -R 777 myuser/     改变目录及子目录的权限
chgrp 改变文件或目录的所属组(和chown一样的)
chown -R 用户.组名 文件或目录
chown -R baiwenzhao(用户).mygroup(组名) -R myuser

目录 755 + 022 = 777
文件 644 + 022 + 111 = 777


列出所有被安装的rpm package 
rpm -qa 
安装一个包 
rpm -ivh 
列出包中有哪些文件
rpm -ql sudo

   
pwck 检测/etc/passwd 文件
vipw 编辑/etc/passwd 文件  (锁定文件)
pwck命令   检查用户密码文件的完整性
grpck命令  检查用户组及密码文件的完整性
id   查看用户id和组信息
finger 查看用户详细信息
su 切换用户(su - 环境变量切换)
   echo $PATH
who、w 查看当前登录用户信息
groups 查看用户隶属于哪些用户组
grpck  用户组配置文件检测
vigr   编辑/etc/group文件(锁定文件)


find /home -user jack -ok rm {} \;
{} 就是保存 find 查找到的结果。\应该是分号的意思

authconfig 临时改变配置文件 比如启用shadow功能
/etc/sysconfig/authconfig 永久性改变配置文件
vi /etc/sysconfig/authconfig  

图形管理命令
system-config-users


例子
1.批量添加用户
newusers 命令 导入用户信息文件
      user.info文件
      1 brother01::1001:507::/home/brother01:/bin/bash
      2 brother02::1001:508::/home/brother02:/bin/bash
      3 brother03::1001:509::/home/brother03:/bin/bash
newusers < user.info
pwunconv  取消shadow password功能
chpasswd 导入密码文件
          (格式 用户名:密码)
      passwd.info文件
      1 brother01:lamp1
      2 brother02:lamp1
      3 brother03:lamp1
chpasswd < passwd.info
pwconv   将密码写入shadow文件
2.su命令 默认是有s位的
禁止其他用户使用su命令
#groupadd sugroup
#chmod 4550 /bin/su
#chgrp sugroup /bin/su
#ls -l /bin/su
#useradd -G sugroup xiaobai
#chmod 4550 /bin/su
#su - xiaobai
3.sudo的使用
rpm -ql sudo
用sudo代替su
 在执行sudo命令时,临时成为root
 不会泄露root口令
 仅向用户提供有限的命令使用权限
配置文件:/etc/sudoers ,编辑配置文件命令visudo、
普通用户使用命令sudo.
格式:用户名(组名) 主机地址=命令(绝对路径)
编辑/etc/sudoers输入visudo命令
编辑完之后如果提示What now? 按回车会有提示
给xiaobai用户授权
xiaobai localhost=/usr/sbin/useradd , /usr/sbin/userdel
给组授权需要在组名前面加上%
授权所有的命令给xiaobai
xiaobai ALL=(ALL)       ALL
查看用户可以使用的sudo命令
sudo -l
sudo命令可以精确化
在/etc/sudoers命令中添加一行信息
xiaobai localhost=/sbin/shutdown -h now
xiaobai用户在执行shutdown命令时只能立即关机 不能设置参数
   
密码破解工具
John the ripper应用

export  在shell中设置环境变量, export的效力仅及于该此登陆操作。

screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session

exit命令 结束 screen


集群就是在集群圈里只有一台处于激活状态(一般在集群圈里都有一根心跳线)
负载均衡加上集群就相当与一台超级计算机

负载均衡技术
1.Cisco以太网通道(网络厂家)
2.Windows NLB技术(软件)
3.Linux LVS技术(软件)
 nat  把包里的目的地址进行地址转其他地址       
 直接路由技术(dr技术) 返回时不用再通过lvs服务器了
4.f5、netscaler等负载均衡(硬件)

集群技术
大访问量-冗余技术
集群里的心跳线就是集群集群技术
1.Cisco HSRP热备份路由(网络)
  在两台路由器计算一个小型路由器,由小型路由器分配用哪个路由
2.Windows集群技术
3.Linux HA集群技术(软件) 
4.IBM AIX小型机集群(贵) High-Availability(HA)(高可用性集群)


网站服务、流量监控
1.服务器监控
1)apache web服务监控
2)mysql 数据库监控
3)磁盘空间监控
2.流量监控
1)网站流量监控(监控软件mrtg、cacti)
被监控的机器必须安装snmp软件,用于被监控

压力测试
apache自带的压力测试软件ab测试
apache benchmark,apache基准测试
ab压力测试时,可能要创建很多测试文件并删除

mysql测试
mysqlslap,通过模拟多个并发客户端访问mysql
来执行测试,使用起来非常简单


Lvs三种负载均衡技术
Lvs nat技术
Lvs ip-tun技术
Lvs dr技术原理 dr路由技术

网络OSI七层模型
7      应用层      |
6      表示层      |->统称应用层    
5      会话层      |
4      传输层       包
3      网络层       ip
2      数据链路层   mac
1      物理层       电缆

交换机  mac与接口
路由器  网段与接口
广播可以直接穿越交换机
先发生广播,寻找目标主机的mac地址,然后把mac地址记录到自己的arp表里
然后把数据打包上源地址mac目标地址mac,通过交换机路由器传输,到达目标主机,
目标主机记录下源地址的mac到arp表里
代理arp:广播只能穿越同一网段,如果不在同一个网段,路由器会告诉源主机,用我的mac地址封装数据吧,

路由器和交换机对比
路由工作在网络层
    根据"路由表"转发数据
路由表中含有网段和接口
交换机工作在数据链路层
    根据"mac地址表"转发数据
mac地址表中含有mac地址和接口


负载均衡
一、网络负载均衡
Cisco以太网通道
交换机和交换机之间一般用一根线连接,以太网通道可以用多根线连接,以做负载均衡
,以分担流量
二、服务器负载均衡
f5
1.客户发出服务请求到VIP
2.BIGIP接收到请求,将数据包中的目的IP地址改为选中的后台服务器ip地址,然后将
数据包发出到后台选定的服务器
3.后台服务器收到后,将应答包按照其路由发回到BIGIP
4.BIGIP收到应答包后将其中的源地址改回成VIP的地址,发回客户端,由此就完成了一个标准的服务器负载均衡的流程

lvs模式
Lvs常用的三种负载均衡模式
1.Lvs nat模式
  Virtual Server via Network Address Translation(VS/NAT)
  通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成真个调度过程。
2.Lvs ip-tun模式
如果服务器开通路由管道的话,速度很高,网速可以达到100M
3.Lvs dr模式
Virtual Server via Direct Routing(VS/DR)
VS/DR 通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将
响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可极大地提高集群的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持ip隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连接在同一物理网段上。

四种常用的轮叫算法
1.轮叫(Round Robin)
调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中
的真实服务器上,它均等地对待每一台服务器,而不管服务器上
实际的连接数和系统负载。
2.加权轮叫(Weighted Round Robin)
调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。
这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
3.最少链接算法(Least Connections)
调度器通过“最少连接”调度算法动态地将网络请求调度到已经建立的链接
数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用
“最小连接”调度算法可以较好地均衡负载。
4.加权最少连接(Weighted Leaset Connectons)
在集群系统中的服务器性能差异较大懂得情况下,调度器采用“加权最少链接”调度
算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。
调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。


yum -y install ipvsadm
sestatus 查看selinux的状态

arp忽略 只要是在我这块网卡上的ip我都会回应给你,arp忽略不了在网卡上的ip 所以只能配置到lo或者tunl0上
常识:pc机上的网卡,如果是多块,则每块网卡的ip不能够配置在同一个网段上,不然可能会出问题

tcpdump 抓包工

卸载软件包
rpm -e sudo(软件名称)
rpm -e samba (samba 是linux和win文件共享的一种服务)
rpm -e --nodeps samba  强行卸载


挂载光盘
mount /dev/cdrom /mnt/cdrom
访问/mnt/cdrom 就相当于访问光盘上的内容

rpm -q sudo (查看软件是否被安装了)
rpm -qa 查询所有的已安装的软件包
rpm软件包的升级
rpm -Uvh sudo-1.7.2pl-5.el5.i386.rpm

安装 yum install
-y answer yes for all questions
检测升级 yum check-update
升级 yum update        
软件包查询 yum list  (查询yum源上所有的软件包) yum list | grep sudo
软件包信息 yum info   yum info sudo  可以查看软件是干什么用的
卸载  yum remove
帮助 yum -help 、man yum
yum -help | more  列出常见的选项


rpm校验
rpm -V 软件名称
5  文件的md5校验值
S  文件大小
L  链接文件
T  文件的创建时间
D  设备文件
U  文件的用户组
G  文件的用户组
M  文件权限

#vi /etc/sudoers
# rpm -V sudo
S.5....T.  c /etc/sudoers

md5sum 只对文件内容进行校验  不对文件权限等进行校验
md5sum /etc/services 
dde31302b080df6ec5fcacee0d56dc90  /etc/services
echo "# this is a test" >> /etc/services
md5sum /etc/services
021eb8953792ebd790cb7fdae102adf1  /etc/services


4.Debian系Linux软件包管理简介 ubuntu
  APT包管理
  
pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,
  列出所有sshd进程
pgrep sshd
杀死所有sshd进程
kill `pgrep sshd`

NAT技术
让内部的员工通过网络地址转换,穿过具有路由功能的一台设备,然后穿穿去不,去访问外部的web服务器,最后数据原路返回

代理技术
代理服务器是帮助公司内部的PC机去上网,比较安全

OSI
2层  链路层
3层  网络层
4层  传输层

代理服务器工作在七层

Squid服务器的功能
提供对HTTP和FTP协议的代理服务
缓存代理的内容,提高客户端访问网站的速度,并能够节约出口网络流量
对客户端地址进行访问控制,限制允许访问squid服务器的客户机
对目标地址进行访问控制,限制客户端允许访问的网站
根据时间进行访问控制,限定客户端可以使用代理服务的时间

squid普通和透明代理
普通代理服务器
即标准的、传统的代理服务
需要客户机在浏览器中指定代理服务器的地址、端口

透明代理服务
适用于企业的网关主机
只需要把网关指向代理服务器即可 客户机不需要指定代理服务器地址、端口等信息
通过iptables将客户机的Web访问数据转交给代理服务程序处理

反向代理
和普通代理相反, 代理外部的用户去访问公司内部的web服务器。


ACL访问控制
ACL(Access Control List, 访问控制列表)
可以从客户机的IP地址、请求访问的URL/域名/文件类型、访问时间、并发请求数等各方面进行控制
应用访问控制的方式
定义acl列表
    acl 列表名称  列表类型  列表内容
针对acl列表记性限制
    http_access allow或deny 列表名

最基本的acl列表控制示例
禁止任何客户机使用代理服务
acl all src 0.0.0.0/0.0.0.0
http_access deny all


ACL规则匹配顺序
访问控制规则的匹配顺序
没有设置任何规则时
将拒绝所有客户端的访问请求
有规则但找不到相匹配的项时
将采用与最后一条规则相反的权限,即如果最后一条规则
是allow,那么就拒绝客户端的请求,否则允许该请求

squid通明代理
请求转到Squid 的3128端口

缓存查看
1.通过/var/log/httpd/access.log
2.通过/var/spool/squid 下的tree 00来查看文件数,然后如果有缓存,则可以通过
strings 000000x来查看
3.客户端通过firefox的firebug来查看请求和响应头信息,其中有缓存信息看,从中可以明显的看到
缓存的squid服务器
?1?7?1?7?1?7?1?7?1?7

你可能感兴趣的:(linux 笔记)