网上冲浪 | 反毒杀毒 | 菜鸟进阶 | 网络安全 | 实用技术 | 网络安全 | 操作系统 |
工具软件 | 电脑医院 | 网上赚钱 | 网页制作 | 网络营销 | 经典教程 | IT趣 谈 |
当前位置:IT快活林网上冲浪网络安全

Linux 学习笔记

转jinscanlinux入门很重要,刚开始自学linux时懵懵懂懂好不容易装好了linux,大喜过后一脸无奈,这是哪跟哪呀~~~~~~里面的所有东西都不知道怎么用,自信对window有研究的我在linux前手足无措,在给linux相了一天面后还是格掉了此后开始看书,慢慢的找感觉~~~~~~~~~~~一直到长城开始系统的学才自以为找到了感觉(也就是入门了)。自我评价:学习linux找感觉最重要,不管是看书还是自己安装后琢磨,坚持着看和做,肯定能成。如果仅仅看了两天书就认为入门了那肯定是自欺欺人。Linux安装: 安装linux并不是很难,一般用光盘安装,安装时硬盘默认分为三个:引导分区;根分区;交换分区;分区弄明白了安装也就没什么障碍了。还有从硬盘安装,我当初从硬盘安装linux时颇费一番周折,幸亏有platinum和shadowmin老师的及时指点才得以顺利安上,再次感谢一下:)附硬盘安装原文:
http://bbs.chinaunix.net/viewthr ... p;extra=&page=1注:装linux是要写规范主机名。如host.abc.com
作服务器时系统CMOS时间应设为格林威治时间,即国际标准时间
linux基本命令:
   挂接:单根文件系统使用多个设备的方法。
  mount 设备  挂接点
