1. 程式人生 > >linux 檔案操作及chmod許可權

linux 檔案操作及chmod許可權

檔案操作

檔案及目錄

  • 相關命令
命令 說明
touch 建立檔案,可以一次性建立多個檔案
rm 刪除檔案或目錄(需要加-r選項)
cp 拷貝檔案或目錄(需要加-r選項)
mv 移動檔案或目錄
mkdir 建立目錄
rmdir 刪除目錄,只能是空目錄

- 選項說明

  • -f:表示強制,預設刪除操作是給予提示,新增此選項就不再提示
  • *:表示模糊匹配任意
  • -r:刪除或拷貝目錄時的遞迴操作
  • -p:建立目錄時,需要建立中間目錄,例:mkdir -p 1/2/3

檔案流操作(sed)

  • 格式

    sed [選項/引數] 指令 檔案
    -n:結合p一起使用
    -i:修改原檔案,預設只會將內容顯示到緩衝區
  • 指令

    a:新增
    d:刪除
    p:結合-n一起使用,用來顯示一行
    c:取代
    s:替換指定的內容
  • 例項

    sed '1a xxxxxx' 1.txt             #在第1行的下面新增內容‘xxxxx’,不會改變原檔案
    sed -i '1a xxxxx' 1.txt           #在第1行的下面新增內容‘xxxxx’,直接改變原檔案
    sed '1,3a xxxxx' 1.txt            #在第1行到第3行的下面新增內容‘xxxxx’,不會改變原檔案
    sed -i '2d'
    1.txt #刪除第2行的內容 sed '2,$d' 1.txt #刪除從第2行到末尾的所有內容 sed -n '2p' 1.txt #顯示第2行的內容 sed -n '2,$p' 1.txt #顯示從第2行到末尾的內容 sed '1c XXX' 1.txt #用XXX取代第一行的內容 sed '1,3c XXX' 1.txt #用XXX整體取代1-3行的內容 sed 's/潘瑋柏/pwb/g' 1.txt #用'pwb'全域性替換‘潘瑋柏’
    sed '4,5s/潘瑋柏/pwb/g' 1.txt #用'pwb'替換4-5行的‘潘瑋柏’

檢視檔案

  • 相關命令
命令 說明
cat 從上到下,順序顯示全部內容
tac 從下到上,逆序顯示全部內容
head 顯示開頭的幾行,預設10行,使用‘-n’,n表示要顯示的行數,例:head -3 1.txt
tail 顯示末尾的幾行,用法同head
nl 功能同cat,額外顯示行號
wc 統計顯示,行數 | 單詞數 | 位元組數 | 檔名
more 一點一點顯示內容
less 一點一點顯示內容

- more和less使用說明

  • 顯示一屏就會停止
  • q退出檢視
  • 空格下翻一頁
  • 回車下翻一行
  • more檢視完畢時會自動退出,而less不會
  • less比more多了上下按鍵單行的檢視
  • 通常更多的情況是結合管道,如:ls -l /etc | more,將輸出的結果作為more的引數

使用者和使用者組

  • 相關命令
命令 說明
whoami 檢視當前登入使用者
useradd 新增使用者,會在/home目錄建立一個與使用者名稱相同的資料夾
userdel 刪除使用者
su [-] 切換到指定使用者,預設root。帶’-‘會將shell環境也進行切換
sudo 以指定使用者(預設root)執行命令,但是並不會切換使用者,如:sudo 命令
passwd 設定指定使用者密碼,預設設定root使用者,只有root使用者才有許可權
groupadd 新增使用者組
groupdel 刪除使用者組
gpasswd 向群組新增/刪除指定使用者,如:gpasswd -a/-d test hello
chown 修改檔案擁有者[及所屬組],如:chown test[:test] 1.txt
chgrp 修改檔案所屬組,如:chgrp root 1.txt
chsh 修改使用者的shell,chsh test -s /sbin/nologin

