第一周

#blog text

1. 描述计算机的组成及其功能。

2. 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。

3. 描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。

4. 说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。

5. 如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。

6. 请罗列Linux发行版的基础目录名称命名法则及公用规定。


###描述计算机的组成及其功能  

计算机由CPU、内存、IO设备组成。

CPU由控制器和运算器组成。

控制器:输入控制指令。

运算器:运算数据,得出运算结果。

内存:像是与cpu进行数据交换,为CPU提供数据,并将CPU运算结果再次交给内存。

IO:输入、输出设备。用于数据的输入和输出。


###按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别     

slackware

    S.U.S.E

        SLES

        OpenSUSE

debian

    ubuntu

        mint

    knopix

redhat

    redhat 0-9.0

        RedHat Enterprise Linux(RHEL)

            Community ENTerprise OS(CentOS)

        Fedora core(6个月)

gentoo

ArchLinux


Linux的发行版是以GNU/Linux为基础,在其基础上将其包装,添加基本常用的应用以及自己发行版独特的标志等改动。就像如同在同一个地基上,造出不同风格的房子一样。(地基则是GUN/Liunx,Linux的发行版则是一个完整的房子),而不同风格的房子也就是不同发行版Linux的联系与区别了。


###描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。    

1.Linux一切皆文件。

在Linux中所有的设备、管道、套接字、目录等都是以文件的形式存在。

2.Linux由众多功能单一的程序组成;一个程序只做一件事,而且要做好;组合小程序完成复杂任务。

Linux中的程序分工明确,每种程序只做其该做的事,因此每个程序都不会太大,运用Linux中的一些工具将其组合起来,可以完成复杂困难的任务。

3.尽量避免跟用户交互。(目标:易于以编程的方式实现自动化任务;)

运行程序后减少跟用户的交互,可以减轻人员的工作量。

4.使用文本文件保存配置信息。

每个程序都会有其对应的配置文件,文本文件更加容易修改。


### 如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。

Linux中命令分为内部命令和外部命令。

type命令可以查询出此文件为什么命令;

如:~]# type man

man is /usr/bin/man

外部命令

    ~]# type type

type is a shell builtin

内部命令


内部命令获取帮助信息:

     help COMMAND

     如:~]# help type


外部命令获取帮助信息:

    1)通过帮助手册获取帮助(帮助手册路径/usr/share/man)

    man COMMAND

    如: ~]# man man

        manual中帮助信息:

            NAME:功能说明

            SYSNOPSIS:语法格式

            DESCRIPTION:详细描述

            OPTION:选项

            EXAMPLES:使用示例

            AUTHOR/HISTORY:作者

            SEE ALSO:参考

            BUGS:报告BUG的提交方式

        manual手册是压缩格式的文件,分章节:

            1)用户命令

            2)系统调用

            3)C库函数

            4)设备和特殊文件

            5)文件格式和配置

            6)游戏

            7)杂项

            8)系统管理工具和守护进程

        ~] # man # COMMAND

        whatis命令可以查询此命令有哪些章节:

        ~] # whatis man   

        man -M /PATH 可以查看指定路径的帮助手册      

    2)获取命令的在线文档

    info COMMAND

    如: ~]# info man

    3)命令自带简要格式的帮助

    COMMAND –help

    如:man –help

    4)一般程序会自带帮助文档

    如:很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION

        INSTALL:安装帮助

        README:程序相关信息

        CHANGES:版本迭代改动信息


###Linux系统命令格式 

    基本格式:

   ]# COMMAND [OPIONTS] [OPTIONS_ARG] COMMAND_ARG

    COMMAND:命令的执行路径,如/bin/ls

    OPTIONS:命令的选项,不同的选项,命令的执行的功能就会不同。如/bin/ls -l;/bin/ls -a。

    OPTIONS_ARG:选项的参数。选项作用的对象。如cut -d: -f1

    COMMAND_ARG:命令的参数,也就是命令作用的对象。如ls /var

    []:代表中括号中内容可选

    |:代表或者。如[a|b],可以选择a或b

    …:代表前面的内容可以有多个