dmesg  | grep cd  此命令可看光驱在哪
( 当老师讲到这里的时候机器出了点故障,鼠标不动了,老师用了一个命令就使鼠标复活,第一次感叹linux的神奇啊~~~~~原来鼠标还可以重起(windows下还真没想过)
  顺便把老师用的命令也抄了下来,呵呵多学了个窍门
   重启鼠标命令: /etc/rc.d/init.d/gpm restart

解除挂接:umount 挂接点 
软盘写法:  /dev/fd0
SCSI硬盘写法:/dev/sd(a)括号内可以依次排为b cd…….
USB硬盘SATA硬盘系统都做SCSI硬盘对待。
SCSI光驱写法:/dev/scd(0)括号内为数字零依次后派
USB口的光驱也被认为SCSI光驱。
注:只有先解除挂接可移动设备才可拿出来-------
shell和文件系统
shell命令: unix中绝大多数都是外部命令。内部命令常用的有cd  很少
dos|shell
dir| ls
type | cat
cd| cd
md|mkdir
rd |rmdir
del|rm
copy    | cp
ds| dear
attrib    | chown  charp   chmod此上命令除了cd 全是外部命令
最重要的命令:  man  主题
主题可是shell命令也可是配置文件,还可是C语言函数,但有时shell命令和配置文件相同时打入命令怎么办呢,此时用参数
man 1.命令 2.系统函数 3.标准库函数  5.配置文件
例:查passwd默认   man passwd  会查到
man passwd(1)命令
   此时要用 man 5 passwd  可查配置文件模糊查找(匹配)参数: -k  例 man –k  PPP和大多数unix中一样k为小写.
第二个重要命令: vi 文件名 (文本编辑器)
 它有三种工作模式,缺省为”命令模式”
输入I 进入”插入模式”   按ESC回到命令模式
   常见命令: 删一个字符  x
  删除一行   dd
  恢复操作   u
  复制 yy   (光标在哪一行将复制哪一行)
  粘贴 p    (粘贴在光标下面)
在vi重复输入一些命令时,在前面加数字 如插入100个a  则在命令模式下先输入100 按I输入一个a 回到命令模式则会有100个a被插入  5行东西重复3次则输入5yy3p  存盘退出用大写ZZ   
“末行模式”常见是搜索字符.用”/”在命令模式下输入
“/”加字符串.在手册中也能用
“;”会引发末行模式.可用”;”跳到某一行”;”加数字可直接到那
“;”还可用与文件操作
“;q”可直接退出
“;q!”强制退出
“;w”存盘不退出
“;wq”存盘退出
“;recover”可在出现以外后修复文件
“;w 文件名”另存为shell命令的敲法:
命令   参数1   参数2
参数定界:用到” ‘  ‘”(单引号) 用单引号括起的如’abc  def ‘是告诉shell消除语法歧义
如要建一文件叫  jack’s  daily 却不能用单引号了,此时得用”\”应写为: 例如:
touce  jack\’s\ daily
“\”为转意字符,取消反斜杠后一个字符的特殊含义文件系统在unix中”.”无特殊含义
  unix下区分文件类型的命令   file  
unix下是靠文件的头部说明来区分文件格式,所以操作系统不会理会扩展名的
(exe文件头两字母是MZ)
  mount 直接回车是显示当前所mount的状态
df 察看磁盘利用状态 磁盘分区
du –h +子文件名  检测文件系统子目录所占空间
pwd查看当前子目录unix下一个文件可以不可读而可执行,对于子目录而言x就是另外一层含义了,称之为检索。对子目录而言r就是列表权
(经验:不要安装基于文本界面的多媒体应用程序)-------
如何修改权限
修改属主:   chown [-R] 新属主  文件
-R: 将文件夹中的所有文件也更改掉
修改属组:   charp  [-R]  先属组  文件
修改权限:   chmod [-R]  新权限  文件
新权限有两种表示方法:
(1)  直观:  如  rw-r—r—
数字  6   4  4
110100100
(2)字母法:  如  rw-r--r--
  u  g  o
修改文件的访问权限不必非得是root,文件属主也可以
windows文件权限策略是ACL,侧重与灵活性;  unix文件系统策略是权限位,侧重用效率;
linux所有权限都放于一个16位的短整数里
linux特有功能(ext2 ext3所体现的):列出所有权限命令:lsattr
   设置特殊权限:    chattr连接:
硬连接:硬连接本质使一个文件有两个文件名和windows不同windows中文件属性和文件名是放在一块的,而linux文件名仅是文件名
  命令:ln 原文件名  新文件名  
    硬连接有两限制:(1)不能给子目录建硬连接
(2)  不能跨文件系统建硬连接(即不能跨分区)
在unix下删除一文件的本质是断开一个硬连接,系统会将硬连接数减一,只要不为0则保留文件体。
   符号连接:(路径跳转)
命令: ln –s 跳转去向 连接名  注:建符号连接得用绝对路径。写绝对路径此时可建成的在tem下看到的连接是红色的。“à”后面指向的仅一个services但在当前目录即tem下却没有这个文件此时便出错了。
  注: 符号连接可跨分区建立-------
shellshell 使用:  在unix下常用的是bash
功能:(1)自动完成  按tab键支持路径,在参数位置上按tab会补齐文件名,按两下tab键便可看所有系统命令。
(3)  命令历史:按↑↓ 可查看所打过的历史命令。注:在用户文件夹下有个bash-histroy保存有上次使用的命令。
非shell功能, 虚拟终端功能:按alt+f1~f6切换
鼠标粘贴:左键选择右键粘贴,可跨终端。
*shell如何运行外部命令:
进程:一个正在运行的程序就是一个进程(不严密的解释)
派生:系统的所有进程都是由一个进程派生出来的
shell有一个父进程当接到一个命令时会产生一个子进程,而shell则进入休眠状态,等待子进程结束,子进程完后交给父进程一信息,父进程激活等待。
 后台运行命令:命令 &
作业控制:ctrl+z 把前台作业挂起(暂停)挂起后都会保存在内存中。
  怎么知道有作业呢?用jobs命令
fg + 作业号 是把后台暂停作业调回前台
bg + 作业号 是把前台作业换到后台 shell的基本配置:
  bash的基本配置是由配置文件组成的./etc/profile称之为shell的全局配置文件。
另外一个文件在个人的目录下  个人目录/.bash-profile
还有个文件在个人的目录下/etc/bashrc  是第二个全局配置文件,保存的是(函数别名等)在个人目录下也有个配置文件~/.bashrc  etc下的文件是全局文件,一经修改所有的用户设置都改了
shell的具体概念:
环境变量:  变量名=变量值    例: LANG=en 是设置语言为英文
    LANG=zh-CN.GB18030是设置语言为中文
通过设置shell的变量来决定子进程继承什么样的值。
 {变量名=变量值
export  变量名
可简化为   export 变量名=变量值   注:export 不能省略,另外此时定义的变量是当前shell的值,一旦注销便没有了,想固化得修改profile文件
命令env 可查看所有环境变量里面有个path非常重要,它定义了shell命令执行的路径。
Linux下命令执行仅搜索path路径,不会搜索当前目录的外部命令,所以在当前目录下要执行当前目录中的命令需要加”./”命令。
3.引用变量的值: $变量名  例:export  PATH=$PATH:/etc/xxx
  例如:echo $LANG  echo  回显命令  可察看LANG的值
  例    export  CMD =ls
   $CMD –l  等于ls –lshell管道与重定向
    一个进程的缺省标准输入输出分为标准输入;标准输出;标准错误输出三个管子。
控制终端:缺省情况下进程的三个管子通向控制端
输入重定向:命名  <    文件名    解释:原来要从终端读取的命令改成从文件读取。
  例如:cat   <   /etc/hosts    则cat读取的文件不是从键盘而是从hosts文件,cat不知道所要读取的标准输入输出被换成/etc/hosts和cat /etc/hosts不一样,此时是cat直接读取hosts
输出重定向:(1)命名   > 文件名  原来要输出到终端的命令改成输出到文件
(此时叫覆盖式重定向)
    (2)命名 >>  文件名
   (追加式重定向)
  例如: gcc 命令 0:标准的输入
1:标准输出
2:标准错误输出解释linux最精简的一句话是:linux下一切都是文件。
   管道:匿名管道,unix传统进程间通信。
写法: 命令1 | 命令2
命令2处经常出现的是more 或  grep
例如: cat /etc/services  | grep  ‘http’ 意思是包含有http的输出-------
老师在讲shell中穿插讲了硬盘分区和格式化    磁盘的分区格式化
    分区:  fdisk    -l 列出分区表
fdisk   磁盘而不是某分区  (/dev/had)
command  :p 看分区
n 新建分区
d 删除分区
q 不保存退出
w 保存退出
生成文件系统(格式化)
mkfs  (make file system)
mkfs  -t  ext2  /dev/hda5
mkfs  -t  ext2 –j /dev/hda5 :格式化成ext3格式
挂接:mount /dev/hda5-------
shell  脚本本身就是程序,是用shell命令构成的,小规模、结构化、模块化、程序设计。
命令:  echo   输出信息用
  read   输入信息 read+ 变量名
  sleep   休眠  sleep+ 秒数在终端上算数表达式写法: echo $ ((1x2x3))这是整数运算不能带小数点。
/  :除
% :余
shell脚本格式:
第一行必须是 #!/bin/sh有三种结构  顺序结构   分支结构   循环结构  顺序结构
   wait 命令 保证进程同步 等待一个子进程结束 多个并发就用多个wait
例如:    #!/bin/sh
 echo “1”
 sleep 5&
 echo “3”
 echo “4”
 wait
 echo”5”
分支结构
    if 判断  ;  then
T块
    Else
F块
    fi
判断  test语句   test 表达式 =  [表达式]
表达式进行文件判断   -f  文件名(检测该文件是否存在且为普通文件
   -d 目录名
   -r  可读
   -w 可写
   -x 可执行-------
这些例子由于年久失修(笔记上标注不完备,过后有忘了的地方)错误之处请多多包涵例如:
  #!/bin/sh
  echo “file”
  read  FileName
  if  [-f $FileName]; then
echo “yes”
    else
   echo “no”
  fi字符串比较   相等    串A =串B
不等    串A!=串B
-z   判断字符串是否为零 空为真 非空为假
数值比较: 大于 等于 小于  不等于
a > b $A –gt $B
a≥b $A –ge $B
a≤b $A –lt $B
a=b  $A –le $B
a≠b $A –ne $B
逻辑比较: 条件A –a  条件B(与)
条件A-o 条件B  (或)
 !条件(非)
例如:
  #!/bin/sh
  read MARK  <  /proc/sys/net/ipv4/ip_forward
  echo  $MARK
   if  [ $MARK =“0” ]; then
 else  echo “host”
    echo “GATEWAY”
   fi‘ ‘ 反单引号: 如果反单引号后面有语句则将里面的语句运行完后将结果替换此处
例如:
#!/bin/sh
u=id –u
  if  [$u =‘0’] ; then
    echo “hello”
   else
    echo “permission denied”
  fi
再例如:
#!/bin/sh
echo  “username”
read  userNAME
 MARK =‘cat /etc/passwd | grep ‘$userNAME:’
积极if  [ -z $ MARE] ; then
    echo “NO”
else
    echo “YES”
 fi多分支结构
 case  字符串   in
串1) 块1
;;
串2) 块2
;;
.
.
.
*)
esac
例如:
    #!/bin/sh
  echo  “command”
    read  CMD
   case $CMD  in
