Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57695
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 252
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-11 14:27
文章分类

全部博文(20)

文章存档

2014年(20)

我的朋友

分类: LINUX

2014-11-03 17:35:19

2014/10/17 这次真的该用点心了! 要不然明年的我该怎么办!

   ! linux ['li:nэks]  这个词 中文的翻译是 ‘李呢克斯’  ,不知道你有没有读对! (反正我一直都是这样读的*-*..)

    ! RHEL是RedHat公司推出的一款针对企业的发行版Linux,可以免费下载使用. RHEL在没有获得授权的情况下不能使用yum工具

            对于学习linux ,当然很大部分都是为了找一份工作,那么 对于国内的大多数 的大公司 还是小公司来说,centos 无疑是最好的选择:
            国内多数企业使用RHEL搭建服务器
            目前使用centos的企业越来越多
            centos和RHEL几乎一样,而且Centos有免费的yum工具可以使用
            centos目前已经加入RedHat公司,且依然完全免费

            要习惯与用 命令行模式,命令行是Linux系统正常运行的核心,也是专业Linux系统工程师必须掌握的技能(你不能再网络情况不好的情况小去开图形界面吧! 那么你还能运行啥程序)
            
            要习惯与备份数据(古话说的好,习惯为自然,要先习惯在自己的电脑上去备份,那么将来你在服务器上就不会“顺手”删文件而恢复不了),还有就算是在删除文件的时候 不要加 :强制 的alias,多注意一下总是没坏处的!
            
            对于各种各样的密码,你一定会有几个是你的生日、名字、住址或者你的密码全部一致,如果是这样。还是自己修改一下吧!因为这是一般 “社工”都会用到的基本知识。
            一定要记住,人有失手,马有失蹄!为了将来的幸福还是“小心驶得万年船”

            对于学习内容来说,一定要多花时间,实验做的熟练了才能放过,要烂熟于心!


2014/10/20

    对于我们一般在电脑上用VM安装centos的时候,总会发现分区、自定义软件包会找不到,这是因为,官方为了一些bug而屏蔽了自定义分区和自定义安装包
        的功能。如想自定义分区的话,就安装图形界面哦! 
    
    关于Linux的分区!好多人在选择分区的时候都不知道该怎么去划分才好,那么有一个万能的分区方案:
        */boot分区给100M
        *swap分区大小为内存的2倍(8G=>的就分内存的大小二倍,如内存大于8G,最多给16G就足够了)
        */usr/分区20G
        */ 分区给20G
        *剩下的给/data分区或者随便自定义一个挂载点

Centos 6是如何启动的! 

    Linux系统的启动过程大致可分为五个部分:内核的引导、运行init、系统初始化、建立终端
        、用户登陆系统
        *内核引导 ——打开电源,bios自检,启动设备上的grub程序开始引导Linux,linux接管
            CPU控制权,CPU执行Linux的核心映像代码,在内核调用中加载了init程序
        *init运行 ——init 进程是系统所有进程的起点(就相当于一棵树的树根),init
            最主要的功能就是准备软件执行的环境,所有的动作都要通过init的配置文件
            /etc/inittab来规划,而inittab中还有默认的 runlevel(开机运行级别),linux
            就是通过设定 run level来规划系统使用不同的服务来启动。
            PS.inittab配置文件格式和之前老版本CentOS5或更老版本有很大不同
            Runlevels 有7个级别: 0表示关机  1表示单用户  2表示没有网络的命令行级别   
                3命令行级别  4为保留级别  5图形化级别   6为重启
       *系统初始化 ——初始化就是执行/etc/init下的各个配置文件
            “System initialization is started by /etc/init/rcS.conf” 系统初始化会先执行/etc/init/rcS.conf 而该配置文件中又有一行 “exec /etc/rc.d/rc.sysinit” 所以,重心又转移到了这个rc.sysinit文件上,做如下工作:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。当rc.sysinit程序执行完毕后,将返回init继续下一步,又到了/etc/init/rc.conf, 在这个配置文件里,最关键的一行为 “exec /etc/rc.d/rc $RUNLEVEL” 而$RUNLEVEL是在/etc/inittab中定义的(最下面的那一行),以/etc/inittab为例,表示$RUNLEVE=3, 所以此时会执行 “/etc/rc.d/rc 3” 此时实际上是把/etc/rc.d/rc3.d/ 下的脚本都给执行了,随后/etc/rc.d/rc.local也会被执行,通常我们会把开机启动执行的命令放到这个脚本下。服务执行完,系统初始化也就完成了

        *建立终端
            终端是由配置文件/etc/init/tty.conf,/etc/init/serial.conf和/etc/sysconfig/init 等配置
        文件来完成。在2、3、4、5的运行级别中都以respawn方式运行mingetty程序,mingetty程序能打开
            终端、设置模式。然后就是显示登陆界面
        *用户登陆界面
            Linux的账号验证程序是login,login会接受mingetty传来的用户名作为用户名参数        
             随后,login会对用户名分析:如用户名不是root,且存在"/etc/nologin"文件,login 将
             输出nologin文件的内容,然后退出(用来系统维护时防止非root用户登陆)
            "/etc/securetty"中登记了终端才允许root用户登陆,如不存在这个文件,则root可以再任何
            终端上登陆
            "/etc/usertty"文件用于对用户作出附加访问限制,如不存在这个文件,则没有其他限制
            分析完用户之后,login将搜索"/etc/passwd"以及"/etc/shadow"来验证密码以及设置账户的
              信息,比如:主目录是什么、那种shell.如没指定主目录,将默认为根目录;没指定shell
                将默认为"/bin/bash"
             login程序成功后,会向对应的终端输出最近一次登陆的信息("/var/log/lastlog"中有记录)
                并检查用户是否有新邮件(在"/usr/spool/mail"的对应户名目录下)。然后开始设置各种
                环境变量:对于bash,系统先找"/etc/profile"脚本文件,并执行;如用户的主目录中
                存在 .bash_profile文件,就执行它,然后调用其他配置文件...

        图形界面与命令行界面切换
            Linux预留了六个命令窗口终端机,默认登陆的是第一个串口(tty1),其他的是tty2-6,
            切换命令——Ctrl + Alt +F1~F6(图形界面下)
            Ctrl + Alt + F7 (命令行 切换到图形)
            Alt + Shift + Ctrl + F1 ~ F6 (VM 图形切命令行)
            Alt + Space + F1 ~ F6 (VM 命令窗口切换)
    快捷键
            Ctrl + C 终止当前命令的快捷键
            Tab:  命令自动补全
            Ctrl + D:退出当前终端,也可输入exit
            Ctrl + Z:暂停当前进程(暂停后,可用fg恢复)
            Ctrl + L:清屏,使光标移动到第一行
        查询帮助的文档,----man
         man对于在大多数的情况下,还是蛮好的了,通用命令查看器
            格式 ——man 命令 (按q 退出)
            

        Linux 系统目录结构
            Linux最重要的一个命令 ——ls
            "ls"-list的缩写,作用是列出指定目录或者文件
            讲解.登陆系统,当前命令窗口输入: ls /
                ^不加任何选项也不跟目录名或者文件名--会列出当前目录下的文件和目录,不包隐藏文件
                ^加"-a"选项不加目录名或者文件名--列出当前目录下所有文件和目录,含隐藏文件
                ^加"-l"选项不加目录名或者文件名--列出当前目录下除隐藏文件外的所有文件盒目录的详细
                    信息,包含其权限等。
                ^后面不加选项只跟文件名--列出该文件(通常加上一个"-l" 查看文件详细信息)
                ^后面不加选项只跟目录名--会列出指定目录下的文件盒目录
                    
                  
2014/10/21
      Linux的目录结构
        /bin bin为 Binary的缩写。这目录存放最常用的命令
        /boot 存放启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件
        /dev dev是Device的缩写。该目录下存放的是Linux的外部设备,在Linux中访问设备的方式
            和访问文件的方式是相同的
        /home用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账户
            命名的
        /lib 这个目录里存放着系统最基本的动态链接共享库,作用类似于Windows里的DLL文件。几乎所有
            的应用程序都需要用到这些共享库
        /lost+found 只是在非法关机后,这里就会存放一些文件
        /media Linux系统会自动识别一些设备,例如U盘、光驱等到,识别后,Linux会把识别的设备
            挂载到这个目录下
        /mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上
            然后进入该目录就可以查看光驱里的内容
        /opt 这里放主机额外安装软件所摆放的目录。默认是空的
        /proc 虚拟目录,为系统内存的映射,可通过这个目录来获取系统信息。这个目录的内容在内存里
            echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
                屏蔽主机,让其他主机无法ping该主机          
        /root 该目录为系统管理员(超级管理员)
        /sbin s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
        /selinux 该目录是Redhat/CentOS所特有目录,Selinux是一个安全机制,类似于windows的防火墙
        /srv 该目录存放一些服务启动之后所有提取的数据
        /sys 该目录下安装了2.6内核中新出现的一个文件系统(sysfs)
                sysfs文件系统集成了3种文件系统信息:针对进程信息的proc文件系统、针对设备的
                devfs文件系统以及针对伪终端的devfs文件系统。是内核设备树的一个直观反映
                当一个内核对象被创建的时候,对应的文件盒目录也在内核对象子系统种被创建
        /tmp 这个目录是用来存放临时文件
        /usr 存放应用程序和文件都放在这个目录下,类似windows下的program files目录
        /usr/bin 系统用户使用的应用程序
        /usr/sbin 超级用户使用的比较高级的管理程序和系统守护程序
        /usr/src 内核源代码默认的放置目录
        /var 存放不断扩充着的东西,比如 各种日志文件

关于运行的服务器正常关机
        要关机,首先要保证当前系统中没有其他用户在线。可下达who指令,要看网络的联机状态
            可以下达netstat -a 这个指令,看背景执行的程序可以执行ps -aux
        正常的关机流程为:sync -> shutdown -> reboot -> halt
            ^sync 将数据由内存同步到硬盘中
            ^shutdown 关机指令,详细可以 man shutdow
            ^reboot 就是重启 等同于 shutdown -r now
            ^halt 关闭系统 等同于shutdown -h now 和poweroff
  
    对于忘记root密码,一直都是很头疼的问题
          解决方法:*重启系统,3秒内,按一下回车键。你会看到系统的基本信息如
                    
GNU GRUB version 0.97 .......
                CentOS (2.6.32-358.el6.i686) --选择这一行,可以有几种选择
                    输入‘e'会在启动前编译命令行;输入‘a’会在启动前更
                    改内核中的一些参数;输入‘c'则会进入命令行。我们选 ‘e’
                *进入单用户模式
                        输入‘e’,界面转变,显示:
                    root (hd0,0)
                        kernel /vmlinuxz-2.6.32-358.el6.i686 ro root=UUID=...  --选中,输入‘e'
                        initrd /initramfs-2.6.32-358.el6.i686.img
                        会提示:
<_NO_DM rhgh quiet
                        在后面加个‘single’或‘1’或‘s'
                              <_NO_DM rhgh quiet single
                        
然后先按回车然后 按‘b'启动就进入单用户了
                    *修改root密码 (passwd root)
                    *然后重启之后 ,用新的密码登陆就可以了

     系统安装盘的救援模式
          救援模式即 rescue,当系统无法进入的情况。如grub损坏或者某一个配置文件修改出错
             *光盘启动,F2进入bios,方向键选择“boot”,让CD-ROM Drice 移到最上面,F10保存
             *光盘启动后,选择“Rescue installed system”
               ^语言默认。
               ^键盘类型,默认
               ^Rescue Method默认
               ^这里的选项询问是否在rescue模式下,是否开启网络模式(随便选)
               ^提示Rescue 环境自动找到已经安装的Linux系统,并挂载到/mnt/sysimage下
               ^回车,提示linux系统挂载到了"/mnt/sysimage".如要获得root环境,
                执行"chroot /mnt/sysimage" 回车
               ^继续回车
               ^提示框,三个模式:shell -直接进入命令行 fakd 诊断模式;reboot 直接重启
            进入root环境
               ^到这里,就相当于windows中的pe,要想会太linux系统上,需执行:
               bash-4.1# chroot /mnt/sysimage
               sh-4.1#
               

2014/10/22
        Linux系统的远程登录
        Linux的服务器都是会要远程登录的(因为一般都会放在IDC机房).Linux系统中通过ssh服务
            实现的远程登录功能。默认开启了22端口(这个服务是默认安装并开启的)        
            ssshd服务的配置文件为/etc/ssh/sshd_config,可修改改文件,配置自己想要的sshd服务

        如你本地计算机为windows系统,那么远程linux系统需要一个终端软件,常见的有:
            SecureCRT,Putty,SSH,Secure Shell

    Linux IP的配置
        *自动获取IP --当你本地的IP是自动获取的,那么你安装的vm虚拟机中通过命令也能自动获取
            [root@localhost ~]# dhclient  --这个命令可查看系统有几块网卡和网卡的IP
        *手动配置IP --如本地IP是固定的,只能手动在配置文件中更改
            
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
                在最后添加 IPADDR=192.168.1.121  (这个IP一定要和你本机上的IP在一个网段)
                           NETMASK=255.255.255.0 (如没特殊要求一般都是这个)
                           GATEWAY=192.168.1.220 (这个填写你VM8上的IP地址就好)
                           把 ONBOOT=nO 更改为 ONBOOT=yes
                              “BOOTPROTO=dhcp”改为 BOOTPROTO=none
                然后重启网络服务:[root@localhost ~]# service network restart
                                    Shutting down interface eth0:                    [  OK  ]
                                    Shutting down interface eth1:                    [  OK  ]
        *设置DNS
            运行 vi /etc/resolv.conf,打开之后输入:nameserver 192.168.1.254 (本机IP)
 
             重启之后可以使用 
[root@localhost ~]# ifconfig eth0
         
        关于秘钥认证机制远程登录Linux
            现在的网络是越来越不安全了,所以,如果有一个密钥的话,会安全好多
            SSH服务支持一种安全认证机制,即密钥认证。
            *下载生产密钥工具 --
            *生成密钥对--双击puttygen.exe 右下角"Number of bits in a generated key" 把"1024"
                    改为"2048",然后点击"Generate".就生成密钥
            *保存密钥-- 点"Save private key",选择一个存放路径,定义一个名字,保存
            *复制公钥到Linux--在生成密钥的窗口,在"Key"的下方有一段长长的字符串(这就是公钥)
                复制下来,粘贴到Linux的 /root/.ssh/authorized_keys(本身不存在,需创建)文件里 
                    [root@localhost ~]# mkdir /root/.ssh
                    [root@localhost ~]# chmod 700 /root/.ssh
            *关闭Selinux--不关闭selinux,使用密钥登陆会提示"Server refused our key"
                    
[root@localhost ~]# setenforce 0  (暂时关闭)
                     vi /etc/selinux/config
                     把中间的SELINUX=enforcing 改为 SELINUX=disabled(永久关闭)

            *设置putty通过密钥登陆-- 打开putty.exe 点击保存好的session-右侧 load -左边SSH前的+
                       -Auth-右侧"Private key file for authertication-长条框的Browse-刚刚保存的
                        密钥-再回到左侧,点一下最上面的“Session”右侧点击“Save”
            *使用密钥登陆Linux-保存好session,点右下方的“Open”登陆

Linux文件与目录管理
        Linux 中一切皆文件
        绝对路径:路径的写法一定由根'/'写起
        相对路径:路径的写法不是由根目录'/'写起
    
        命令:cd (只能跟目录)
             用于变更用户所在目录的,如后面什么都不跟,则返回当前用户的根目录
        pwd:打印出当前所在目录
        ./ 表示当前目录 ../表示当前目录的上一级目录
        mkdir:(make directory) mkdir [-mp] [目录名称]
               -m 指定要创建目录的权限
               -p 当要创建的目录路径不存在的时候,可直接创建路径(当要创建的目录存在时,也不报错)
        rmdir:删除空目录,可跟多个目标(用空格分隔)
        rm: -r 删除目录,等同于rmdir
            -f 强制删除 不提示是否要删除

环境变量 PATH
          which:查找某个命令的绝对路径
          对于各种命令,都是有自己相对于的路径,因为有环境变量PATH,那么我们在使用
           的时候,就不需要打出命令的绝对路径
          [root@localhost ~]# echo $PATH
            /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
              就是说,我们使用的命令都在上面PATH环境里放着
          PS.如果把环境变量中的一些路径放到/root下时,再去使用命令就会提示找不到
           解决方法:#PATH=$PATH:/root
           另一种方法就是绝对路径:#/root/command
          cp:格式 cp [选项] [来源文件] [目的文件]
               -r:如果要cp一个目录,必须要加-r选项,和“rm”类似
               -i:安全选项,如遇见一个存在的文件,会询问是否覆盖
          mv: move的缩写。格式 mv [选项] [源文件] [目标文件]
                -i:和cp de i 一样,当目标文件存在时询问是否要覆盖
                     该命令有几种情况:^目标文件是目录,且目标文件不存在
                                       ^目标文件是目录,目标文件存在
                                       ^目标文件不是目录不存在
                                       ^目标文件不是目录存在

2014/10/24
            cat:查看一个文件的内容并显示在屏幕上
                -n 查看文件时,把行号也显示到屏幕上
                -A 显示所有东西出来,包括特殊字符
                
            tac:和“cat”一样,不过是倒序显示,即先显示最后一行
            more:查看文件内容,文件内容太多,一屏幕看不完,可以空格键看下一屏,“q”键退出
            less:和more一样,不同的是less可以上、下翻,空格键也可以翻页,“j”可向下移动
                “k”向上移动
                PS.当在使用more和less查看文件时,可输入'/'在输入word回车,可查证这个world
                    如world多重复,可“n”下一个 。“?”后输入world也可查找,不同的是,它
                    是向上搜索
               head: 直接跟文件名,则显示文件的前十行。-n  显示前n行
               tail:和head一样,不一样的是-n 显示最后n行 ,-f 动态的显示文件的最后十行

      文件的所属主以及所属组
                每一个Linux目录或者文件,都会有一个所属主和所属组。所属主,即文件的所有者
                所属组,即该文件所属主所在的一个组
        Linux 文件属性
         当用ls -l 来查看文件的时候,我们会看到好多的选项,具体的意思是什么呢?
        [root@localhost ~]# ls -l
        total 4640
        drwxr-xr-x. 2 root root    4096 Oct 23 17:38 123
        第一列,包含有该文件的文件类型和所属主、所属组以及其他用户对该文件的权限
        第一位字符用来描述该文件的类型:
            ‘d'表示该文件为目录;
            ‘-’表示未pt文件
            ‘|’表示该文件为链接文件
            ‘b'表示该文件为块设备,
            ‘c'表示该文件为串行端口设备,如键盘
            ‘s'为套接字文件,用于进程间通信
         第二列,表示为连接占用的节点(inode)
         第三列,表示该文件的所属主
         第四列,表示该文件的所属组
         第五列,表示该文件的大小
         第六列、7列、8列为该文件最近的修改日期,分别为月份日期以及时间
         第九列,文件名
 
    10/29  Linux系统用户及用户组管理

root的家目录是/root,普通用户的家目录则为/home/username,这个字段是可以定义的,

比如建立一个普通用户test1,要想让test1的家目录在/data目录下,只要修

改/etc/passwd文件中的test1那行中的该字段为/data即可

当一个用户组里有用户的时候,groupdel是不能直接删除用户组的

mkpasswd _用来生产密码
             yum install -y expect

   命令passwd:只有root才可以修改其他账户的密码,普通账户只能修改自己的密码
        mkpasswd:生成密码的一个工具


        关于命令 SU  在切换用户的时候它后面可以加“—”
           “—”这个字符的作用是,加上后会初始化当前用户的各种环境变量

        sudo:su 是可以切换用户身份的,为了不让普通用户都能切换到root身份,产生了sudo,
             sudo执行需要密码,这个密码是用户自己的密码而非 root密码
             对于普通用户要使用sudo,需要root事先设定,即,使用visudo命令去编辑
                /etc/sudoers.(visudo可 yum install -y sudo)
             对于默认root能用sudo,是因为这文件有“root ALL=(ALL) ALL”,如在这一行下
                加入“test ALL=(ALL) ALL”,就让test拥有了sudo的权利
             也可以,把用户加入组“# %wheelALL=(ALL) ALL”去掉前面的:# 就让wheel这个
             组都拥有了sudo权限

                keepass 是一个密码管理工具

Linux磁盘管理
        命令:df——查看已挂在磁盘的总容量、使用容量、剩余容量等,不加参数默认是按“K”输出
                -h:输出按“G”输出
                /dev/shm  为 内存挂载点
        命令:du——用来查看某个目录或文件所占空间大小
                “-a”全部文件与目录大小都列出来,如不加任何选项和参数只列出目录的大小
                如du不指定单位,默认输出单位为 K

 10/31 
        Linux 中最多只能创建4隔主分区,要想创建更多的分区,只能建立 extended分区
         前三个主分区,第四个扩展分区时,空间要全部划分给扩展(以免浪费空间)
            PS.扩展分区分完后,再划分心的分区时是在已经划分的扩展分区里来分的
                (注:扩展分区不能格式化,只能继续分区——也就是逻辑分区
              逻辑分区的id从5开始,因为前四个为主分区和扩展分区

        格式化磁盘分区
        命令:mke2fs,mkfs.ext2,mkfs.ext3,mkfs.ext4
        mke2fs常用的选项:
                -b:分区时设定每个数据区块占用空间大小,目前支持1024,2048以及4096bytes
                -i:设定inode的大小    
                -N:设定inode数量,有时使用默认的inode数不够用,所有自定设定inode数量
                -c:格式化前先检测一下磁盘是否有问题(加这个选项会非常慢)
                -L:预设该分区的标签label
                -j:建立ext3格式的分区,如使用mkfs.ext3就不用这个项
                -t:用来指定什么类型的文件系统,ext2 ext3 ext4 都ok

            ext文件系统默认块大小为4096也就是4K,格式化的时候,指定块大小为1024 2048 4096
            在格式化的时候,指定块能超过4096,但是就是不能正常正常挂载
             当块大于4096的时候,可以直接输入“y”强制格式化
    
    命令:e2label查看或修改分区的标签

    挂载/卸载磁盘
        在挂载某个分区前需要先建立一个挂载点,该挂载点是以目录的形式出现。如一个分区被挂载
            到这个点上(目录),那么再往这个目录写数据,都会写到该分区中(挂载分区前,挂载
                点(目录)下必须是空目录,如原先有数据的,则会看不到)
    命令:mount ,不加选项则显示当前系统已经挂载的所有分区,及分区文件系统的类型,挂载点等

        /etc/fstab
        该文件时系统启动时,需挂载的各个分区。第一列是分区的标识,可写分区的LABEL,也可写
            分区的UUID或分区名;第二列是挂载点;第三列是分区的格式;第四列是mount的一些挂载
            参数(一般都是默认);第五列的数字标识是否被dump备份,是的就是1;第六列开机时
            是否自检磁盘。1、2标识自检,0不自检  对于centos\redhat中,可能 1比2 的优先级高










































































































































































阅读(1269) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~