ifconfig:configure a network interface

配置一个网络接口;显示网络接口信息。

    ifconfig [interface]

    ]#ifconfig

    显示所有连接的网络接口信息

    ]#ifconfig INTERFACE_NAME

    显示指定的网络接口的信息


echo:display a line of text

展示一行文本;回显输出。

   echo [SHORT-OPTION]… [STRING]…

        -n:不输出换行符

        -e:启用转义字符

        -E:不启用转义字符(默认选项)

example:

]# echo -n "sadan"

输出sadan不换行

]# echo -e "\tsadan"

        sadan

]# echo -E "\tsadan"

\tsadan


tty: print the file name of the terminal connected to standard input

显示连接的终端文件名

    tty [OPTION]…

        -s  什么都不显示,仅返回一个退出状态

example:

]# tty

显示终端

]# tty -s

什么都不显示


startx-initialize an X session

启动X Window

  startx [options]


example:

]# startx

启动X会话


export:Set export attribute for shell variables

设置shell变量属性

 export [-fn] [name[=value] …] 

        or export -p

        -f:提交到shell函数

        -n:删除变量

        -p:显示所有变量和函数

example:

]# export sadan=yxq

将变量sadan设置为yxq

]# export -p

显示所有变量

]# export -n sadan

删除sadan变量

]# export -p

显示所有变量


pwd:print name of current/working directory

打印当前工作目录的名字

    pwd [OPTION]…

        -L:包含软连接

        -P:避免软连接

example:

[root@centos ~]# cd /etc/init.d

[root@centos init.d]# pwd -P

/etc/rc.d/init.d

不显示软连接

[root@centos init.d]# pwd -L

/etc/init.d

显示软连接


history:Display or manipulate the history list

显示或控制历史列表(命令历史保存在.bash_history文件中)

    history [-c] [-d offset] [n]

            or history -anrw [filename]

            or history -ps arg [arg…]

         -c:清空历史列表

         -d:删除历史列表中指定的命令历史

         -r:读命令历史文件并将其添加到历史列表中

         -w:将历史列表写入到命令历史文件中

    history n:显示最近的n条命令


example:

        ]# history

        显示历史列表

        ]# history -c

        清空历史列表

        ]# history -d 2 

        删除编号为2的历史命令

        ]# history -r 

        将命令历史添加到历史列表中

        ]# history -w

        将历史列表写入命令历史文件中

        ]# history 2

        显示最近两条历史命令


shutdown:shutdown may be used to halt, power-off or reboot the machine

可以关闭或重启机器

    shutdown [OPTIONS…] [TIME] [WALL…]

        -r:相当reboot

        -H: 相当halt

        -P:相当poweroff

        -k:仅仅发送信息

        -c:取消尚未执行,但正在运行的shutdown指令

                TIME:

                    now

                    hh:mm

                    +m

example:

]# shutdown -H now

现在立刻关闭机器

]# shutdown -P +3

三分钟后关闭机器

]# shutdown -r 10:00  please backup

10点准时重启,并提醒所以用户"please backup"


halt、poweroff、reboot: Halt, power-off or reboot the machine

关闭或重启机器

    halt [OPTIONS…]

    poweroff [OPTIONS…]

    reboot [OPTIONS…]

            -f : 强制执行

example:

]# halt -f

]# poweroff -f

强制关机

]# reboot -f

强制重启


hwclock:query or set the hardware clock

检查并设置硬件时钟

    hwclock [function] [option…]

        -r:显示硬件时钟时间

        -s, –hctosys:以硬件时间为标准,将系统时间设置为硬件时间

        -w, –systohc:以系统时间为标准,将硬件时间设置为系统时间

example:

]# hwclock -s

将系统时间设置为硬件时间

]# hwclock -w

将硬件时间设置为系统时间


date:print or set the system date and time