start)
 /etc/rc.d/init.d/named  start
    ;;
stop)
    /etc/rc.d/init.d/named  stop
    ;;
estart)
   /etc/rc.d/init.d/named stop
   /etc/rc.d/init.d/named start
    ;;
   *)
    echo  “usage : $0 {start|stop|restart}
    ;;
esac*知识点:  . 脚本  让shell不打开子进程,在当前shell进程中运行脚本
 看脚本切忌一行一行的看,要一层一层的看,就像剥玉米.-------
Shell脚本
循环  1)当形循环
2)条件循环
   while  判断;  do
    循环体
   done
例如:
 #!/bin/sh
i =0
while  [ $i –lt $n] ; do
j=0
while [ $j –lt $ (($i+1))] ;  do
  echo “\*”
    j=$(($j+1))
  done
echo
i=$(($i+1))
    done
定时循环  00:00:00: 1970-01-01 utc   称之为unix元年
data +%s 是取从unix元年至少过了多少秒
date +%H:%M:%S    显示时分秒格式
例如:
#!/bin/sh
intime =‘date +%S’ –le $ [ (intime+5)] ; do
echo “.”    ##echo后面加-n 输出就不回车了,横向输出
  done
   利用date命令可以方便的实现定时循环
   
shell风格的循环 for 循环 (枚举循环)
格式 for   变量名  in  值列表  ;  do
 循环体
