linux基础知识的总结

时间:2022-04-19 08:10:28

     如下内容是我对linux基础知识的总结,因为本人在初期学习linux的时候走了不少的弯路,对于基础的掌握耗费了不少的时间,所以为了后来者对linux的基础部分有个清晰的了解,特对基础知识进行了总结,因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的传播。^_^


*******************************************************************************************************

                                           linux基础知识总结

一.课程结构:

(一)预科部分:

    1.初始linux

        (1)了解linux的历史

        (2)对linux操作系统的认知

        (3)体会linux的优点

        (4)理解linux的基本思想

    2.学会如何安装linux操作系统

    3.掌握linux下的常规操作(登陆和注销)

    4.了解linux的目录结构

    5.掌握linux下的常规操作

    6.linux下的常规网络配置

    7.制作yum源(本地、远程)及yum命令的基本操作

(二)linux系统知识:
    
    1.redhat7下图形界面使用(包括gedit使用)、字符界面和图形界面的切换
    
    2.使用nautilus以图形方式管理文件(显示隐藏文件、访问远程ftp)
 
    3.熟悉redhat的文档阅读(redhat官方网站下载或者在本地owncloud处下载redhat7文档并阅读)
   
    4.配置本机系统时钟(ntpdate、system-config-date使用)

    5.shell的简介和使用
   
    6.管理物理存储(磁盘分区)
    
    7.使用LVM灵活存储(LVM的创建、使用、扩展、销毁)

    8.使用man手册获取帮助
    
    9.查看管理系统进程(关键字:ps、top、kill使用)
 
    10.建立网络链接(关键字:DNS、子网掩码、ping)

    11.系统服务的管理(关键字:systemctl)
    
    12.管理系统用户和组

    13.文件权限(文件权限的意义和修改)
     
    14.使用ssh远程管理系统(关键字:公私钥、ssh-keygen)

    15.apache、vsftpd和vnc服务器的配置

    16.管理物理存储(关键字:tune2fs、swap交换分区)

    17.selinux和iptables基本设置(设置文件的selinux标签、关闭打开iptables)

    18.软链接和硬链接(ln命令)
   
    19.归档和压缩(关键字:tar命令)
  
    20.vim的使用(关键字:快捷键操作)
    
    21.正则表达式(管道与重定向)
  
    22.网络故障的排除过程
    
    23.访问网络文件共享服务(NFS和CIFS(samba服务))
       
    24.管理文件系统(文件系统的加密)

*******************************************************************************************************

二.详细介绍
  
