首页 > 代码库 > linux-part1

linux-part1

此篇博客为参考鸟哥私房菜加上自己理解所写,所以可能会有很多不太准确的描述,望大家批评指正。


 

 

一、Linux简介

1.Linux操作系统是UNIX操作系统的一种克隆程序,它对于计算机和人的意义,与MAC OS X和windows对于电脑和人的意义相同,都是搭建计算机与用户交互的桥梁,帮助用户更加高效的处理日常工作。

2.Linux操作系统的主要用途:用于服务器,特别是网络服务器。(除了开发等专业人员外,普通用户较少使用Linux)

3.Linux的优缺点

  优点:

  (1)自由与开放的使用与学习环境

  (2)配备需求低廉

  (3)核心功能强大而稳定

  (4)独立作业

  (5)稳定的系统

  (6)安全性、漏洞的快速修补

  (7)多任务、多使用者

  (8)使用者与群组的规划

  (9)相对不耗资源的系统

  (10)适合需要小核心程序的嵌入式系统

  (11)整合度佳且多样的图形用户接口(GUI)

  ........

  缺点:

  (1)没有特定的支持厂商

  (2)游戏的支持度不足

  (3)专业软件的支持度不足

  (4)教育训练做的还不够好

  ...额,比优点少很多啦(其实主要是政策和商业上的一些影响因素)

4.LINUX主要发行版:CENTOS、RHEL、FEDORA、UBUNTU、SUSE。

5.两种常见的桌面环境:KDE和GNOME。

 


 

二、Linux常用概念及命令介绍

1.图形界面模式(X Window)与终端模式(terminal或console)

  (1)两种定义概念:

    1)图形界面模式:用鼠标对程序图形点击进行操作的一种人机交互途径。

    2)终端模式:用类似代码的命令指令来进行人机交互的途径。

  (2)两种端口的切换:

    在Linux默认的登入模式中,主要分为两种,一种是仅有纯文本接口(执行等级run level 的登入环境,在此环境下有tty1~tty6的终端界面,但是并没有图形窗口环境。另一种则是图形接口的登入环境(执行等级run level 5),在这个环境中有tty1~tty7个窗口,其中tty7就是开机完成后等待登入的图形环境。

    各个窗口切换指令:

      · [Ctrl]+[Alt]+[F1]~[F6]:终端模式

      · [Ctrl]+[Alt]+[F7]:图形界面膜式。

    如果你以纯文本模式启动Linux,预设的tty7是没有窗口的。如果要启动图形窗口怎么办呢,可以在任一终端输入startx(可能会出现意外,那怎么办---》baidu)。

    纯文本登陆界面后显示如下:

技术分享

    这些代表什么意思呢?    

    1). CentOS release 5.3 (Final):

      显示Linux distribution的名称(CentOS)不版本(5.3);
    2). Kernel 2.6.18-128.el5 on an i686:

      显示核心的版本为2.6.18-128.el5
    3). www login::

      www是主机名。
    4). Password::

      输入密码
    5). [vbird@www ~]$ _:

      正确登入后才显示的讯息(注意:#为有root权限的用户提示符,$为普通用户提示符)

2.Linux命令格式

    格式:命令名  [ 选项]  [参数 1]  [参数 2]……  如:ls -a /etc/passwd(除命令以外,其它项不是必须包含项,例如:ls  是查看当前目录下的文件)

    ls是命令,-a是选项,/etc/passwd是参数,详细介绍请猛戳这里

3.常用操作命令

    常用系统级别操作例举:

      1)init:一个由内核启动的用户级进程。init 0关机、init 1进单用户模式、init 6重启、init 3命令行模式、init 5图形界面。

      2)su:su -用户名,切换到另一个用户。

      3)useradd:useradd 用户名,新增一个用户

      4)passwd:passwd 用户名,为此用户修改或增加密码。

      5)date:查看当前系统日期。

      6)clear:清屏。

      7)history:记录使用过的命令。普通的history命令只会根据顺序显示命令。介绍一种更友好的配置,出错后配合last或者日志能清楚的找到谁的问题。 

      8)id:显示当前用户和组id等。 id 用户名。

      9) who:返回当前处于运行状态用户。

      10)whoami:返回当前窗口运行用户。

      11)man:man 命令,查看帮助文档。

      12)help: 命令 --help,查看帮助文档。

      13)shutdown:冻结login指令,发送信号给init进程要求切换运行界别,并通知所有已登陆用户即将关闭系统。常用参数:-t 延迟时间,-r重启参数,-c 取消正在执行的关机,-h关机后关闭电源。

      其它常用命令:chkconfig、init、shutdown、halt、reboot、set、env、export、crontab、uptime、last、history、id、finger、who、w、whoami、useradd、passwd、usermod、userdel、date、cal、wget、yum、curl、lsmod、dmesg。具体选项及参数请猛戳这里 

    常用快捷键:

      ctrl+space:中文与英文输入法切换

      ctrl+shift:输入法切换

      alt+Space:Activate window menu,激活窗口调整状态

      alt+F1:show the panel menu,即最左下角的运行程序

      alt+F2:Show the panel run application dialog,,打开运行命令窗口

      alt+F4:Close,关闭当前活动窗口

      alt+F5:Unmaximize,在最在窗口情况下还原

      alt+F6:聚焦桌面上当前窗口

      其它常用快捷键请猛戳这里。


 三、Linux目录结构介绍

  因为利用Linux来开发产品或distributions的社群/公司/个人实在太多, 如果每个人都用自己的想 法来配置档案放置的目彔,那举将可能造成徆多管理上的困扰。 你能想象,进入一个企业后,如果Linux的配置方法和自己当初学习的不太一样,那怎么办?很难想象吧~所以,就有所谓的 Filesystem Hierarchy Standard (FHS)标准。然后大家都按照这个标准来配置文件,那么在管理的时候就非常的方便了。