done
##值列表:核心部分,一系列由空格分开的字符串
例如:   #!/bin/sh
   for n in asd 4r3 56h er34 657 tr ger ; do
echo  $n
   done
要自动下载列表中的东西编shell的
    #!/bin/sh
cd /tmp/dlfor url in  cat /etc/urls ; do
wget $url
    done
>/etc/urls补充知识: 参数传递
命令  参数1  参数2 …………
    例如:
    #!/bin/sh
n=$1
  i=0
while ($i-lt $n); do
   echo    “xxxx”
    ii=$ (($$+1))
done
$0 $0就是命令本身编后:此处讲的都是基本的shell应用,老师推荐看《bash编程》-------
Linux系统管理
1.  用户管理
添加账户   useradd 用户名
 passwd 用户名
groupadd   组名  usedel    -r    用户名
  /etc/group    /etc/passwd/etc/shadow三个重要文件
group 文件  格式:  组名:x :组ID:组成员
passwd文件 格式:  用户名:x:用户ID:组ID::用户目录:shell
用户在passwd文件中体现的组关系称为用户组属组,而在group组中体现的是额外组。
   false:运行起来就是个恒假。正确利用false给用户,将false添加到/etc/false下用户名字后这样用户就被拒之门外。如mail用户 通过修改用户的shell来限制用户登陆提高网络安全性。
   top命令:察看机器负载情况
   which命令:查看外部命令的路径