*******************************************************************************************************
    1.linux系统简介:
    
    Linux的含义

    严格的来讲,Linux不算是一个操作系统,只是一个Linux系统中的内核,即计算机软件与硬件通讯之间的平台;Linux的全称是GNU/Linux,这才算是一个真正意义上的Linux系统。GNU是Richard Stallman组织的一个项目,世界各地的程序员可以变形GNU程序,同时遵循GPL协议,允许任何人任意改动。但是,修改后的程序必须遵循GPL协议。    

    Linux的特点

    Linux之所以流行,是因为它拥有如下几方面的特点:

    开放性

    开放性是指系统遵循世界标准和规范,特别是遵循开发系统互联(OSI)国际标准。凡是,遵循国际标准开发的硬件和软件,都彼此兼容,可以方便的实现互联。

    稳定性

    Linux的稳定性是众所周知的,由于他没有太多的UI界面,所以他相对其他操作系统较稳定。

    多用户

    多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源,多任务文件系统,系统设备等。有特定的使用权。而彼此之间却不相互影响。Linux和Unix都具有多用户的特定。

    设备独立性

    是指操作系统把所有外部设备统一当成文件来看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道他们的具体存在形式。具有设备独立性的操作系统,通过把每一个外围设备看做一个独立的文件来简化增加新设备的工作。当需要向系统添加新设备时,系统管理员就在内核中增加必要的连接。这种连接(也称做设备驱动程序)保证每次调用设备提供服务时,内核都可以使用相同的方式来处理他们。当新的及更好的外设被开发并交付给用户,这些设备都连接到内核后,用户就能够不受限制的立即使用它们。设备独立性的关键在于内核的适应能力。其他的操作系统只允许一定数量或者一定种类的外部设备连接。而设备独立性的系统,能够容纳任意种类及任意数量的设备,因为每一个设备都是通过其与内核的专用连接独立进行访问的。

    丰富的网络功能

    完善的内置网络是Linux的一大特点。Linux在通信和网络功能方面优越于其他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。

    可靠的系统安全性

    Linux采用了许多安全技术措施,包括对读/写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了安全性。

    良好的可移植性

    可移植性是指系统从一个平台移植到另一个平台它仍能按其自身的方式运行的能力。Linux是一种可移植的系统,它能够从微型计算机到大型计算机的任何环境中和任何平台上运行。可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而又有效的通信提供了手段,不需要增加任何特殊的和昂贵的通信接口。

    支持多种文件系统

    Linux能够支持多种文件系统。目前支持的文件系统有EXT2、EXT3、ISOFS、MSDOS、UMSDOS、NFS、SYSV、Minix、SMB、UFS、NCP、VFAT、NTFS、AFFS等数十种。Linux最常用的文件系统是EXT4。 

    但是redhat7采用的文件系统是xfs,xfs与ext4相比有着更大的优势,为了云计算发展方向,redhat更换文件系统是一个比较明智的选择。对于ext4和xfs的性能对比参照以下的地址:
    
    不同linux文件系统的比较
    链接地址:http://man.ddvip.com/linux/Mandrakelinuxref/ch09s01.html

    Linux的发行版本

    发行版为许多不同的目的而制作, 包括对不同计算机结构的支持, 对一个具体区域或语言的本地化,实时应用,和嵌入式系统,甚至许多版本故意地只加入免费软件。基本上可以分为两大类:一类是由商业提供商提供的,在一定的时间内提供技术支持,该类版本的提供商有Red Hat和SUSE等;另一类是由具有共同的技术爱好者社区提供支持的,如BSD、Slackware、Debian、Fedora、Ubuntu等。以下是发行版本中较为流行的几种:

    FreeBSD

    需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支:stable和current。顾名思义,stable是稳定版,而 current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。

    Slackware

    Slackware是目前所有linux发行版本时间最久的一个版本,始于1993年的Partick Volkerding。它很具有Unix/BSD的风格,它只吸收经过测试且稳定的软件版本,所以稳定性是所有版本的很强的一个。此外,由于缺少其他发行版本的配置工具和系统外壳,它要求用户必须掌握命令行的操作、编辑文本配置文件。所以对于一般接触linux不久的用户上手较难,但是一旦你熟悉了命令行就会让你用起来十分快速。该系统的优点是系统对硬件要求很低,而且运行速度很快;其缺点是支持的软件较少,要熟悉掌握它需要较长的时间摸索。

    Debian

    Debian系列,包括Debian和Ubuntu等。Debian最早由Ian Murdock于1993年创建,Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统,它拥有很多的支持者,社区发展也非常稳定,软件的安装,升级非常方便,Bug补丁发布非常及时。分为三个版本分支:stable, testing 和 unstable。其中,unstable(不稳定)为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。Testing(测试中)的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable(稳定)一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,在二进制文件发行方式中,APT应该是最好的了。

    SUSE

    SUSE 原是以Slackware Linux为基础,并提供完整德文使用界面的产品。1992年 Peter McDonald成立了Softlanding Linux System(SLS)这个发行版。这套发行版包含的软件非常多,更首次收录了X Window及TCP/IP等套件。Slackware就是一个基于SLS的发行版。原来的名字叫"S.u.S.E."后来改称/简短为"SuSE",意思为"Software- und System-Entwicklung",那是一句德文,英文为"Software and system development"。现在这家公司的名字再度更改成SUSE Linux,"SUSE"一字已经不包含甚么意义了。
    2003年11月4日,Novell表示将会对SUSE提出收购。收购的工作于2004年1月完成。Novell也向大家保证SUSE的开发工作仍会继续下去,Novell更把公司内全线电脑的系统换成SUSE LINUX,并同时表示将会把SUSE特有而优秀的系统管理程序 - YaST2以GPL授权释出。
    2005年8月4日,Novell公共关系科的领导及代言人 - Bruce Lowry表示,SUSE Linux Professional系列的开发将变得更开放以及让社群参与当中的工作。新的开发计划名为openSUSE,目的是为了吸引更多的使用者及开发人员。相比以往,现在所有的开发人员及使用者能够测试SUSE的产品并一起开发新版本的SUSE。在以往,SUSE的开发工作都是于内部进行的。SUSE 10.0是第一个给予公众测试的版本。为了配合这个转变,用户除了能够购买盒装版本的SUSE外,也可以从网络上免费下载。一系列的改变让于2005年10月6日推出的SUSE Linux有三个版本 - "OSS版" (完全地开放原始码)、"试用版"(同时包含开放原始码的程序及专属程序如Adobe Reader、Real Player等,其实就是盒装零售版,也可以免费下载,可以安装在硬盘上,并且没有使用限制或限期,但不含说明手册及Novell提供的技术支援)及盒装零售版。
    2010年,Attachmate收购Novell。SUSE成为Attachmate的产品。
    需要注意的是,Novell Linux Desktop 系列的新产品以后改称 SUSE Linux Enterprise Desktop。他是德国最著名的Linux发行版,在全世界也享有较高的声誉,号称是世界上最华丽的操作系统。它一直致力于创建一个连接数据库的最佳Linux版本。为了实现这一目的,SuSE与Oracle 和IBM合作,以使他们的产品能稳定地工作。他自主开发的软件包管理系统YaST也得到了大家的好评,SuSE还开发了SuSE Linux eMail Server III,是一个非常稳定的电子邮件群组应用。另外,SuSE的硬件检测也非常优秀,该版本在服务器和工作站上都用得很好。在安装方面,SuSE拥有界面友好的安装过程,还有图形管理工具,可方便地访问Windows磁盘,对于终端用户和管理员来说使用它同样方便,这使它成为了一个强大的服务器平台。在桌面方面,SUSE支持kde和gnome,xface等桌面,桌面特效比较丰富,新手用这个也很容易上手,缺点是KDE虽然华丽多彩,但比较不稳定。

    Red Hat

    1991年,Linus的Linux内核发布,同年加拿,多伦多大学毕业的Bob Yong在纽约把UNIX用户组引入系统管理*软件。加强了Linux用户的管理功能。1993年,Bob Yang 创立了ACC公司,主要营销Linux和UNIX的支持软件和书籍杂志。 1994年,美国卡内基梅隆大学毕业的Marc Ewing建立了自己的Linux分销业务,并发布了Red Hat Linux 1.0。 1995年,AAC公司的Bob Yang 收购了Marc Ewing的业务,合并后的ACC公司成为新的Red Hat软件公司,并发布了Red Hat Linux 2.0。 1997年12月,Red Hat Linux 5.0发布,它支持Intel、alpha和Sparc平台和大多数的应用软件。极其简单易用的RPM模块化的安装、配置和卸载工具,使程序的安装可在15分钟内完成。软件升级也很方便,这对刚开始使用Linux的用户来说是非常好的消息。 2003年4月,Red Hat Linux 9.0发布。重点放在改善桌面应用方面,包括改进安装过程、更好的字体浏览、更好的打印服务等。2004年4月30日,Red Hat公司正式停止对Red Hat 9.0版本的支持,标志著Red Hat Linux的正式完结。原本的桌面版Red Hat Linux发行包则与来自社区的Fedora计划合并,成为Fedora Core发行版本。Red Hat公司宣布不再开发桌面版的Linux发行包,而将全部力量集中在服务器版的开发上,也就是Red Hat Enterprise Linux版。
    Redhat系列,包括RHEL、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆免费版本)。发展到RHEL5时分成了两个版本,Server和Desktop。

    Server版本又分为:

    Red Hat Enterprise Linux Advanced Platform对应以前的 Red Hat Enterprise Linux AS
    Red Hat Enterprise Linux对应以前的Red Hat Enterprise Linux AS

    Desktop版本分为:

    Red Hat Enterprise Linux Desktop对应以前的Red Hat Desktop
    Red Hat Enterprise Linux Desktop with Workstation option 对应以前的Red Hat Enterprise Linux WS  

    Fedora

    Fedora(原名 Fedora Core 自第七版更名为Fedora)是众多 Linux 发行套件之一。是一个开放的、创新的、前瞻性的操作系统和平台,基于 Linux。它允许任何人*地使用、修改和重发布,无论现在还是将来。Fedora的前身是Red Hat Linux。2003年9月 ,红帽公司 (Red Hat) 突然宣布不再推出个人使用的发行套件Red Hat Linux而专心发展商业版本(Red Hat Enterprise Linux),但红帽公司也同时宣布将原有的 Red Hat Linux 开发计划和 Fedora 计划整合成一个新的 Fedora Project。Fedora Project 将会由红帽公司赞助,以 Red Hat Linux 9 为范本加以改进,原本的开发团队将继续参与 Fedora 开发计划,同时也鼓励开放原始码社群参与开发工作。 Fedora被红帽公司定位为新技术的实验场,与 Red Hat Enterprise Linux 被定位为稳定性优先不同,许多新的技术都会在 Fedora Core 中检验,如果稳定的话红帽公司则会考虑加入 Red Hat Enterprise Linux 中。Fedora 预计每年发行 2~3 次的发行版本。  
        
    Ubuntu

    Ubuntu是现在最流行的Linux桌面系统。它简单方便,有KDE和GNOME等视窗界面可供选择,拥有强大的apt-get软件管理程序,安装个管理软件很方便。
    Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。     

