1. 程式人生 > >Linux檔案管理及許可權管理(使用者、組、檔案管理)

Linux檔案管理及許可權管理(使用者、組、檔案管理)

1、Linux上的檔案管理類命令都有哪些,其常用的使用方法及其相關示例演示

  1. cat命令:
    檔案文字檢視工具:
    cat /etc/fstab
    cat /etc/passwd
    cat [OPTION] [FILE]…
    -n:給顯示的檔案行編號
    -E:顯示行結束符$
  2. tac命令:
    與cat相反,逆序顯示
    檔案文字檢視工具:
    tac /etc/fstab
    tac /etc/passwd
    tac [OPTION] [FILE]…
    -n:給顯示的檔案行編號
    -E:顯示行結束符$
  3. file命令:
    檢視檔案內容的型別
    file [FILE]. . .
  4. more命令:
    more file[…]
    特點:翻屏至檔案尾部後自動退出
    例如:
    more /var/log/secure
  5. less命令:
    less file[…]
    特點:q退出,可自由翻屏;
  6. head命令:
    檢視檔案的前n行,預設為10行;
    head [options] file
    -n #:顯示前#行;
    例如:
    head /var/log/messages
  7. tail命令:
    檢視檔案的後n行
    tail [options] file
    -n #:顯示前#行;;
    -f:檢視檔案尾部內容結束後不退出,阻塞在檔案上,追加新內容時會繼續顯示,Ctrl+c退出;
    例如:
    tail /var/log/messages
    tail -20 /var/log/messages:顯示倒數20行;
    tail -f /tmp/fstab:檢視不退出,顯示實時追加新的內容的變化;
  8. stat命令:
    stat – display file or file system status(檢視檔案或檔案系統狀態)
    stat [OPTION]… FILE…
  9. cp命令:
    copy
    單源複製:cp [OPTION]… [-T] SOURCE DEST
    多源複製:cp [OPTION]… SOURCE… DIRECTORY:
    cp [OPTION]… -t DIRECTORY SOURCE…
    單源複製:cp [OPTION]… [-T] SOURCE DEST
    如果目標檔案不存在,則事先建立此檔案,並複製原始檔的資料流到目標檔案中
    如果目標檔案存在:
    如果目標檔案是非目錄檔案,則覆蓋目標檔案
    如果目標檔案是目錄檔案,則現在目標檔案下建立一個與原始檔同名的檔案,並複製其資料流
    多源複製:cp [OPTION]… SOURCE… DIRECTORY:(注意:目標必須是目錄)
    cp [OPTION]… -t DIRECTORY SOURCE…
    如果目標檔案不存在:錯誤;
    如果目標檔案存在:
    如果目標檔案是非目錄檔案:錯誤;
    如果目標檔案是目錄檔案:分別複製每個檔案至目標目錄中,並保持原名
    常用選項:
    -i,–interactive:互動式複製,即覆蓋目標檔案之前提醒使用者確認;
    -f,force:強制覆蓋目標檔案;
    -R,-r,–recursive:遞迴複製目錄及其內容;
    -P,–no-dereference:複製連結檔案本身,而非預設的複製連結檔案指向的原檔案內容;
    -d:複製符號連結本身,而非其指向的原始檔(預設為複製連結檔案的原檔案內容);
    -a,–archive:歸檔複製;備份時才會使用;
  10. mv命令:
    (不需要-r選項)與使用cp命令相似;
    mv – move (rename) files
    單源移動:mv [OPTION]… [-T] SOURCE DEST
    多源移動:mv [OPTION]… SOURCE… DIRECTORY
    mv [OPTION]… -t DIRECTORY SOURCE…
    注意:原檔案目錄與目標檔案目錄相同時,為rename;否則為move;
    不區分目錄和檔案,直接move;
    常用選項:
    -i,–interactive:互動式複製,移動時,如果目標檔案存在時提示使用者確定是否覆蓋(僅root使用者);
    -f,force:強制移動,覆蓋前不提示;
  11. rm命令:
    即能刪除檔案又能刪目錄,但刪目錄時要用遞迴-r選項;
    rm – remove files or directories
    rm [OPTION]… FILE…
    常用選項:
    -r, -R, –recursive:遞迴刪除目錄及其內容;
    -f,force:強制刪除,不提示確認;
    -i,–interactive:互動式,提示確認;
    危險操作:rm -rf /”或“rm -rf /*”;
    注意:所有不用的檔案建議不要直接刪除,而是移動至某個專用目錄:(模擬回收站,如重定向到/dev/null中);

2、使用命令列展開功能,建立/temp/a1,/temp/a2,/temp/a1/a,/temp/a2/b,在/temp目錄下建立目錄:x_y,x_z,q_y,q_z。(注:此例是在/home/123/data/目錄下建立)

在這裡插入圖片描述
在這裡插入圖片描述

3、檔案的元資料資訊有哪些,分別表示什麼含義,如何檢視?如何修改檔案的時間戳資訊。

  1. 檔案的兩類資料組成部分:
    元資料(metadata):指用來描述一個檔案的特徵的系統資料,諸如訪問許可權、檔案擁有者等,即屬性資料,存放於檔案系統中的inode裡;資料(data):指普通檔案中的實際資料,即資料本身,存放在data blocks裡;
    元資料資訊包含:
    File:檔名
    Size:檔案大小(單位:B)
    Blocks:檔案所佔塊個數
    IO Block:每個資料塊的大小(單位:B)
    regular file:普通檔案(此處顯示檔案的型別)
    Inode:檔案的Inode號,檔案的索引節點號
    Links:硬連結次數
    Access:許可權
    Uid:(屬主id/屬主名)
    Gid:(屬組id/屬組名)
    Context:檔案所在的環境
    Access:最近訪問時間access time (atime)
    Modify:資料改動時間modification time (mtime)
    Change:元資料改動時間status time (ctime)
    Creat:檔案建立時間
  2. 檢視檔案的元資料的方法:
    stat命令:stat – display file or file system status,使用stat 檢視檔案的元資料
    使用語法:stat file…
    示例:檢視/etc/passwd檔案的元資料
    在這裡插入圖片描述
  3. 修改檔案的時間戳的方法:
    touch命令:
    touch 這個指令最常被使用的情況是:
    建立一個空的檔案;
    將某個檔案日期修訂為目前 (mtime 與 atime)
    touch – change file timestamps修改時間戳
    使用語法: touch [OPTION]… file…
    注意:當touch的檔案不存在時,會在目標目錄下建立x空檔案
    選項:
    不跟任何選項時三個時間戳都會被更新為當前時間。
    -c: 指定的檔案路徑不存在時不予建立;
    -a: 僅修改access time;
    -m:僅修改modify time;
    -t :指定改為某一時刻的時間,時間引數格式
    [[CC]YY]MMDDhhmm[.ss]
    示例:將/tmp/passwd檔案的最近更改時間改為2018年12月23日22點10分10秒
    在這裡插入圖片描述
    檔案的時間是很重要的,如果檔案的時間錯誤的話,可能會造成某些程式無法順利的運作。

4、在/temp目錄下建立以tfile開頭,後跟當前日期的時間的檔案,檔名形如:tfile-2016-05-27-09-32-22。

在這裡插入圖片描述

5、複製/etc目錄下所有已p開頭,以非數字結尾的檔案或目錄到/tmp/mytest1目錄中。

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

6、建立使用者Tom,指定UID為5001,指定家目錄為/tmp/tom,指定shell為/bin/zsh,指定基本組為tom,附加組為jack。

在這裡插入圖片描述
開始因為沒有關閉SELinux,所以無法建立在/tmp下建立tom的家目錄,關閉SELINUX防火牆後即可建立。(setenforce是Linux的selinux防火牆配置命令 執行setenforce 0 表示關閉selinux防火牆,1表示開啟。getenforce可檢視selinux的狀態。)
在這裡插入圖片描述

7、常用的使用者以及檔案管理命令有哪些,並演示命令以及用法。

1、使用者管理:
Linux中的使用者分為兩類:管理員和普通使用者,普通使用者又分為系統使用者和登入使用者
每個使用者都有唯一的使用者識別符號UserID即UID,由16bits二進位制的數字組成:0-65535。
管理員的UID為:0
普通使用者的UID為:1-65535
系統使用者的UID:1-499(CentOS6),1-999(CentOS7)
登入使用者的UID:500-60000(CentOS6),1000-60000(CentOS7)
使用者名稱userName與UID一一對應
在/etc/passwd和/etc/shadow檔案中儲存使用者的相關資訊
以下使用cat命令開啟/etc/passwd檔案的內容
在這裡插入圖片描述
裡面包含了7個欄位
name: 使用者名稱
password:可以是加密的密碼,也可是佔位符x;
UID:使用者的識別符號
GID:使用者所屬的主組的ID號;
GECOS:註釋資訊
directory:使用者的家目錄,預設在/home/user/下;
shell:使用者的預設shell,登入時預設shell程式;
/etc/shadow儲存著使用者密碼,普通使用者不能開啟。
在這裡插入圖片描述
裡面共有9欄位
使用者名稱
加密的密碼
最近一次修改密碼的時間
最短使用期限
最長使用期限
警告期段
過期期限
保留欄位

使用者管理命令:
useradd 命令:建立使用者
語法:useradd [option] userName
選項:
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本組ID,此組得事先存在,建立使用者時會預設指定與使用者同名的組;
-G, --groups GROUP1[,GROUP2,…[,GROUPN]]]:指明使用者所屬的附加組,多個組之間用逗號分隔;
-c, --comment COMMENT:指明註釋資訊;
-d, --home HOME_DIR:以指定的路徑為使用者的家目錄;通過複製/etc/skel此目錄並重命名實現;指定的家目錄路徑如果事先存在,則不會為使用者複製環境配置檔案,預設在/home/user下建立;
-s, --shell SHELL:指定使用者的預設shell,可用的所有shell列表儲存在/etc/shells檔案中, /sbin/nologin為不能登入,一般用於系統使用者;
-r, --system:建立系統使用者;
echo $SHELL :檢視當前使用者的 shell 型別
useradd -M USERNAME:建立使用者但不建立家目錄
useradd -mk USERNAME:建立使用者的同時建立家目錄,並複製 /etc/skel 中的內容到家目錄中。
如果使用者沒有家目錄,那麼不能切換到該使用者
注意:建立使用者時的諸多預設設定配置檔案為 etc/longin.defs
useradd –D:顯示建立使用者的預設配置,useradd –D 選項:修改預設選項的值,修改的結果保存於/etc/default/useradd 檔案中;
在這裡插入圖片描述

usermod 命令:修改使用者屬性
語法:usermod [option]… userName
選項:
-u, --uid UID:修改使用者的ID為此處指定的新UID;
-g, --gid GROUP:修改使用者所屬的基本組;
-G, --groups GROUP1[,GROUP2,…[,GROUPN]]]:修改使用者所屬的附加組;原來的附加組會被覆蓋;
-a, --append:與-G一同使用,用於為使用者追加新的附加組;
-c, --comment COMMENT:修改註釋資訊;
-d, --home HOME_DIR:修改使用者的家目錄;使用者原有的檔案不會被轉移至新位置;
-m, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動為新的家目錄;
-l, --login NEW_LOGIN:修改使用者名稱;
-s, --shell SHELL:修改使用者的預設shell;
-L, --lock:鎖定使用者密碼;即在使用者原來的密碼字串之前新增一個"!";
-U, --unlock:解鎖使用者的密碼;
例:Usermod –d /tmp/newhome –m user_name
在這裡插入圖片描述
usermod -a -G GROUPS USERNAME:在原有附加組的基礎上追加附加組(注意順序)
在這裡插入圖片描述
usermod -d PATH USERNAME:修改家目錄。修改後原先家目錄中的檔案不能訪問了,因為在當前的家目錄中並不存在這些檔案。

userdel命令:刪除使用者
語法:userdel [option] userName
選項:
-r:刪除使用者時一併刪除其家目錄

2、使用者密碼管理:
passwd 命令:修改使用者的密碼
語法:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]
(1)、passwd :修改使用者自己的密碼
(2)、passwd USERNAME :修改指定使用者的密碼,但僅root由此許可權
選項:-l, -u:鎖定和解鎖使用者;
-d:清除使用者密碼串;
-e DATE: 過期期限,日期;
-i DAYS:非活動期限;
-n DAYS:密碼的最短使用期限;
-x DAYS:密碼的最長使用期限;
-w DAYS:警告期限;
–stdin:設定使用者密碼為使用者名稱
echo “PASSWORD” | passwd --stdin USERNAME
3、組管理
在linux 中的每個使用者都必須有一個組,不能獨立與組外。在Linux中每個檔案有所有者、所在組、其他組的概念。
每個組都有唯一的組識別符號GroupID即GID,由16bits二進位制的數字組成:0-65635。
管理員組的GID為:0
普通使用者組的ID為:1-65535
系統組的GID:1-499(CentOS6),1-999(CentOS7)
登入組的GID:500-60000(CentOS6),1000-60000(CentOS7)
組名groupName與GID一一對應;
組的相關資訊可在/etc/group檔案中檢視
在這裡插入圖片描述
裡面共有4個欄位
name:組名
grouppasswd:組密碼
Gid:組ID
groupuser:所屬組的使用者
Linux使用者和組管理命令:
4、組管理命令:
groupadd 命令:新增組
語法:groupadd [option]… group_Name
選項:-g GID :指定GID;預設是上一個組的GID+1;
-r :建立系統組;
groupmod 命令:修改組屬性
語法:groupmod [option] group_Name
選項:-g GID:修改GID
-n new_name:修改組名;groupmod –n new_name old_name
groupdel 命令:刪除組
語法:groupdel [option] group
5、組密碼管理:
gpasswd 命令:修改組密碼:
組密碼檔案為:/etc/gpasswd
語法:gpasswd [option] groupName
選項:-a USERNAME:向組中新增使用者
-d USERNAME:從組中移除使用者
6、其他命令newgrp、chage、id、su:
newgrp 命令:臨時切換指定的組為基本組
語法:newgrp [-] [groupName]
-:會模擬使用者重新登入以實現重新初始化其環境
chage 命令:更改使用者密碼過期資訊
語法:chage [option] userName
選項:-d:上一次更改日期
-E:賬號到期的日期,過了這天,此賬號將不可用
-W:使用者密碼到期前,提前收到警告資訊的天數
-m:密碼可更改的最小天數,為0代表任何時間都可以修改密碼
-M: 密碼保持有效的最大天數
-id命令:顯示使用者的真和有效ID;
語法:id [OPTION]… [USER]
選項:-u: 僅顯示有效的UID;
-g: 僅顯示使用者的基本組ID;
-G:僅顯示使用者所屬的所有組的ID;
-n: 顯示名字而非ID;
-su命令:登入式切換使用者:會通過讀取目標使用者的配置檔案來重新初始化
語法:su - USERNAME
su -l USERNAME
非登入式切換:不會讀取目標使用者的配置檔案進行初始化
su USERNAME
注意:管理員可無密碼切換至其它任何使用者;
-c ‘COMMAND’:僅以指定使用者的身份執行此處指定的命令;
7、檔案許可權管理命令
chmod用來變更檔案或目錄的許可權。檔案或目錄許可權的控制分別以讀取、寫入、執行3種一般許可權來區分,另有3種特殊許可權可供運用。使用者可以使用chmod指令去變更檔案與目錄的許可權,設定方式採用文字或數字代號皆可。符號連線的許可權無法變更,如果使用者對符號連線修改許可權,其改變會作用在被連線的原始檔案
語法:
chmod [OPTION]… MODE[,MODE]… FILE…
chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… --reference=RFILE FILE…
檔案的三類使用者:
u :屬主
g :屬組
o :其他
a :所有
(1) chmod [OPTION]… MODE[,MODE]… FILE…
MODE表示法:
賦權表示法:直接操作一類使用者的所有許可權位rwx;
chmod u=rwx,g=rw,o=r file
授權表示法:直接操作一類使用者的一個許可權位r,w,x;
chmod u+x,g+w file
(2) chmod [OPTION]… OCTAL-MODE FILE…
chmod 764 file
(3) chmod [OPTION]… --reference=RFILE FILE…
選項:-R, --recursive:遞迴修改
注意:使用者僅能修改屬主為自己的那些檔案的許可權
從屬關係管理命令:chown,chgrp
chown 命令:
改變某個檔案或目錄的所有者和所屬的組,該命令可以向某個使用者授權,使該使用者變成指定檔案的所有者或者改變檔案所屬的組。使用者可以是使用者名稱或者是使用者ID,使用者組可以是組名或組ID。檔名可以使由空格分開的檔案列表,在檔名中可以包含萬用字元。
語法:chown [OPTION]… [OWNER][:[GROUP]] FILE…
chown [OPTION]… --reference=RFILE FILE…
選項:-R:遞迴修改
例:把檔案file給user,新增到market組
chown user:market file
chgrp 命令
用來改變檔案或目錄所屬的使用者組。該命令用來改變指定檔案所屬的使用者組。其中,組名可以是使用者組的id,也可以是使用者組的組名。檔名可以 是由空格分開的要改變屬組的檔案列表,也可以是由萬用字元描述的檔案集合。如果使用者不是該檔案的檔案主或超級使用者(root),則不能改變該檔案的組。
語法:chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… --reference=RFILE FILE…
引數:-R或——recursive:遞迴處理,將指令目錄下的所有檔案及子目錄一併處理;
-v或——verbose:顯示指令執行過程;
–reference=<參考檔案或目錄>:把指定檔案或目錄的所屬群組全部設成和參考檔案或目錄的所屬群組相同;
注意:僅管理員可修改檔案的屬主和屬組
例:將/usr/meng及其子目錄下的檔案的組修改為market
chgrp –R market /usr/meng
思考:使用者對目錄有寫許可權,但對目錄下的檔案沒有寫許可權時,能否修改此檔案內容?能否刪除此檔案?
回答:不能修改此檔案,但能刪除此檔案
反向掩碼:
umask 命令:檔案的許可權反向掩碼,遮罩碼;
檔案的許可權反向掩碼預設為:666-umask
目錄的許可權反向掩碼預設為:777-umask
注意:之所以檔案用666去減,表示檔案預設不能擁有執行許可權;如果減得的結果中有執行許可權,則需要將其加1;
例:若反向掩碼umask為: 023
則建立的檔案的許可權預設為:666-023=644
建立的目錄的許可權預設為:777-023=754
umask:檢視當前umask
在這裡插入圖片描述
umask MASK: 設定umask
在這裡插入圖片描述
注意:此類設定僅對當前shell程序有效;