1.亊实上,FHS目录树架构仅规定了三层目录下应该放置什么文件,分别是以下三个:

  (1)/根目录:放置与系统启动相关的文件,如/etc下是存放与系统。

  (2)/usr(user software resource):放置与安装和执行应用软件相关的文件。

  (3)/var(variable):放置运行系统有关的文件。 
2.目录树:

    技术分享

                      目录树架构示意图

3.各目录介绍

目录

描述

/

第一层次结构的根、整个文件系统层次结构的根目录

/bin/

需要在单用户模式可用的必要命令(可执行文件);面向所有用户,例如:catlscp,和/usr/bin类似。

/boot/

引导程序文件,例如:kernelinitrd;时常是一个单独的分区[6]

/dev/

必要设备例如:/dev/null.

/etc/

特定主机,系统范围内的配置文件

关于这个名称目前有争议。在贝尔实验室关于UNIX实现文档的早期版本中,/etc 被称为/etcetra 目录[7]这是由于过去此目录中存放所有不属于别处的所有东西(然而,FHS限制/etc存放静态配置文件,不能包含二进制文件)。[8]自从早期文档出版以来,目录名称已被以各种方式重新称呼。最近的解释包括反向缩略语如:"可编辑的文本配置"(英文 "Editable Text Configuration")或"扩展工具箱"(英文 "Extended Tool Chest")[9]

/etc/opt/

/opt/的配置文件

/etc/X11/

X_Window系统(版本11)的配置文件

/etc/sgml/

SGML的配置文件

/etc/xml/

XML的配置文件

/home/

用户的家目录,包含保存的文件、个人设置等,一般为单独的分区。

/lib/

/bin/ and /sbin/中二进制文件必要的文件。

/media/

可移除媒体(CD-ROM)的挂载点 (FHS-2.3中出现)

/lost+found

ext3文件系统中,当系统意外崩溃或机器意外关机,会产生一些文件碎片在这里。当系统在开机启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。当系统发生问题。可能会有文件被移动到这个目录中,可能需要用手工的方式来修复,或移到文件到原来的位置上。

/mnt/

临时挂载的文件系统。比如cdrom,u盘等,直接插入光驱无法使用,要先挂载后使用

/opt/

可选应用软件

/proc/

虚拟文件系统,将内核进程状态归档为文本文件(系统信息都存放这目录下)。例如:uptime network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root

/root/

超级用户家目录

/sbin/

必要的系统二进制文件,例如: init ip mountsbin目录下的命令,普通用户都执行不了。

/srv/

站点的具体数据,由系统提供。

/tmp/

