『學了就忘』Linux基礎命令 — 37、Linux中掛載操作的相關命令

繁華似錦Fighting發表於2021-11-11

掛載就是把裝置檔名和已經建立的空目錄連結起來的過程,就叫做掛載。

1、mount命令介紹

(1)mount命令說明

Linux系統中所有儲存裝置都必須掛載才能使用,包括硬碟。

  • 命令名稱:mount
  • 命令所在路徑:/bin/mount
  • 執行許可權:所有使用者

mount命令的使用示例:

# 查詢系統中已經掛我的裝置,-l會顯示卷標名稱
[root@localhost ~]# mount [-l]

(2)mount命令格式

[root@localhost ~]# mount [-t 檔案系統] [-L卷標名] [-o特殊選項] 裝置檔名 掛載點

# 注意:在Linux系統中\ 的意思表示換行符, 代表上邊兩行是一行內容。

選項:
  -t檔案系統:加入檔案系統型別來指定掛載的型別,可以ext3、ext4、iso9660等檔案系統。(不寫也沒事,Linux系統預設光碟U盤都能自動識別)。
  -L卷標名:掛載指定卷標的分割槽,而不是安裝裝置檔名掛載。(現在基本上用不到了,可以不關注。)
  -o特殊選項:可以指定掛載的額外選項,比如讀寫許可權、同步非同步等,如果不指定則預設值生效。

舉例:

[root@localhost ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom/

2、mount命令示例

直接輸入mount 命令,就是查詢系統中已經存在的掛載裝置。

[root@localhost ~]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

# 其中只有
# /dev/sda3 on / type ext4 (rw)-->/dev/sda3掛載到根目錄下,檔案系統是ext4,許可權是讀寫。
# /dev/sda1 on /boot type ext4 (rw)  有用,其他都是干擾項.

# 還要注意,swap分割槽是不需要掛載點的,是給系統核心直接訪問的分割槽,mount命令是檢視不到的。

3、mount -a命令說明

# 依據配置檔案/etc/fstab的內容,自動掛載
[root@localhost ~]# mount -a

-aaauto,自動的意思。

Linux系統的硬碟是開機自動掛載的。但是光碟和U盤這類移動儲存裝置,是不推薦開機自動掛載的。

如果光碟和U盤這類移動儲存裝置設定了開機自動掛載,開機時一旦你忘記放光碟或者U盤,系統就會無條件的尋找這個分割槽,如果找不到的話,就會系統啟動錯誤。這樣的錯誤其實修復起來並不難,但是一定要在本機上進行操作。

Linux系統自動掛載就是依照/etc/fstab檔案進行自動掛載的。這個檔案是一個非常脆軟的檔案,一旦這個檔案寫錯,系統會啟動報錯。

執行檢視/etc/fstab檔案命令:[root@localhost ~]# vim /etc/fstab

如下圖所示:

image

mount -a命令可以看作是掃描一下/etc/fstab檔案,看看裡邊的內容有沒有寫錯,如果寫錯會報錯。

Red Hat 6以後的Linux系統中,/etc/fstab檔案的容錯性明顯的增強了。Red Hat 5以前出現一個字母的拼寫錯誤都是不行的,Red Hat 6以後除了關鍵位置的資訊不能有錯誤,其他的出現錯誤也不會報錯,所以有時候用mount -a命令掃描,不一定會出現錯誤,,所以不能盲目信任mount -a命令的結果。這個記住就好。(後邊會說如果該檔案有錯誤怎麼修復)

4、-o特殊選項說明

我們先檢視一下前面說的/etc/fstab檔案,Linux系統的自動掛載配置檔案。

image

上圖中紅框內就是分割槽掛載的預設許可權。下面詳細說明一下掛載的許可權:

  • atime/noatime:更新訪問時間或不更新訪問時間。訪問分割槽檔案時,是否更新檔案的訪問時間,預設為更新。
  • async/sync:非同步/同步,預設為非同步。
  • auto/noauto :自動/手動,mount -a命令執行時,是否會自動安裝/etc/fstab檔案內容掛載,預設為自動。
  • exec/noexec:執行或不執行,設定是否允許在檔案系統中執行可執行檔案,預設是exec允許。
  • rw/ro:讀寫/只讀,檔案系統掛載時,是否具有讀寫許可權,預設是rw
  • suid/nosuid:具有或不具有SUID許可權,設定檔案系統是否具有SUIDSGID的許可權,預設是具有。
  • user/nouser:允許或不允許普通使用者掛載,設定檔案系統是否允許普通使用者掛載,預設是不允許,只有root可以掛載分割槽。
  • defaults:定義預設值,相當於rwsuiddevexecautonouserasync 這七個選項。
  • remount:重新掛載已經掛載的檔案系統,一般用於指定修改特殊許可權。
  • usrquota:寫入代表檔案系統支援使用者磁碟配額,預設不支援。
  • grpquota:寫入代表檔案系統支援組磁碟配額,預設不支援。

說明:

  • defaults許可權代表最上邊7種許可權中,有一個是預設值。這個預設值一般不需要進行修改,預設選項就很好。
  • 比如exec/noexec選項,如果選擇noexec,那整個分割槽中的檔案都不能執行,如果是根目錄定義成noexec,那整個系統都無法啟動,即使想修改也不行,因為mount命令都執行不了了。

5、exec/noexec選項說明

請看下面示例:

# 1、檢視系統中已經掛載的檔案系統,注意有虛擬檔案系統
# 命令結果是代表:/dev/sda3分割槽掛載到/目錄,檔案系統是ext4,許可權是讀寫
[root@localhost] # mount
/dev/sda3 on/type ext4(rw)proc on/proc type proc(rw)
sysfs on/sys type sysfs(rw)
devpts on/dev/pts type devpts(rw,gid=5,mode=620)
tmpfs on/dev/shm type tmpfs(rw)
/dev/sdal on/boot type ext4(rw)
none on/proc/sys/fs/binfmt_misc type binfmt_misc(rw)
sunrpe on/var/lib/nfs/rpe_pipefs type rpc_pipefs(rw)


# 2、修改特殊許可權
#我們檢視到/boot分割槽已經被掛載,而且採用的defaults 選項,那麼我們重新掛載分割槽,並採用 noexec
[root@localhost ~]# mount -o remount,noexec /boot(臨時生效)

# 然後用mount命令查詢一下分割槽,boot分割槽多了noexec許可權
# /dev/sdal on /boot type ext4 (rw,noexec)

# 許可權禁止執行檔案執行,看看會出現什麼情況(注意不要用根分割槽做試驗,#不然系統命令也不能執行了)。
# 執行一個shell指令碼
[root@localhost boot]# ./hello.sh
-bash:./hello.sh:許可權不夠

# 再修改回來許可權,就可以執行了。
[root@localhost ~]# mount -o remount,exec /boot

這個練習也要記住remount的作用和使用方法。

相關文章