1. 程式人生 > >馬哥linux作業--第三周

馬哥linux作業--第三周

pat ech 說明 顯示 mps 不存在 以及 密碼字段 哲學思想

Q1:Linux上的文件管理類命令有哪些,其常用的使用方法及其相關示例演示。

Linux有兩個重要的哲學思想:1、一切皆文件;2、配置文件都是TEXT文本。所以在Linux上管理文件是非常重要的工作。

Linux上,針對文件的管理命令分為以下幾類

  1. 創建:touch
  2. 刪除:rm
  3. 復制:cp,install
  4. 移動:mv
  5. 查看文件屬性:stat
  6. 修改文件屬性:touch

命令詳解:

touch

  • 說明:touch命令本來是用來修改文件的時間的(atime, mtime),但當不加選項時,可以創建空文件。
  • 用法:touch [OPTION]... FILE...
  • 選項:
    • 無:沒有選項,會創建空文件,如果文件已經存在,不會報錯,會直接修改文件的兩個時間(其實ctime也會同時被修改,因為改atime和mtime屬於修改文件元屬性)。
    • -a:只修改文件的atime。
    • -c:當文件不存在時,不創建文件。
    • -d STRING:用STRING指定的時間來取代默認的當前時間;修改文件用的時間默認是當前時間,-d參數改變這個默認值。
    • -h:修改符號鏈接的時間,而不是其引用的文件。
    • -m:修改mtime。
    • -r FILE:用指定的FILE的時間做參考,修改文件時間。
    • -t STAMP:用STAMP指定的時間來取代默認的當前時間;STAMP的格式為[[CC]YY]MMDDhhmm[.ss]
    • --time=WORD:指定要修改的時間,access表示actimemodify表示mtime
  • 示例:
    • 創建空文件:touch /PATH/TO/SOME_FILE
    • 創建多個空文件:touch /PATH/TO/SOME_FILE1 /PATH/TO/SOME_FILE2 /PATH/TO/SOME_FILE3 ...
    • 修改文件訪問時間:touch -at 201810011212.13 /etc/inittab

rm

  • 說明:rm用來刪除各種文件,包括目錄。
  • 用法:rm [OPTION]... FILE...
  • 選項:
    • -f:強制刪除,沒有提示。
    • -i:交互模式刪除,刪除每個文件前都先詢問是否要刪除。
    • -I:交互模式刪除,當刪除多個文件或遞歸刪除時,只詢問一次。
    • --interactive[=WHEN]:WHEN取值為neveroncealways分別對應參數-f-I
      -i,當不指定WHEN時,默認為always
    • -r/-R:遞歸刪除目錄。
    • -d:刪除空目錄
    • -v:顯示整個刪除詳情。
  • 示例:
    • 刪除單個文件:rm [-f] /PATH/TO/SOME_FILE
    • 刪除整個目錄:rm -r /PATH/TO/SOM_DIRrm -fr/PATH/TO/SOM_DIR

cp

  • 說明:復制文件或目錄
  • 用法:
    • cp [OPTION]... [-T] SOURCE DEST
    • cp [OPTION]... SOURCE... DIRECTORY
    • cp [OPTION]... -t DIRECTORY SOURCE...
    • 以上三種用法,只是指定源和目標的方式不一樣罷了。
  • 選項:
    • -a:等同於-dR --prevserve=all,歸檔復制,保留文件的所有屬性。
    • -d:等同於--no-dereference --preserve=links,保持鏈接。
    • -f:強制覆蓋已存在的目標文件。
    • -i:覆蓋目標文件之前,詢問。
    • -l:對源文件做硬鏈接,而不是復制。
    • -L:復制鏈接指向的文件。
    • -n:不覆蓋已經存在的文件。
    • -P:保持鏈接
    • -p:等同於--preserve=mode,ownership,timestamps,保留文件的權限,屬主,屬組,時間戳。
    • --preseve=[ATTR_LIST]:保留文件的屬性列表,可用值為modeownershiptimestampscontextlinksxattrall,不指定默認為--preserve=mode,ownership,timestamp
      • mode:權限
      • ownership:屬主,屬組
      • timestamp:時間戳
      • context:安全標簽
      • links:保持鏈接
      • xattr:擴展屬性
      • all:以上所有
    • -c:等同於--preserve=context
    • --no-preseve=[ATTR_LIST]:不保留的文件屬性列表。
    • -r/-R:遞歸復制目錄
    • -reflink=[WHEN]:
      • always:寫時復制,只有在原文件被修改了才會復制(類似快照)。
      • --auto:正常復制。
    • -s:創建符號鏈接,而不是復制文件。
    • -t DIRECTORY:指定目標目錄。
    • -T:指明目標是一個文件而不是目錄。
  • 示例:
    • 復制一個文件:copy /etc/inittab /tmp/inittab.bak
    • 復制文件到目錄:copy /etc/inittab /tmp
    • 復制多個文件到目錄:copy /etc/inittab /etc/rc.d/rc.sysinit /tmp
    • 復制目錄:copy -r /etc /tmp