*******************************************************************************************************

    2.安装redhat系统

    对于安装系统我们有以下主要的方法:
        
        (1)DVD光盘安装;
        (2)u盘引导安装;
        (3)网络引导安装;
        (4)使用iso文件安装(虚拟机时可以使用)
    
    *对于redhat安装时主要有以下几个方面要注意:
    
        (1)/boot、/和swap的大小设置建议大小分别为:

             /boot          200M
             /                  5G(或者更多,最好使用LVM)
             swap         所分配内存的大小

        (2)设置好时区(为Asian/Shanghai)、超级用户密码
   
*******************************************************************************************************           
    3.掌握linux下的常规操作

        登陆和注销
        
        登陆linux系统需要用户名和密码,分为超级用户(root)和普通用户,两者之间存在着权限的差异。
   
        虚拟控制台:RHEL在电脑为用户提供了6个可以使用的虚拟控制台(Virtual Console)拟当Unix的”哑终端“。我们可以用CTRL+ALT+F1~F6这6个组合键来访问对应的VC,每个VC对应6个组合键中的一个,在图形界面时可以用组合键CTRL+ALT+F7回到图形环境。
        
        如果是在控制台中要进行用户的切换使用su命令,超级用户切入到普通用户可以直接切换。
        
        登陆控制台之后我们可以看到一个等待用户输入命令的行提示符号:
        
        [root@server home]#

       第一个是指用户为root,server为我们的主机名(输入命令hostname可以查看),第三个为我们当前工作目录
       这个格式在当前用户的家目录中的文件下设置,如果是超级用户root,可以查看文件:
        
        [root@foundation0 ~]# vim /root/.tcshrc

       命令行提示符的结尾为#说明是超级用户,如果是$说明是普通用户
        
       
       文件路径(绝对路径和相对路径)
       
       绝对路径:在Linux中,绝对路径是从/(也被称为根目录)开始的,比如/usr、/etc/X11。
       相对路径:对应的就不是从/开始描述的,以当前目录.开始进行描述。(.为当前目录,..为当前目录的上一级目录)

       文件和目录操作命令
        
       1.ls命令

       这个命令就相当于 dos 下的 dir 命令一样 也是 Linux 控制台命令中最为重要几个命令之一,ls 最常用的参数有三个-a、-l 和 –F:

       ls -a
       Linux 系统上的文件以.开头的文件被系统视为隐藏文件,仅用 ls 命令是看不到他们的。而用ls -a除了显示一般文件名外,连隐藏文件也会显示出来。

       ls –l
       这个命令可以使用长格式显示文件内容 如果需要察看更详细的文件资料就要用到 ls -l 这个指令。
       
       ls -F
       在列出的文件 目录 名称后加一符号 例如可执行文件加 "*", 目录则加 "/"。
       
       2.cd命令

       cd 这个命令是用来进出目录的,它的使用方法和在 dos 下没什么两样,但和dos不同的是Linux的目录对大小写是敏感的如果大小写拼写有误,你的cd操作是成功不了的。另外,cd 如果直接输入,cd 后面不加任何东西。会回到使用者自己的 Home 目录,假设如果是 root 那就是回到/root。这个功能同 cd ~是一样的。
       
      3. mkdir rmdir命令

      mkdir 命令用来建立新的目录
      如输入如下命令
      mkdir work
      将在当前目录下新建一个 work 目录
      rmdir 用来删除已建立的目录
      如输入如下命令
      rmdir work
      将删除已存在的空目录 work        

      *如果要删除的目录不为空的话,使用rmdir无法进行删除,使用命令:
      [root@foundation0 Desktop]# rm 目录文件 -fr
     
      4. cp命令

      cp 这个命令相当于 dos 下面的 copy 命令
      具体用法是:

      cp –r 源文件(source) 目的文件(target)
      参数 r 是指连同源文件中的子目录一同拷贝  
      在我们的shell设置中,把cp -r的别名设置成了cp,两者功能相同。
      
      5. rm命令

      rm 这个命令是用来删除文件的
      rm 命令常用的参数有三个-i,-r,-f

      比如我现在要删除一个名字为 text 的一个文件
      输入如下命令
      rm –i test
      系统会询问我们是否要删除 test 文件 敲了 y/n 确认是否要删除 test 文件

      rm –r 目录名
      这个操作可以连同这个目录下面的子目录都删除
      功能比上面讲到的 rmdir 更强大 不仅可能删除指定的目录 而且可以删除该目录下所有文件和子目录。

      rm –f 文件名
      这个操作可以不经确认强制删除文件
      
      *需要强调的是,rm 文件 -fr这个命令是十分危险的,当你不清楚它执行后的结果的时候请不要轻易使用,以免造成文件的丢失。
      
      6. mv命令

      mv 这个命令的功能是移动目录或文件
      引申的功能是给目录或文件重命名
      比如:
      mv /tmp/xxx.tar /root
      该命令将/tmp 目录下的 xxx.tar 文件移动到/root 目录下,需要注意的是mv此时和cp命令有着些许差别,mv会把移动文件的安全上下文属性保留,cp则会使用目标目录的安全上下文。
      
      查看文件的安全上下文:
      [root@foundation0 mnt]# ll file -Z
      -rw-r--r--. root root unconfined_u:object_r:mnt_t:s0   file

      这个是cp后的结果,安全上下文由mnt_t改为public_content_t。
      [root@foundation0 mnt]# cp file /var/ftp/pub/file1
      [root@foundation0 mnt]# ll /var/ftp/pub/file1 -Z
      -rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 /var/ftp/pub/file1
      这个是mv后的结果,安全上下文未发生改变:
      [root@foundation0 mnt]# mv file /var/ftp/pub/
      [root@foundation0 mnt]# ll /var/ftp/pub/file -Z
      -rw-r--r--. root root unconfined_u:object_r:mnt_t:s0   /var/ftp/pub/file

      *安全上下文是linux系统中另外一种安全机制,与selinux是息息相关的。相当于给每个文件一个标签,通过安全上下文可以限制文件的功能。

      文件重命名:
      mv aaa.tar bbb.tar
      则是将当前目录下的文件 aaa.tar 更名为 bbb.tar      
       
      7. cat命令

      cat 这个命令是 linux 中非常重要的一个命令,它的功能是显示或连结一般的ascii文本文件。它的用法如下:

      cat text
      该命令显示 text 这个文件的内容

      cat file1 file2
      该命令依顺序显示 file1,file2 的内容

      cat file1 file2>file3
      该命令把 file1,file2 的内容结合起来再重定向>到 file3 文件中  

      8. more命令

      more 是显示一般文本文件的指令,如果一个文本文件太长了超过一个屏幕的画面,用cat来看实在是不理想就可以试试 more。

      用法如下:
      more file1 
     
      9. pwd命令

      pwd 这个命令的作用是显示用户当前的工作路径,直接输入 pwd 即可。

      示例:
      [root@foundation0 mnt]# cd /var/ftp/pub/
      [root@foundation0 pub]# pwd
      /var/ftp/pub

      用户及用户组管理命令

      1. useradd命令

      useradd 命令可以创建一个新的用户帐号,其最基本用法为:
      useradd 用户名

      如输入以下命令
      useradd newuser,系统将创建一个新用户 newuser,该用户的 Home 目录为/home/newuser。
      
      useradd 命令的参数较多,常用的组合为:

      useradd 用户名 -g 组名 –G 组名 -d Home目录名 -p 密码
      其中:
      -g 指定该用户的首要组
      -G 指定该用户的次要组
      -d 指定该用户的 Home 目录
      -p 指定该用户的密码

      如输入以下命令:
      useradd oracle –g oinstall –G dba –d /home/oracle –p ora123

      系统将创建一个用户oracle,oracle用户的首要组为oinstall,次要组为dba,Home目录为/home/oracle,密码为 ora123。
     
      *当要查看系统是否有某个用户的时候,使用命令id:

      id 用户名

      2.userdel命令

      userdel命令用于删除一个已经存在的帐号,其用法为:
      userdel 用户名

      3.groupadd命令
      groupadd 命令可以创建一个新的用户组,其最基本用法为:

      groupadd 组名

      如输入以下命令:
      groupadd newgroup

      系统将创建一个新的用户组 newgroup    
      
      4.groupdel命令

      groupdel 命令用于删除一个已存在的用户组,其用法为:

      groupdel 组名

      5.passwd命令

      出于系统安全考虑 Linux 系统中的每一个用户除了有其用户名外还有其对应的用户口令,用户可以随时用passwd命令改变自己的口令,该命令的一般格式为:

      passwd

      输入该命令后,按系统提示一次输入密码和密码确认后,即可完成对用户密码的修改      此外,超级用户还可以修改其他用户的密码,命令如下:
      
      passwd 用户名
      
      6.su命令

      su 命令这个命令非常重要,它可以让一个普通用户拥有超级用户或其他用户的权限也可以让超级用户以普通用户的身份做一些事情。普通用户使用这个命令时必须有超级用户或其他用户的口令,如果想要离开当前用户的身份可以键入 exit 命令。su 命令的一般形式为:
      su - 用户名

      7.chmod命令

      使用权限 : 所有使用者
      使用方式 : chmod [-cfvR] [--help] [--version] mode file...
      说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。

      参数 :
      mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中:

      u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
 
      + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
      r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
      -c : 若该档案权限确实已经更改,才显示其更改动作
      -f : 若该档案权限无法被更改也不要显示错误讯息
      -v : 显示权限变更的详细资料
      -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
      --help : 显示辅助说明
      --version : 显示版本

      范例 :将档案 file1.txt 设为所有人皆可读取 :\
      chmod ugo+r file1.txt 

      将档案 file1.txt 设为所有人皆可读取 :
      chmod a+r file1.txt 

      将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
      chmod ug+w,o-w file1.txt file2.txt 

      将 ex1.py 设定为只有该档案拥有者可以执行 :
      chmod u+x ex1.py 

      将目前目录下的所有档案与子目录皆设为任何人可读取 :
      chmod -R a+r * 

      此外chmod也可以用数字来表示权限如 chmod 777 file
      语法为:chmod abc file
      其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
      r=4,w=2,x=1
      若要rwx属性则4+2+1=7;
      若要rw-属性则4+2=6;
      若要r-x属性则4+1=5。

      范例:
      chmod a=rwx file和chmod 777 file效果相同。
      chmod ug=rwx,o=x file和chmod 771 file 效果相同。
      若用chmod 4755 filename可使此程序具有root的权限。

      8.chown命令

      chown 用于更改某个文件或目录的属主和属组,这个命令也很常用,例如root用户把自己的一个文件拷贝给用户 oracle 为了让用户 oracle 能够存取这个文件,root用户应该把这个文件的属主设为 oracle 否则用户oracle无法存取这个文件。

      chown 的基本用法为:
      chown [用户:组] 文件

      举例:
      chown oracle:dba text
      该命令将 text 文件的属主和属组分别改为 oracle 和 dba。

      磁盘及文件系统管理命令:

      1.df命令

      作用:df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。

      格式 df [options]

      主要参数

          -s:对每个Names参数只给出占用的数据块总数。
          -a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则
          只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
          -k:以1024字节为单位列出磁盘空间使用情况。
          -x:跳过在不同文件系统上的目录不予统计。
          -l:计算所有的文件大小,对硬链接文件则计算多次。
          -i:显示inode信息而非块使用量。
          -h:以容易理解的格式印出文件系统大小,例如136KB、2 4MB、21GB。
          -P:使用POSIX输出格式。
          -T:显示文件系统类型。

      说明

      df命令被广泛地用来生成文件系统的使用统计数据,它能显示系统中所有的文件系统的信息,包括总容量、可用的空闲空间、目前的安装点等。

      超级权限用户使用df命令时会发现这样的情况:某个分区的容量超过了100%。这是因为Linux系统为超级用户保留了10%的空间,由其单独支配。也就是说,对于超级用户而言,他所见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员还可以正常工作。 

      使用示例:
      [root@foundation0 yum.repos.d]# df -h
      Filesystem      Size  Used Avail Use% Mounted on
      /dev/sda1       462G   50G  413G  11% /
      devtmpfs        1.8G     0  1.8G   0% /dev
      tmpfs           1.8G   12K  1.8G   1% /dev/shm
      tmpfs           1.8G   17M  1.8G   1% /run
      tmpfs           1.8G     0  1.8G   0% /sys/fs/cgroup
      /dev/loop0      3.5G  3.5G     0 100% /content/rhel7.0/x86_64/dvd

      2. mount 和 umount
      mount 命令有很多参数,其中大多数都不会在日常工作中用到,mount 命令最常见的用法如下所示:

      mount [选项] 设备 目录
      其中最常用的选项是 -a,把/etc/fstab 文件中列出的文件系统都挂装上

      挂装软驱和光驱的命令比较简单,直接输入以下命令即可:

      mount /mnt/cdrom
      mount /mnt/floppy

      umount 命令用于卸载一个文件系统,命令的格式如下:

      umount [ -f ] directory

      其中directory 是准备卸载的目录名

      umount 命令有一个不足之处 如果文件系统正在使用中 也就是说有人在那个分区上打开了文件 就无法把这个文件系统卸载下来 这时可以使用和- f参数强制执行卸载操作 当然这种操作可能会造成用户数据的丢失。如:

      umount -f /mnt/cdrom

      该命令将强制卸载挂装在/mnt/cdrom 目录下的文件系统
     
      所以我们给出的建议是,最好先退出所要卸载的目录,然后再执行卸载命令。
      
          