- 特殊檔案

  • /etc/passwd,改檔案存放了系統中所有的使用者資訊,一行表示一個使用者,具體解釋:

    使用者名稱:密碼:使用者ID:使用者組ID:描述:家目錄:shell
  • /etc/group,改檔案存放了系統中所有的使用者組資訊,一行表示一個使用者組,具體解釋:

    群組名:口令:組ID:組員               #口令處的x或空白都表示沒有密碼
  • /ect/shadow,使用者密碼檔案,依附於/etc/passwd,但是並不是由該檔案生成。

    • 使用說明
  • 使用者以及使用者組ID通常要大於500,小於500的系統已佔用

  • 建立使用者時
    • 禁止登陸:useradd test -s /sbin/nologin
    • 指定UID:useradd test -u 600
    • 指定家目錄:useradd test -d /xxx/yyy
  • 修改使用者shell,chsh test -s /sbin/nologin
  • 使用者身份標識:普通使用者$,超級使用者#
  • 修改所有者時加’-R’,會進行遞迴操作
  • 在使用使用者名稱和使用者組的地方通常可以使用UID和GID替代

檔案許可權

  • 說明:linux的許可權有所有者、所屬組、其它的概念

  • 許可權:所有檔案都涉及,可讀(r)、可寫(w)、可執行(x),-表示沒有對應許可權

  • 原理:在ls -l檢視的結果集中,第一項表示許可權,分為3組,分別對應所有者、所屬組、其它

  • 修改檔案許可權,使用命令chmod,格式:chmod [身份] [修改] [許可權]

選項 說明
身份
u 用有者
g 所屬組
o 其它
a 所有
修改
+ 新增
- 去掉
= 設定
許可權
r 可讀
w 可寫
x 可執行

- chmod使用說明:-R表示遞迴操作

  • 本質:使用一組(3位)八進位制的數來表示許可權(421),如:0755,詳解如下:

    轉換為二進位制:0755 => 111        101     101
    對應三個身份:          擁有者    所屬組   其它
    每一組都有許可權:  可讀、可寫、可執行
    許可權描述:擁有者可讀可寫可執行,所屬組可讀可執行,其它可讀可執行
  • 簡寫:chmod 0755 1.txt

掩碼(umask)

  • 作用:限定了新建檔案的預設許可權,實際的許可權與掩碼相反(普通檔案減去可執行許可權)

  • 命令:umask [value],檢視或設定掩碼,不加value表示檢視

  • 例項分析

    掩碼為:0022 => 000 010 010
    新建目錄許可權:   111 101 101
    新建檔案許可權:  110 100 100,因為檔案沒有必要預設就有可執行的許可權
  • 命令的修改是臨時的,修改配置檔案才能永久生效

    全域性配置:/etc/profile 
    單個使用者:~/.profile 或者 ~/.bash_profile,優先順序高於全域性配置

特殊屬性

  • 有時候root都無法修改一個檔案,多半是添加了特殊許可權,可以使用lsattr檢視,使用chattr修改,其中最重要的一個許可權是保護許可權,就是不能更改(immutable),方式誤刪除

  • 使用例項

    lsattr:檢視特殊屬性
    chattr:修改特殊屬性,+表示新增,-表示去掉,i表示不可更改
    chattr -i file
    chattr +i file

連結檔案

  • 命令:ln

  • 作用:建立一個檔案或目錄的連結

  • 格式:ln [-s] 原檔案 新名稱

  • 說明:使用ls -l檢視時,檔案型別為’l’的就是軟連結

    硬連結:建立連結時不加-s引數,相當於一個檔案有幾個名字,極少用到
    1.連結檔案的使用者級組資訊不變
    2.不能給目錄新增
    3.不能跨檔案系統
    軟連結:建立連結時新增-s引數,一個檔案儲存了另一個檔案的路徑,類似於windows的快捷方式
    1.軟連結檔案的使用者及組資訊為當前使用者及組
    2.可以給目錄新增
    3.可以跨檔案系統