top被弄成用户shell时切记在linux下可用,因在linux下top是安全模式的,而在其他unix中并不一定安全,通过敲击热键可能会打出一shell。shadow文件  shadow里面的口令是散列,散列是不可逆的
批量添加150个用户u001—u150#!/bin/sh
i=1
  while [$i–le 150] ; do
    if [ $i -lt  10] ; then
    uname =u00$i
   else
    uname=u$i fi
useradd $uname
i =$(($i+1))
done   passwd 命令规定只能在终端上手动输入,只有用stdin参数便可解决
作业: 从一表中将已知用户名导入useradd-------
2.网络配置
linux 下有两套网络配置,第一套为BSD方式,另一套是linux方式。linux中高级网络功能只能用linux方式。
   BSD方式:1.查看  ifconfig   网卡名 BSD中必须指定网卡名
  注释:
collisions 冲突 txqueuden  发送包的长度
    网卡工作模式 mii-tool   媒体无关接口
   ethtool+网卡名    查看命令更详细(需要网卡驱动支持)
   netstat –r  查看路由
查看网络连接状态
  netstat    -ant   查看TCP的所有网络连接
-anu   查看UDP的所有套接字一条TCP连接会产生两个套接字,两台机器均开。
ARP  -n    -n意思是不要进行反解 不转成名字
  查看DNS  cat /etc/resolv.conf   2.配置IP  
    ifconfig  网卡名   ip地址
配置路由   route add   -net  网络地址  netmast x.x.x.x  gw 网关
 route add   -host 网络地址  netmast x.x.x.x  dev 网卡
 route del   -net  网络地址  netmast x.x.x.x  gw 网关
 route del   -net  网络地址  netmast x.x.x.x  dev 网卡
缺省写法: route add  default gw 网关
 route add  default dev网卡
   静态ARP arp  -s  IP地址  MAC地址
linux 方式: 
ip 命令
  
   ip addr show  查看IP地址 简写为 ip ad sh
   ip route sh    查看路由    简写为 ip ro sh
   ip neigh sh    查看静态ARP  简写为 ip ne  sh
ipv6中取消了ARP  改用ICMP
具体配置:
   ip  ad add dev ip地址/掩码长度
   ip route add ip地址/掩码长度  dev 网卡
ip route  add ip地址/掩码长度   via  网关地址激活/禁止某网卡
  ifconfig  dev   down/up
   linux下的:
   ip link  set up dev eth0
   ip link  set down dev eth0
此设置都是临时的,固化网络配置,在linux下 主机名/缺省网关: 修改路径
/etc/sysconfig/network
  如果修改主机名顺便把hosts文件也得改    /etc/hosts否则有时服务会启动时挂起死等~~~~~~~~~~~~~~~~
   固化IP 地址   /etc/sysconfig/network-scripts下的ifcfg-网卡名例如: /etc/sysconfig/network-scripts/ifcfg-eth0
   bootprotocol=static  ##如果用动态IP则改成DHCP
   ONBOOT=yes ##启动时激活,设置思想:作为外网网卡应该为NO,因防火墙启动之前将网卡先期启动会有被攻击的危险
   
静态ARP固化  
   /etc/ethers
  写法:    mac  ip   例如 : 01:02:03:04:05:06  10.0.0.2
  (小知识点:
万用脚本:/etc/rc.local 不管什么命令只要加在此,下次开机后便会自动运行,相当于autoexec.bat。在用户登陆之前便已经运行,注:在此文件中加命令时不可阻塞,如果命令执行时间过长则加“$”将其弄到后台执行。
[]作者:本站整理  来源:不祥