*******************************************************************************************************

    4.linux的目录结构
    
    关于linux的目录结构,我这里找到一篇博客解释的非常详细,对于目录及其各个文件的功能都有着非常详细的解释,大家可以学习并进行理解:
    
    链接地址:http://yangrong.blog.51cto.com/6945369/1288072

*******************************************************************************************************
    
    5.linux下的网络配置:
    
    关于linux的网络配置,redhat6和redhat7有着细微的差别:
    
    网卡的名称发生了改变,在redhat6中,我们着重关注的文件是ifcfg-eth0和ifcfg-br0(与虚拟机进行桥接的文件),而在redhat7中,ifcfg-eth0变成了ifcfg-enp3s0f0的形式,也就是说eth0网卡失效了。但是这几个文件的目录并没有发生改变:
    
    网络配置文件目录:/etc/sysconfig/network-scripts/
    
    如果我们不进行桥接的情况下,在ifcfg-eth0和ifcfg-enp3s0f0中需要写入以下参数:
    
    DEVICE       设备名称                                   与ifcfg-后的名字要相同,否则系统无法识别;

    ONBOOT       YES|NO                                 在重新启动网络时是否开启该网卡

    BOOTPROTO    dhcp | (static | none) 

dhcp表示我们主机的IPADDR,GATEWAY,DNS都是自动获取的,这个设置要想成功的话,当前的环境中必须要有dhcp服务器开启,否则会获取失败,如果设置为static或者none,则需要手动设置IPADDR,GATEWA Y和DNS1的值。    

    GATEWAY      环境的网关IP
    IPADDR       与网关在同一网段的IP
    DNS1         域名解析服务器IP
    NETMASK      子网掩码(可以与IPADDR进行与运算确定该IP网段)      
     