显示或设置系统日期和时间

    date [OPTION]… [+FORMAT]

    date [MMDDhhmm[[CC]YY][.ss]]

        FORMAT:

               %y or %Y :年

               %m :月

               %d :日

               %H :时

               %M :分

               %S :秒

               %s :1970-01-01 00:00:00 到现在经过多少秒

          M:月

          D:日

          h:时

          m:分

          Y:年

          s:秒       

example:

显示当前时间

 ~]# date "+%Y-%m-%d %H:%M:%S"

2016-12-04 01:48:16

设置当前时间 

~]# date 020202022016.02

Tue Feb  2 02:02:02 CST 2016

   

###请罗列Linux发行版的基础目录名称命名法则及公用规定。   

其文件名称标准为FHS(firesystem hierachy standard).

根目录下的子目录:

/boot:引导启动时要加载的静态文件、内核和ramdisk及grup等

/bin:用户使用的命令程序

/sbin:系统管理员使用的命令程序

/lib:共享库文件以及内核模块

/lib64:专为x86_64位的共享库文件

/usr:全局共享的只读数据文件;独立的层级结构

     /usr/

     bin

     sbin

     lib

     lib64

     include:C程序头文件

     share:自带文档及帮助手册等特定文件

     src:程序源码存储位置

     local:第三方应用程序的安装位置;也是独立层级结构

     /usr/local/

          bin

          sbin

          lib

          lib64

          include

          share

          src

/dev:存储设备文件或特殊文件

/etc:系统程序的配置文件

/srv:当前主机为服务提供的数据

/var:存放一些经常改变的文件;独立的层级结构

     cache:应用程序缓存数据目录

     lib:应用程序状态信息数据

     local:专用于为/usr/local下的应用程序提供可变数据

     lock:锁文件

     log:日志目录及文件

     opt:专用于为/opt下的应用程序提供可变数据

     run:运行进程相关数据

     spool:应用程序的数据池

     tmp:保存系统两次重启之间产生的临时文件

/home:用户的家目录

/media:挂载便携式移动设备文件

/mnt:临时挂载目录

/tmp:临时文件

/opt:第三方应用程序安装目录

/proc:用于输入内核与进程信息相关的虚拟文件系统,也叫伪文件系统,由内核参数映射而来

/sys:sysfs虚拟文件系统,提供一种比/proc更方便访问内核的途径;其主要作用在于为管理Linux设备提供一种统一模型的的


#用户及权限管理 

用户是什么,在Linux中表现方式

用户信息如何找到,在哪找

对应目录提供的具体信息

    /etc/passwd

    /etc/gpasswd

    /etc/shadow

    /etc/gshadow

属主与属组

用户管理命令


权限的出现及其作用

权限在Linux中的表现方式

目录跟文件之间权限的区别

遮罩码是什么?作用?

特殊权限suid,sgid,sticky


用户是什么,在Linux中表现方式

Linux是多用户和多进程的系统,而其中的用户,顾名思义就是使用系统资源的账户,在Linux中将这个账户称为用户名(Username)。每个用户名都有其唯一对应的ID号,其被称为用户的UID。

为了将部分特定资源,让特定用户使用,则出现了用户组这一概念,也就是将资源分组,不同的用户在不同的组内,享受不同的资源。它在Linux则称为组名(GroupName)。每个组也有其对应的ID号,其被称为用户组(基本组)的GID。


Linux中UID分为以下几类:

    管理员:root  uid=0

    普通用户:uid 1-65535

普通用户又可以分为:系统用户和登陆用户两种;

    系统用户:1-499(centos6),1-999(centos7) 为了分配一些后台进程或服务类进程以非管理员的身份运行,且不能登陆系统。因而创建的普通用户。

    登陆用户:500+(centos6),1000+(centos7) 通过交互式方式登陆的普通用户。

Linux组

    管理员组:root gid=0

    普通组:1-65535

普通组又分为:系统组和非系统组,我们通常把非系统组就叫作普通组。

    系统组:1-499(centos6),1-999(centos7) 

    非系统组:500+(centos6),1000+(centos7)