install

  • 說明:復制文件的同時,設置文件的屬性
  • 用法:
    • install [OPTION]... [-T] SOURCE DEST
    • install [OPTION]... SOURCE... DIRECTORY
    • install [OPTION]... -t DIRECTORY SOURCE...
    • install [OPTION]... -d DIRECTORY...
    • 以上四種用法,只是指定源和目標的方式不一樣罷了。
  • 選項:
    • -d DIRECTORY...:創建目錄,後面可以跟多個目錄參數,同時創建多個。
    • -m MODE:設置權限,不指定默認是rwxr-xr-x
    • -o OWNER:指定屬主(僅管理員可用)。
    • -g GROUP:指定屬組,替換進程的屬組。
    • -t DIRECTORY:指定目標。
  • 示例:install -m 700 /etc/inittab /tmp

mv

  • 說明:移動(重命名)文件。
  • 用法:
    • mv [OPTION]... [-T] SOURCE DEST
    • mv [OPTION]... SOURCE... DIRECTORY
    • mv [OPTION]... -t DIRECTORY SOURCE...
  • 選項:
    • -f:強制覆蓋已存在的目標文件。
    • -i:覆蓋目標文件之前,詢問。
    • -t DIRECTORY:指定目標目錄。
    • -T:指明目標是一個文件而不是目錄。
  • 示例:
    • 移動文件:mv /etc/inittab /tmp/inittab.bak
    • 移動文件到指定目錄:mv /etc/issue /root
    • 移動目錄:mv /etc /tmp
    • 重命名文件/目錄:mv A B

stat

  • 說明:顯示文件/文件系統狀態(文件名,文件大小,[acm]time,塊大小,inode號,屬主,屬組,權限等)
  • 用法:stat [OPTION] file...
  • 選項:
    • -L:顯示鏈接文件引用的文件的狀態,而不是鏈接文件本身。
    • -Z:顯示安全標簽(如果有的話)。
    • -f:顯示文件系統狀態,而不是文件。
  • 示例:stat /etc/issue

Q2:使用命令行展開功能,創建/tmp/a1/tmp/a2/tmp/a1/a/tmp/a1/b,在/tmp目錄下創建目錄:x_yx_zq_yq_z

mkdir -pv /tmp/a{1/{a,b},2}

touch /tmp/{x,q}_{y,z}

Q3:文件的元數據有哪些,分別表示什麽含義,如何查看?如何修改文件的時間戳信息。

可用stat命令,查看文件的元數據,元數據包含以下內容:

  • 文件名
  • 文件大小
  • 占用塊大小
  • 文件類型
  • 所在設備
  • inode號
  • 硬鏈接次數
  • 訪問權限
  • 屬主
  • 屬組
  • 最後訪問時間(atime)
  • 最後修改時間(mtime)
  • 最後改變時間(ctime)

可以使用touch命令修改文件時間戳,詳見Q1

Q4:在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22

touch /tmp/tfile-`date +"%Y-%m-%d-%H-%M-%S"`

Q5:復制/etc/目錄下,所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。

cp -r /etc/p*[^[:digit:]] /tmp/mytest1