临时文件(参见 /var/tmp)在系统重启时目录中文件不会被保留。

/usr/

默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的()用户工具和应用程序。

/var/

变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。如果不单独分区,有可能会把整个分区充满。如果单独分区,给大给小都不合适。

4.绝对路径与相对路径

  (1)绝对路径:由根目录(/)开始写起的文件名或目录, 例如 /home/dmtsai/.bashrc;

  (2)相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。 反正开头不是 / 就属于相对路径的写法 。

5.对目录和文件的常用操作

    在了解了Linux的命令格式和目录的结构后,现在我们可以来学习常用的对文件、目录的命令操作,即在工作过程中用到非常普遍的命令。

    (1)pwd命令的功能:确定现在所在的工作目录。
        cd命令的功能:切换当前目录,例:切换到/home/dog目录的命令为,cd /home/dog

        ”cd ..”命令:进入上一级目录
        ”cd ~”命令:切换到用户的家目录
        ”cd 命令:同cd ~,也可切换到用户的家目录
        ”cd –”命令:切换到用户之前的工作目录
        ”cd 目录名”命令:切换到指定的目录。

    (2)ls命令列出当前目录中的内容
        “ls -a” 命令:列出目录下的所有文件,包括以“.”开头的隐含文件

          例:列出/home/dog目录中的所有文件,包括隐藏文件的命令,ls -a /home/dog
        “ls –l”命令:列出某个目录中每一个文件的详细资料

          例:列出/home/dog目录中所有非隐藏文件的细节(包含权限)的命令,ls –l /home/dog

    (3)cp命令复制文件和目录(可以是多个)
        “cp 源文件 目标文件”命令的常用选项:
        –r(recursive,递归的):递归地复制目录。当复制一个目录时,复制该目录中所有的内容,其中包括子目录的全部内容。
          例:将/home/dog目录中的内容全部复制目录/home/cat中的命令为:cp –r /home/dog /home/cat
        -f(force,强制):在目标文件已经存在的时候不询问直接强制复制。

          例:列出/home/dog目录中所有非隐藏文件的细节的命令:ls –l /home/dog

    (4)mv命令移动及修改文件和目录名
        “mv 文件 目录”命令:当前目录中的文件移动到其子目录中
          例:mv lists babydog,将当前目录中lists文件移动到babydog目录中。
        “mv 旧目录名 新目录名”命令:重命名文件和目录
          例:mv bigdog babydog,将旧目录名bigdog修改为新目录名babydog

    (5)mkdir命令创建目录(详见linux系统管理P55)
        “mkdir 目录名”命令:当前目录中创建一个新目录
          例:mkdir dadgog,在当前目录中创建新目录dadgog

    (6)touch命令创建文件:可以创建一个空文件,也可以同时创建多个文件(详见linux系统管理P56)
        “touch 文件名”命令:在当前目录中创建一个新文件
          例:touch babydog1 ,在当前目录中创建一个名为babydog1的文件

    (7)rm命令删除文件:永久地在文件系统中删除文件或目录(详见linux系统管理P57)

        “rm 文件名”命令:删除当前目录下的文件
        rm命令的常用选项:
          –r(recursive,递归的):递归地删除目录。当删除一个目录时,删除该目录中所有的内容,其中包括子目录中的全部内容。
          –f(force,强制):系统并不询问而是强制删除,即直接删除原有的文件。
        例:rm babydog1,删除当前目录中的babydog1文件的命令

    (8)rmdir或rm –r命令删除目录(详见linux系统管理P59)

        rmdir命令的功能:删除空目录
          例:rmdir mumdog/girldog/babydog,删除空目录 mumdog/girldog/babydog
        rm –r命令的功能:删除包含文件和子目录的目录。
          例:rm –r mumdog,删除非空目录mumdog

    (9)cat命令浏览正文文件的内容(详见linux系统管理P73)
        cat命令的功能:将一个或多个文件的内容显示在屏幕上,该命令会不停的以只读的方式显示整个文件的内容。
          例:cat game.txt,浏览game.txt文件中的全部内容
    (10)head命令浏览文件中的内容(详见linux系统管理P75)
        head命令的功能:默认将显示一个文件的前10行。
        head命令的常用选项:
          -n 改变显示的行数(默认10行)
          例:head /etc/passwd,查看/etc/passwd文件中前10行的详细信息

          例:head –5 /etc/passwd,查看/etc/passwd文件中前5行的详细信息

    (11)tail命令浏览文件中的内容(详见linux系统管理P76)
        tail命令的功能:默认显示文件最后10行的内容。
        tail命令的常用选项:
          -n 显示从文件末尾算起的n行(默认10行)
          例:tail /etc/passwd,查看/etc/passwd文件中最后10行的详细信息

          例:tail –5 /etc/passwd,查看/etc/passwd文件中最后5行的详细信息
    (12)more命令浏览文件(详见linux系统管理P78)
        more命令的功能:使用more命令之后,每次在屏幕上显示一屏(一页)的文件内容,并且在屏幕的尾部将会出现“—More--(n%)”的信息,其中,n%是已经显示文件内容的百分比。
          例:more learning.txt, 分页浏览learning.txt文件内容

 