*******************************************************************************************************
    
    6.制作yum源(本地、远程)及yum命令的基本操作

    关于yum源很多同学并不了解它的机理,yum是一个软件包管理器,一般我在安装完一个虚拟机的时候第一时间就是设置它的yum仓库,因为只有这样我们才可以轻松的安装redhat官方提供给我们的各种工具包。所以熟悉和懂得yum仓库的配置是非常重要的。

    为什么是YUM?

    基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
    是的,它帮助我们把各种RPM包的依赖性解决好了,只需要执行yum命令安装就可以了,所以很实用。

    制作远程yum源

    这个就相当于是别人把yum源做好之后,把地址共享出来,我们设定好远程yum源后,每次在安装某个软件的时候,其实是在本地查询软件的包依赖关系,按照依赖关系在远程的ftp服务器下载指定的包,完成安装后删除(系统默认,可保存包)所下载的包。
    此时你只需要设置一个配置文件即可,该文件的目录为:
    
    /etc/yum.repos.d/
    在这个目录下的文件都是以repo为后缀结尾的,例如:yum.repo

    编辑yum.repo文件,下面是我给出的一个示例:
    
    [source]
    name=localserver
    #baseurl=ftp://192.168.3.252/pub/rhel7.0
    baseurl=file:///content/rhel7.0/x86_64/dvd
    gpgcheck=0

    我们做下解释,第一行为一个源的名称(可以自定义),name是对这个源的描述(可以自定义),baseurl是yum源的指定目录。如果是远程的yum源使用ftp://,如果是本地的yum源使用file://然后加上yum源的绝对路径
    gpgcheck决定是否要对所下载的包进行校验,0为否,1为是。

    这个是repo文件里主要的参数,还有其他的参数,以后有需求了再进行应用:

    cachedir:  yum缓存的目录,yum在此路径下存储下载的rpm包和数据库,一般是/var/cache/yum。
    debuglevel:除错级别,0──10,默认是2
    logfile:   yum的日志文件,默认是/var/log/yum.log。

    pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。

    distroverpkg:指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。

    exactarch:有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用i686的包来升级。
 
    retries:   网络连接发生错误后的重试次数,如果设为0,则会无限重试。
    tolerent:  也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1则yum不会出现错误信息,默认是0。

    exclude:   排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
 
    gpgcheck: 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像也是检查的。
    plugins:  是否启用所有的插件(plug-in),默认为0,代表不启用。由于RHEL为YUM提供了一个名为rhn-plugin的插件,以便读取RHN提供的YUM下载源,因此你必须保持这个参数为1,才能顺利使用RHN的YUM下载源来安装、升级你的RHEL。

    metadata_expire: 定义YUM缓存中数据的过期时间,单位为秒。
    proxy:    指定读取下载源时使用的代理服务器的路径(URL)。

    制作本地yum源:
    
    制作本地yum源分为两个步骤:

    (1)首先,我们要把iso镜像文件挂在到指定的目录中,写入/etc/fstab文件;

     写入的内容与下面内容类似:

/content/rhel7.0/x86_64/isos/rhel-server-7.0-x86_64-dvd.iso   /content/rhel7.0/x86_64/dvd   iso9660   loop,ro   0 0

     *每次修改完/etc/fstab中需要执行命令mount -a;  
  
    (2)然后在/etc/yum.repos.d/yum.repo文件中写入baseurl参数中。

     *每次修改完repo文件,请执行yum clean all命令进行刷新。

     关于yum的基本操作有以下几个命令:

         查看所有安装包的列表    yum list
         查看命令是何种包支持的  yum whatprovides 命令
         安装包                  yum install 包
         删除安装过的包          yum remove 包
         再次安装包              yum reinstall 包
         组安装                  yum groupinstall 包
         组删除                  yum groupremove 包
    
*******************************************************************************************************

(二)linux系统知识:

*******************************************************************************************************

    1.redhat7的图形界面和6有着比较大的区别,它将之前的几个目录集和到了Applications里边,大家可以尝试着里边的应用,图形界面我们不做过多的解释。
    
    图形界面和字符界面的切换:
     
    图形---->字符: 
    [root@foundation0 yum.repos.d]# init 3
    
    字符---->图形:
    [root@foundation0 yum.repos.d]# init 5

    如果我们想要修改系统的开机默认界面,redhat6和7的方法有区别:
    
    redhat6修改开机启动界面:
    编辑/etc/inittab文件,在最末尾设置开机级别,0-6七个级别。

    redhat7修改开机启动界面:

    查看/etc/inittab文件如下所示:
 
    # multi-user.target: analogous to runlevel 3
    # graphical.target: analogous to runlevel 5
    #
    # To set a default target, run:
    #
    # ln -sf /lib/systemd/system/<target name>.target /etc/systemd/system/default.target
 
    可以看到图形界面和字符界面对应的参数分别为:

    graphical.target(5)和multi-user.tartget(3)

    开机默认为图形界面:

    ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target    

    开机默认为字符界面:

    ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target    
    