对于一个用户而言可以有多个不同的组,称其为用户的基本组和附加组。

    基本组:与用户同名,且仅包含用户自己。

    附加组:除基本组以外,用户所在的组,被称为该用户的附加组。

还有共有组及私有组之称:

    私有组:仅包含一个用户的组,一般都是用户的基本组。

    共有组:包含多个用户的组。


用户信息如何找到,在哪找

对应目录提供的具体信息

管理用户在Linux中需要用户名及其密码,组名及其密码。这些信息都保存在以下配置文件中:

    /etc/passwd

    /etc/shadow

    /etc/group

    /etc/gshadow


    /etc/passwd文件中保存信息的格式:

        account;password;UID;GID;GECOS;directory;shell

        用户名;可以是加密的密码,也可以是占位符x;用户UID;用户主组的GID;注释信息;用户家目录;默认使用shell


    /etc/shadow文件中保存信息的格式:

        login name;

        encrypted password;

        date of last password change;

        minimum password age;

        maximum password age;

        password warning period;

        password inactivity period;

        account expiration date;

        reserved field

        登陆名;加密的密码;最近一次密码修改时间;最短密码修改期限(天);最大密码修改期限(天);警告期段;过期期限;用户停止时间;保留字段


      /etc/group文件中保存信息的格式:

          group_name;password;GID;user_list 

          组名;加密组密码,如果为空则无密码;组ID号;组中的用户列表(以此组为附加组的用户列表)


      /etc/gshadow文件中保存信息的格式:

          group name;encrypted password;administrators;members

          组名;组加密的密码;组管理员;组成员

  

属主与属组

Linux一切皆文件,在Linux中每个文件都会有其对应属主和属组;也就是说这个文件的所属者是谁,属于哪个组。


    ~]# ls -l /etc/passwd

    -rw-r–r–. 1 root root 2153 Nov 22 17:22 /etc/passwd


其中中左边root是文件属主,右边root是文件属组。


用户管理命令

用户管理命令:

    创建用户:

        useradd [options] LOGIN

                -u UID:指定用户UID

                -g GROUP:指定用户基本组(该用户组必须事先存在)

                -G GROUP1[,GROUP2,…[,GROUPN]]]:指定用户附加组(附加组必须事先存在)

                -r:创建一个系统用户

                -c COMMENT:用户注释信息

                -d HOME_DIR:指定用户家目录

                -s SHELL:指定用户默认SHELL

                -k:家目录所需框架;也就是将/etc/skel中隐藏文件全部复制到新建的家目录中

                -M:不创建家目录;但/etc/passwd中显示有,实际上没有创建

    删除用户:

        userdel [options] LOGIN

                -f:强制删除

                -r:删除用户的同时,删除其家目录

    修改用户信息:

        usermod [options] LOGIN

                -u UID:修改用户UID

                -g GROUP:修改用户的基本组

                -c:用户注释信息

                -d HOME_DIR:用户家目录

                -m:将用户家目录中所新建的文件移动到新的家目录中

                -s SHELL:用户默认shell

                -L:锁定用户


用户组管理命令:

    用户组添加:

         groupadd [options] group

                  -g GID:指定组的GID

                  -r:创建系统组

    用户组删除:

         groupdel [options] GROUP

    用户组修改:

         groupmod [options] GROUP

                   -g GID:修改组的GID

     

查询用户及用户组信息:

        id [OPTION]… [USER]

           -u:显示指定用户的UID

           -g:显示指定用户的基本组GID

           -G:显示所有组(基本组和附加组)

           -n:使用用户ID查询,显示其名称


用户及用户组密码管理命令:

    passwd命令:

        passwd [option] [username]

                -l:锁定用户

                -u:不锁定用户(默认)

                -e DATE:过期期限,日期;

                -n, –minimum DAYS:最短使用期限

                -x, –maximum DAYS:最长使用期限

                -w, –warning DAYS:警告阶段

                -i, –inactive DAYS:活跃天数

                –stdin:将管道的标准输出作为密码

                -f:强制

    gpasswd命令:

        gpasswd [option] group

                -a USERNAME:向组中添加用户

                -d USERNAME:从组中移除用户