四、Linux权限与用户、群组

1.用户与群组概念    

    用户:额。。。。。。

    群组:一组用户的集合。

2.Linux用户身份与群组记录的档案

    在Linux系统当中,默认的情况下,所有的系统上的账号与一般身份使用者,还有root的相关信息, 都是记录在/etc/passwd这个档案内的。二个人的密码则是记录在/etc/shadow这个档案下。 此外,Linux所有的组名都纪录在/etc/group内!这三个档案可以说是Linux系统里面账号、密码、群组信息的集中地,所以这三个文件非常重要。

    (1)passwd文件

      1)/etc/passwd文件的功能:存储所有用户的相关信息,该文件也被称为用户信息数据库(Database)。

      2)/etc/passwd文件每个字段的具体含义:
          第1个字段(列)记录的是这个用户的名字(在创建用户时root用户起的)。
          第2个字段(列)如果是x,表示该用户登录Linux系统时必须使用密码;如果为空,则该用户在登录时无须提供密码。
          第3个字段(列)记录的是这个用户的uid。
          第4个字段(列)记录的是这个用户所属群组的gid。
          第5个字段(列)记录的是有关这个用户的注释信息(如全名或通信地址)。
          第6个字段(列)记录的是这个用户的家目录的路径。
          第7个字段(列)记录的是这个用户登录后,第一个要执行的进程。

    (2)shadow文件(详见linux系统管理P133)
      1) /etc/shadow文件的功能:存储所有用户的密码,每一个用户占用一行记录,该文件实际上就是存放用户密码的数据库(Database)。
      2)/etc/shadow文件每个字段的具体含义:
          第1个字段(列)是用户名。
          第2个字段(列)是密码,这个密码是经过MD5加密算法加密过的密码。

    (3)group文件(详见linux系统管理P135)
      1) /etc/group文件的功能:存放了Linux系统中所有群组的信息,它实际上就是一个存放群组信息的数据库(Database)。
      2) /etc/group文件每个字段的具体含义:
          第1个字段是这个群组的名字。
          第2个字段中的x表示这个群组在登录Linux系统时必须使用密码。
          第3个字段记录的是这个群组的gid。
          第4个字段记录的是这个群组里还有哪些群组成员。

    (4)用户创建、修改信息、删除用户命令:

      1)useradd命令新增一个用户。
        useradd命令的常用选项:
          –u:指定用户的UID
          –g:指定用户所属的群组
          –d:指定用户的家目录
          –c:指定用户的备注信息
          –s:指定用户所用的shell
        例:useradd –u 600 –g police user01,在系统中新增一个用户user01,属组为police以及uid为600
      2)usermod命令修改用户账户信息(详见linux系统管理P458)
        usermod命令的常用选项:
          –u:修改用户的UID
          –g:修改用户的GID
          –G:将一个用户加入到指定的群组中
          –d:修改用户的家目录
          –c:修改用户的备注信息
          –s:修改用户所用的shell
        例:usermod –d /home/babies babydog4,修改babydog4用户的家目录为/home/babies
        例:usermod –G babydog6 babydog4,将babydog4这个用户添加到babydog6这个群组中
        例:usermod –g dog babydog4,将babydog4这个用户的的gid变更为dog群组

        usermod命令锁住用户及将用户解锁(详见linux系统管理P461)
          usermod –L命户令的功能:将用户的账号锁住

          usermod –U命户令的功能:将用户的账号解锁
        例:将babydog6用户的账号锁住的命令:usermod –L babydog6

        例:将babydog6用户的账号解锁的命令:usermod –U babydog6

      3) userdel命令删除用户账号(详见linux系统管理P462)
        userdel命令的常用选项:
          –r:在删除用户的同时删除这个用户的家目录及其邮箱。
        例:删除babydog5用户不删除其家目录的命令:userdel babydog5
        例:删除babydog5用户,同时删除其家目录的命令:userdel –r babydog5
    (4) 组创建、修改信息、删除命令

      1)groupadd命令的功能:创建一个新的群组账号

        groupadd命令的常用选项:
          –g:指定群组的GID
        例:在系统中新增加一个名为boydogs的群组的命令:groupadd boydogs
      2)groupmod命令的功能:修改一个群组账号的信息

        groupmod命令的常用选项:
          –g:修改群组的GID
          –n:修改群组的名称
        例:修改police群组的gid为521的命令:groupmod –g 521 police

        例:将群组boydogs改名为daddogs的命令:groupmod –n daddogs boydogs
      3)groupdel命令的功能:删除一个群组账号
        例:删除daddogs群组的命令:groupdel daddogs