Q6:創建用戶tom,指定UID5001,指定家目錄為/tmp/tom,指定shell為/bin/zsh,指定基本組為tom,附加組為jack

useradd -u 5001 -d /tmp/tom -s /bin/zsh -G jack tom

Q7:常用的用戶以及文件管理命令有哪些,並演示命令以及用法。

文件管理命令見Q1

常用的用戶管理命令如下:

  • useradd
  • userdel
  • usermod
  • id
  • chsh
  • chfn
  • chage
  • su
  • finger
  • passwd
  • groupadd
  • groupdel
  • groupmod
  • gpasswd
  • newgrp

命令詳解:

useradd

  • 說明:創建新用戶或修改創建新用戶的默認信息
  • 用法:

    • useradd [options] LOGIN
    • useradd -D
    • useradd -D [options]
  • 選項:
    • -c COMMENT:註釋信息
    • -e EXPIRE_DATE:禁用賬戶時間,格式為YYYY-MM-DD
    • -f INACTIVE:密碼過期後,隔多少天後禁用賬戶。
    • -g GROUP_NUM/GROUP_NAME:指明基本組。
    • -G, GROUP1[,GROUP2,...[,GROUPN]]]:指定附加組。
    • -M:不創建HOME目錄。
    • -m:創建HOME目錄。如果加上-k參數,會復制/etc/skel目錄下的所有文件到HOME目錄。
    • -r:創建系統賬戶,不創建主目錄。id號1-499(centos6)或1-999(centos7)為系統賬戶。
    • -s SHELL:指明帳戶默認使用的shell。
    • -u UID:指明uid。
    • -D:顯示/更改創建用戶時的默認配置屬性(創建用戶時很多默認屬性來自於/etc/login.defs,-D更改的屬性保存在/etc/default/useradd中)
      • 可配置的屬性:
        • GROUP:是否創建同名私有組。
        • HOME:HOME目錄所在路徑。
        • INACTIVE:密碼過期後,隔多少天後禁用賬戶,默認不禁用(-1)。
        • EXPIRE:禁用賬戶時間(默認不禁用)。
        • SHELL:默認shell,默認為/bin/bash
        • SKEL:骨架信息來源,默認為/etc/skel
        • CREATE_MAIL_SPOOL:是否創建郵箱。
      • 對應修改上述信息的參數
        • 無選項:顯示默認屬性
        • -b:HOME
        • -e:EXPIRE
        • -f:INACTIVE
        • -g:GROUP
        • -s:SHELL

userdel

  • 說明:刪除用戶賬戶及相關文件
  • 用法:userdel [options] LOGIN
  • 選項:
    • -f:刪除賬戶的同時,刪除其HOME目錄(默認不刪除用戶HOME目錄)。
  • 示例:userdel -f tom

usermod

  • 說明:修改用戶賬戶信息
  • 用法:usermod [options] LOGIN
  • 選項:
    • -a -G gid...:添加附加組。
    • -c COMMENT:修改註釋信息。
    • -d HOME_DIR:修改用戶HOME目錄。
    • -e EXPIRE_DATE:修改賬戶禁用時間,格式為YYYY-MM-DD
    • -f INACTIVE:修改賬戶在密碼過期後,多少天禁用賬戶。
    • -g GROUP/GID:修改基本組。
    • -G GID...:覆蓋附加組。
    • -l NEW_LOGIN:修改用戶名。
    • -L:鎖定賬戶,方式是在密碼字段前加!
    • -m:配合-d選項使用,移動用戶HOME目錄下的文件到新位置。
    • -p PASSWD:修改密碼,不建議使用,因為密碼會暴露在命令歷史中。
    • -s SHELL:修改默認shell。
    • -u UID:修改賬戶的uid。
    • -U:解鎖用戶,方式是移除密碼字段前的!
  • 示例:
    • 添加附加組:usermod -a -G hadoop tom
    • 修改shell:usermod -s /bin/zsh tom
    • 鎖定賬戶:usermod -L tom