属主和属组命令管理:

      chown命令:

          chown [OPTION]… [OWNER][:[GROUP]] FILE…

                -r:递归管理,对目录使用


用户切换命令管理:

       su命令:

           su [options…] [-] [user [args…]]

              -l:读取用户配置信息重新初始化登陆

              -c 'COMMAND':使用指定用户执行此命令

          注意:管理员可无密码切换至其它任何用户;


权限的出现及其作用

在此之前需要思考一个问题,那么Linux中仅仅只是用户跟组就足够管理各种资源分配么?很明显是不能的,那么在Linux中引入了权限这个用于细化资源分配的东西。


权限在Linux中的表现方式

那么权限在Linux中是如何表现的呢?

~]# ls -l /etc/passwd

-rw-r–r–. 1 root root 2153 Nov 22 17:22 /etc/passwd

从第二字符到第十个字符

可以看出rw-r–r–这些就是Linux中的权限表示,

 r:readable,表示可读

 w:writable,表示可写

 x:excutable,表示执行

 -:表示没有此权限


左rw-:表示文件所有者user的权限

中r–:表示文件所属组group的权限

右r–:表示其他者other的权限


权限的数字表示法:

0:表示没有

1:表示有

mode  二进制 八进制

—   000    0   

–x   001    1

-w-   010    2

-wx   011    3

r–   100    4

r-x   101    5

rw-   110    6

rwx   111    7


修改文件权限命令:

    chmod命令

       chmod [OPTION]… MODE[,MODE]… FILE…

              -R:递归处理 

             用户简写表示: u:属主 g:属组 o:其它 a: 所有

             MODE:

                赋权表示:

                u=###

                g=###

                o=###

                a=###

                授权表示法:直接操作一类用户的一个权限位r,w,x;

                a+,a-

                o+,o-

                g+,g-

                u+,u-

                数字授权法:

                777

                ###

     注意:用户仅能修改属主为自己的那些文件的权限;

                                                       

目录跟文件之间权限的区别

Linux的权限指的是对文件和目录的权限

    文件:

        r:可读取文件内容

        w:可修改文件内容

        x:可执行文件

    目录:

        r:可以查看目录下一级子文件的名称,可以使用ls /Dir

        w:可以修改目录中的子目录(如删除,移动,复制,重命名等),但不能修改文件内容

        x:可以进入目录,可以查看文件更详细的元数据(也就是可以使用ls -l命令)


遮罩码是什么?作用?

    每次创建文件时,系统默认会分配给创建的文件权限,那么系统根据的是什么呢?

    它就是遮罩码,在Linux中是umask。

    那么权限对象只有文件和目录:

        创建一个新文件的默认权限:

            666-umask

        注意:如果某类的权限减去的结果有x权限,则在其权限上+1

        创建一个新目录的默认权限:

            777-umask

    umask命令:

        umask 查看遮罩码

        umask #:设置遮罩码


特殊权限suid,sgid,stick

Linux中有三个特殊权限suid,sgid,sticky


在Linux对文件的访问权限是如何判别的呢?

首先得有一个对文件的访问权限应用模型:    

     首先查看访问文件的用户是否跟文件的所有者一致,一致则使用属主权限

     不一致则查看是否属于文件所有组,一致则使用属组权限,

     不一致则使用其它人权限。


那么用户使用一个命令时,那么这个命令去访问其他文件时权限是怎么判断呢?

    首先我们知道命令也只是一个文件,它运行成为一个进程。也就是进程所使用的权限是该如何判别。进程访问文件,它的权限是跟谁有关呢?其实就是运行该用户的权限。


SUID

好,现在可以说说SUID了

文件有了它这个权限,运行一个程序时,运行中的进程所使用的权限为其程序自身的权限,而不是运行该程序用户的权限。


SGID

一个场景,不同用户在同一目录中各自创建文件,那么各个文件直接所属者跟所属组都是创建人自身,那么这样的话这些文件都只有其创建人才能去修改,访问。现在我想要在这个目录中所有人创建的文件是共享的。