3.Linux档案权限的概念

     权限顾名思义就是一种对文件是否允许操作的描述。

    在Linux中对文件进行操作的有三类用户,1是使用者,2是群组里的用户,3是其他用户。

    但实际是上最终对文件进行操作的只有两类用户,一是有root权限的用户,二是无root权限的用户,只不过在考虑权限问题时软件设计者聪明的划分为前三类(即后两类可以以任意方式存在与前三类),也许是方便root用户管理系统(我瞎猜的),用久了Linux对比windows可能就会发现吧。

4.文件权限介绍(详见鸟哥的Linux私房菜基础篇P178,查看当前目录下所有文件的属性,命令为ls -l)

    例:-rwxr-xr--  1 test1    testgroup    5238 Jun 19 10:25 ping_tsai 

    解释:

       r:表示read权限,也就是可以阅读文件或者ls命令列出目录内容的权限。
      w:表示write权限,也就是可以编辑文件或者在一个目录中创建和删除文件的权限。
      x:表示execute权限,也就是可以执行程序或者使用cd命令切换到这个目录以及使用带有-l选项的ls命令列出这个目录中详细内容的权限等。
      -:表示没有相应的权限(与所在位置的r、w或x相对应)。

       -rwxr-xr--分为:第一组-,第二组rwx,第三组r-x,第四组r--来看。test1代表属主(一般为创建用户,但可以修改),testgroup为属组(可以修改)。

 

      -普通文件

      rwx,test1(属主)用户对ping_tsai有读、写、执行的权限

      r-x,testgroup(属组)组里的用户对ping_tsai有读、执行的权限

      r--,其他用户对ping_tsai有读权限

5.修改属主、属组的方法

    chown :改变档案拥有者 (属主)

    chgrp :改变档案所属群组(属组)

    例:chown user1 file1,将文件file1的属主修改为user1

      chgrp grp1 file1,将文件file1的属组修改为grp

6.修改权限的方法(chmod)

    (1)符号表示法

      技术分享

 

      解释:chmod代表修改权限指令,u/g/o/a代表权限作用于谁,+-=代表怎样作用,rwx代表作用什么权限,档案或目录代表作用对象。

      注意:-R选项,不但设置(或更改)该目录权限,而且还要递归地设置(或)更改该目录中所有文件或子目录的权限。

      例:chmod u+r file2 在file2上对属主加上读权限。

    (2)数字表示法

      4:表示具有读(read)权限。
      2:表示具有写(write)权限。
      1:表示具有执行(execute)权限。
      0:表示没有相应的权限。

      解释:0代表没有任何权限,1代表只有执行权限,2代表只有写权限,3代表只有写和执行权限,4代表只有读权限,5代表只有读和执行权限,6代表只有读和写权限,7代表有读写执行权限。

      例:chmod -R 754 /home/dog/babydog 使用数字表示法对owner开放/home/dog/babydog目录和其中所有文件的一切权限,但是对同组用户开放读和执行权限,而对其他用户只开放读权限的命令

 

linux-part1