*******************************************************************************************************          
    2.使用nautilus以图形方式管理文件

    打开文件管理器:
    [root@foundation0 Desktop]# nautilus

    进入管理器后要想看到隐藏文件(以.开头的文件):
    ctrl+h

    想要访问远程ftp文件目录:
    单击“Connect to Server”,输入ftp://XXX.XXX.XXX.XXX即可访问远程ftp(前提是对方开发了ftp服务)

    *管理和访问文件我们建议尽量的使用命令行进行处理。

*******************************************************************************************************

    3.熟悉redhat的文档阅读(redhat官方网站下载或者在本地owncloud处下载redhat7文档并阅读)

*******************************************************************************************************
     
    4.配置本机系统时钟

    时钟的设置是非常有必要的,对于监控和系统报警的软件,准确的时钟是至关重要的,当时钟不准确时我们需要进行及时的调整,有命令和图形的两种方法:
    
    (1)使用命名ntpdate直接修改:
    
     ntpdate XXX.XXX.XXX.XXX(开放ntpd服务的主机)
     
     *完成后使用命令date可以进行确认
    
    (2)使用system-config-date打开图形界面进行同步设置。

*******************************************************************************************************
    
    5.shell的简介和使用

    Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
    实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
    Linux提供了像MicrosoftWindows那样的可视的命令输入界面--X Window的图形用户界面(GUI)。它提供了很多桌面环境系统,其操作就像Windows一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。GNOME。
每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。
    同Linux本身一样,Shell也有多种不同的版本。主要有下列版本的Shell:
   
    Bourne Shell:是贝尔实验室开发的。
    BASH        :是GNU的Bourne Again Shell,是GNU操作系统上默认的shell。
    Korn Shell  :是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。
    C Shell     :是SUN公司Shell的BSD版本。
    Z Shell     :The last shell you’ll ever need! Z是最后一个字母,也就是终极Shell。它集成了bash、ksh的重要特性,同时又增加了自己独有的特性。

    *shell的使用之前我们已经介绍了部分命令,然而对于shell的学习不仅限于此。在以后的linux学习中我们还要接触脚本的编程,让系统的管理变得自动化。但是前面的命令操作是基石,希望大家能够熟练掌握。

*******************************************************************************************************

    6.管理物理存储
    
        主要掌握的命令fdisk,并且在分区结束后要使用命令partprobe刷新分区表.

        查看设备:
        [root@foundation0 Desktop]# cat /proc/partitions
        
        关于磁盘分区的详细介绍可以查看博客:
        http://blog.chinaunix.net/uid-29622064-id-4221446.html

*******************************************************************************************************

    7.使用LVM灵活存储(LVM的创建、使用、扩展、销毁)

    *这个内容是我们重点进行讲解的,而且大家都要做总结进行整理。 

    请注意xfs和ext4文件系统在扩展的时候使用的命令有所差异:
    
    xfs使用的命令是:
    [root@foundation0 Desktop]# xfs_growfs 设备名(lv)
 
    ext4使用的命令是:
    [root@foundation0 Desktop]# resize2fs 设备名(lv)

    也可以参看博客(ext4文件系统的操作):
    http://blog.chinaunix.net/uid-29622064-id-4225209.html