id

  • 說明:顯示用戶標識信息。
  • 用法:id [OPTION]... [USERNAME]
  • 選項:
    • -Z:顯示指定用戶(默認當前用戶)的安全標簽。
    • -g:顯示指定用戶(默認當前用戶)的默認gid。
    • -G:顯示指定用戶(默認當前用戶)的所有gid。
    • -n:配合-u-g-G使用,顯示名字而非數字id。
    • -u:顯示uid。
  • 示例:
    • 顯示當前用戶所有標識信息:id
    • 顯示指定用戶的所有組:id tom

chsh

  • 說明:修改用戶的默認shell
  • 用法:chsh [-s shell] [-l] [username]
  • 選項:
    • -s SHELL:指明shell。
    • -l:顯示/etc/shells文件的內容(即所有可用shell)。
  • 示例:chsh -s /bin/zsh root

chfn

  • 說明:修改用戶註釋信息
  • 用法:chfn [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u] [-v] [username]
  • 選項:
    • -f:用戶全名。
    • -o:辦公室。
    • -p:辦公電話。
  • 示例:chfn -f jobs root

chage

  • 說明:修改賬戶密碼過期信息
  • 用法:chage [options] [LOGIN]
  • 選項:
    • -d LAST_DAY:上次修改密碼時間,格式YYYY-MM-DD
    • -E EXPIRE_DAET:賬戶過期時間。
    • -I:密碼過期後的鎖定時間。
    • -l:顯示賬戶的所有aging信息。
    • -m DAYS:密碼最少使用時間(在此時間內不能修改密碼)。
    • -M DAYS:密碼最多使用時間(超過此時間必須修改密碼)。
    • -W DAYS:密碼過期前的警告時間。
  • 示例:chage -E 2018-10-10 -m 10 -M 20 -W 3 root

su

  • 說明:切換用戶身份
  • 用法:su [OPTION]... [-] [USER [ARG]...]
  • 選項:
    • -,-l:使用登錄shell切換,不會讀取shell配置文件。
    • -c COMMAND:使用指定身份執行命令,不會切換身份。
    • 不指定身份,默認切換到root
  • 示例:su - root

finger

  • 說明:查看用戶賬號相關信息
  • 用法:finger [options] [user ...] [user@host ...]
  • 選項:
    • -s:顯示用戶的登錄名用戶名使用的終端最後登錄時間辦公室位置辦公電話
  • 示例:finger root

passwd

  • 說明:修改用戶認證信息
  • 用法:passwd [-k] [-l] [-u [-f]] [-d] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
  • 選項:
    • -l:鎖定賬戶。
    • --stdin:從標準輸入中讀取密碼,常用於使用腳本批量修改密碼。
    • -u:解鎖賬戶。
    • -d:刪除密碼。
    • -n:密碼最少使用時間。
    • -x:密碼最多使用時間。
    • -w:警告時間。
    • -i:密碼過期後鎖定時間。
  • 示例:
    • 修改自己的密碼:passwd
    • 鎖定賬戶:passwd -l tom
    • 從標準輸入讀取密碼:echo ‘xxx‘ | passwd --stdin

groupadd

  • 說明:添加組
  • 用法:groupadd [options] group
  • 選項:
    • -g GID:指定gid,,不指定默認是取j最近加添的gid+1。
    • -r:添加為系統組。
    • -p PASSWORD:設定密碼,不推薦。
  • 示例:groupadd hadoop

groupdel

  • 說明:刪除組
  • 用法:groupde group
  • 示例:groupdel hadoop

groupmod

  • 說明:修改組信息
  • 用法:groupmod [options] GROUP
  • 選項:
    • -g GID:修改gid。
    • -n NEW_GEOUP:修改組名。
    • -p PASSWORD:修改密碼,不推薦。
  • 示例:groupmod -g 1000 root

gpasswd

  • 說明:修改組密碼(組密碼是在用戶臨時切換到該組時用的)
  • 用法:gpasswd [option] group
  • 選項:
    • -a user:向組中添加用戶。
    • -d user:從組中刪除用戶。
    • -r:刪除密碼。
  • 示例:gpasswd root

newgrp

  • 說明:臨時切換基本組。
  • 用法:newgrp [-] [group]
  • 示例:newgrp root

馬哥linux作業--第三周