第一周

#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

一個場景,不同用戶在同一目錄中各自創建文件,那么各個文件直接所屬者跟所屬組都是創建人自身,那么這樣的話這些文件都只有其創建人才能去修改,訪問?,F在我想要在這個目錄中所有人創建的文件是共享的。

為了解決這個問題,出現了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.www58058.com/62532

(0)
N25_sadanN25_sadan
上一篇 2016-12-04
下一篇 2016-12-04

相關推薦

  • 軟鏈接和硬鏈接的區別

    Linux鏈接概念 Linux鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。 硬鏈接 硬連接指通過索引節點來進行連接。在Linux的文件系統中,保存在磁盤分區中的文件不管是什么類型都給它分配一個編號,稱為索引節點號(Inode Index)。在Linux中,多個文件名指向同一索引節點是存在的。一般這種…

    Linux干貨 2016-10-29
  • 倒排索引-搜索引擎的基石

    1.概述       在關系數據庫系統里,索引是檢索數據最有效率的方式,。但對于搜索引起,他它并不能滿足其特殊要求:       1)海量數據:搜索引擎面對的是海量數據,像Google,百度這樣大型的商業搜索引擎索引都是億級甚至幾千的網頁數量 ,面對…

    Linux干貨 2015-12-10
  • dd工具

    dd     dd命令:convert and copy a file     用法:        ddif=/PATH/FROM/SRC of=/PATH/TO/DEST       &…

    Linux干貨 2016-09-02
  • 內核編譯及制作Linux系統

        用自己編譯的linux內核自己制作一個很簡單的啟動盤,能夠成功啟動且能有簡單的shell環境。     第一步:從內核官網www.kernel.org 下載相應的內核版本,現在到本地后,將它解壓(我是解壓到/usr/src目錄下),解壓后進入目錄。由于編譯的選項太多,為了…

    Linux干貨 2016-11-24
  • linux運維

    linux運維大綱,學習路線圖

    Linux干貨 2017-10-21

評論列表(1條)

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

    總結的很好,下次要加一例子說明就更棒了

欧美性久久久久