*******************************************************************************************************

    8.使用man手册获取帮助

    对命令的操作不熟悉时,或者在C语言编程对函数的参数有不了解的地方。则需要使用man命令进行查找,它有很多个查找类型:
    
       1   Executable programs or shell commands
       2   System calls (functions provided by the kernel)
       3   Library calls (functions within program libraries)
       4   Special files (usually found in /dev)
       5   File formats and conventions eg /etc/passwd
       6   Games
       7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
       8   System administration commands (usually only for root)
       9   Kernel routines [Non standard]
    
    *小提示:在man中如果搜索某个关键字,使用“/查找关键字”快速的进行定位。并且可以按“n”进行下一个的匹配
   
*******************************************************************************************************

    9.查看管理系统进程    

    熟练掌握以下命令:
    
    ps aux
    top
    kill

    我们可以通过上述的命令关闭某些进程;找到系统所占用资源最大的进程;找到指定的进程。

*******************************************************************************************************
 
    10.建立网络链接
    
    之前我们已经熟悉了网络配置文件里的部分参数意义,这个阶段的内容就是要能够准确的配置,让主机能够连接外网,可以通过ping命令进行检验,一旦能够发送接受数据包说明二者之间可以通信。

    并且我们要熟悉网络故障排错的一般流程(这个是要作为作业总结的^_^)

*******************************************************************************************************

    11.系统服务的管理(关键字:systemctl)  

    对于系统服务的管理,redhat7和6有着不小的区别:
    在redhat6中我们在/etc/init.d/目录下进行服务的开关,例如:
 
    /etc/init.d/network restart
    
    而在redhat7中,我们使用systemctl命令进行开关服务:
    
    systemctl start network

    主要需要掌握以下几个命令:

    systemctl start      服务名称
    systemctl stop       服务名称
    systemctl status     服务名称
    systemctl restart    服务名称

*******************************************************************************************************

    12.文件权限
    
    ls -l可以列出文件的权限,但是这只是一部分。我们要学习如何修改文件权限,如何修改文件的安全上下文,以及setacl和getacl的使用。

*******************************************************************************************************

    13.使用ssh远程管理系统(关键字:公私钥、ssh-keygen)

    ssh可以远程访问系统,使用所访问系统的用户名和密码。
    ssh-keygen可以生成认证文件,通过非对称加密,把公钥拷贝给对应的远程主机,可以实现无密码认证的远程访问。

*******************************************************************************************************

    14.apache、vsftpd和vnc服务器的配置

    了解apache、vsftpd和vnc服务端的安装包有那些;
    安装上述的服务,并且能够简单的修改配置文件;
    开启服务。
 
*******************************************************************************************************

    15.管理物理存储(关键字:tune2fs、swap交换分区)

    通过磁盘分区生成swap分区,并对磁盘分区进行添加和删除

*******************************************************************************************************

    16.selinux和iptables基本设置

    selinux是安全上下文,上面的内容已经做了简单的介绍。

    SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。

    我们要知道selinux的配置文件在:
    /etc/sysconfig/selinux中,它有三种模式:
    
    #     enforcing - SELinux security policy is enforced.              强制打开模式
    #     permissive - SELinux prints warnings instead of enforcing.    打开并警告模式
    #     disabled - No SELinux policy is loaded.                       关闭模式

    在命令行下可以进行状态的切换(前提是selinux是打开状态):
    setenforce (0 | 1)  0为permissive,1为enforcing
    getenforce            可以得到selinux的状态    

    对于iptables我们暂时只需要学会如何去打开和关闭iptables,关于iptables的添加策略有兴趣的同学可以在网上搜索资料自行学习。

*******************************************************************************************************
    
    17.软链接和硬链接(ln命令)

    软连接和硬连接可以查看博客:
    http://blog.chinaunix.net/uid-29622064-id-4220416.html

*******************************************************************************************************

    18.归档和压缩(关键字:tar命令)

    这个就是我们windows当中的压缩和解压缩,要求我们要熟悉tar命令。

    关于tar命令的解释,网上有很多博客介绍到了:
    http://blog.csdn.net/ericbaner/article/details/3966741
    
    关于解压缩除了tar之外,我们有时还需要解压zip和rar压缩包:

    1)对于.zip
  linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,
这里只做简单介绍,依旧举例说明一下其用法:

  # zip all.zip *.jpg
  这条命令是将所有.jpg的文件压缩成一个zip包

    # unzip all.zip
  这条命令是将all.zip中的所有文件解压出来

  2)对于.rar

  要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux不是免费的;然后安装:
  # tar -xzpvf rarlinux-3.2.0.tar.gz
  # cd rar
  # make
  这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。

    它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:
  # rar a all *.jpg
  这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar

    扩展名将自动附加到包名后。
  # unrar e all.rar
  这条命令是将all.rar中的所有文件解压出来   
   
*******************************************************************************************************

    19.vim的使用

    关于vim的使用技巧,这里推荐《VI和VIM编辑器(第7版)(中文版).pdf 》,在owncloud上面有电子版,详细的介绍了vim的使用。

    练习:自己安装ctags,并且结合vim进行快速的源码阅读。

******************************************************************************************************* 
    20.正则表达式
    
    在我们今后学习linux下的shell编程时,会详细的进行说明。

    练习:学会使用find命令查找指定文件
  
*******************************************************************************************************



 
                                                                                
                                                                                 作者:linux_player_c
                                                                                 邮箱:597114476@qq.com