为了解决这个问题,出现了SGID这个特殊权限。给目录添加SGID权限,该目录下所有创建的文件的属组默认都是该目录的属组。


Sticky

这个特殊权限也叫粘滞位。还是上述场景为例,我在一个共享目录中,我不小心删除了其他人的文件,那该如何,我想的是只有自己才能删除自己的文件,其它人没有此权限。

所以Sticky权限的作用就是有该权限的目录下的文件,所有文件只有创建者才能删除,其他人无删除权限。


那么这三个特殊权限该如何实现呢?

SUID

    chmod u+s FILE…

    chmod u-s FILE…

    表现为在属组的左三个权限位(user):

    rws或rwS

    当文件自身有x权限时,SUID为s

    当文件自身无x权限时,SUID为S

SGID

    chmod g+s FILE…

    chmod g-s FILE…

    表现为在属组的中三个权限位(group):

    rws或rwS

    当文件自身有x权限时,SUID为s

    当文件自身无x权限时,SUID为S

Stiky

    chmod o+t FILE…

    chmod o-t FILE…

    表现为在属组的右三个权限位(other):

    rwt或rwT

    当文件自身有x权限时,SUID为t

    当文件自身无x权限时,SUID为T


同样的三个特殊权限也占用一个权限位:

   suid sgid stiky 000 001 010 011 100 101 110 111

                   0   1   2   3   4   5   6   7

也可以使用权限为来赋予特殊权限

    chmod 4755 /path/to/somewhere


原创文章,作者:N25_sadan,如若转载,请注明出处:http://www.178linux.com/62532

(0)
上一篇 2016-12-04 18:55
下一篇 2016-12-04 19:02

相关推荐

  • Linux运维学习历程-第三天-初识Linux

    初识Linux 本章内容    初安装Linus的网络配置    防火墙的关闭    用户    终端    shell    命令纪要 安装linux之后,linux默认网卡开机不是自动激活,并且防火墙开启的,这对初期我们学习linux会…

    Linux干货 2016-08-03
  • 管道,用户组管理

    管道 |          把左边的命令执行结果输送到右边的命令作为参数执行,可以多管道多任务执行     这就是linux的哲学思想之一,链接程序,共同完成复杂任务     错误输出默认不能通过管道…

    Linux干货 2016-08-04
  • Linux运维学习历程-第十一天-bash逻辑运算、测试类型和脚本语句

    概述:本篇重点介绍linux当中默认设立了类型,bash的逻辑运算、测试类型和脚本语句,本篇内容极其重要,望小伙伴们在日后的学习中用心学习 一、逻辑运算 变量:   本地变量、环境变量、局部变量、位置参数变量、特殊变量   变量赋值:name=value,export name=value,declare -x nam…

    Linux干货 2016-08-24
  • N25-第15周博客作业

    1、总结sed和awk的详细用法; sed [OPTION]…  ‘script’  [input-file] … script: 地址定界编辑命令 常用选项: -n:不输出模式空间中的内容至屏幕; -e script, –expression=script:多点编辑;…

    Linux干货 2017-05-21
  • sed行编辑器与vim编辑器

    一、sed行编辑器   1、简介:sed的本身也是一个管道命令,可以分析标准输入,还可以将数据进行替换、删除、新增、选取特定行的功能   2、工作原理:sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space),接着用sed命令处理缓冲区中的内容…

    Linux干货 2016-08-11
  • MySQL Replication (MySQL的主从复制)

    MySQL Replication(MySQL的主从复制) 主从数据库的工作模型: 工作要点:1、主服务器要开启二进制日志 2、从服务器要有一个用户账户,这个账户要有权限到主服务器上请求二进制事件,请求完后保存到本地。 3、从服务器上要有一个线程,从中继日志中不断的读事件,在本地replay。 Master/Slave    &…

    Linux干货 2016-11-21

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-09 20:48

    总结的很好,下次要加一例子说明就更棒了