『無慾則無求』Linux常用命令 — 36、掛載命令

掛載就是把設備文件名和已經建立的空目錄鏈接起來的過程,就叫做掛載。

1、mount命令基本格式

linux所有存儲設備都必須掛載才能使用,包括硬盤。

  • 命令名稱:mount
  • 命令所在路徑:/bin/mount
  • 執行權限:所有用戶

命令的具體格式如下:

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

2、練習:

直接輸入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

-a的a是auto,自動的意思。

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

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

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

[root@localhost ~]# vim /etc/fstab
在這裏插入圖片描述
mount -a命令可以看作是掃描一下/etc/fstab文件,看看裏邊的內容有沒有寫錯,如果寫錯會報錯。

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

4、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/

5、-o特殊選項說明

我們先查看一下前面說的/etc/fstab文件,Linux系統的自動掛載配置文件。
在這裏插入圖片描述
上圖中紅框內就是分區掛載的默認權限。下面詳細說明一下掛載的權限。

  • atime/noatime:更新訪問時間/不更新訪問時間。訪問分區文件時,是否更新文件的訪問時間,默認爲更新。
  • async/sync:異步/同步,默認爲異步。
  • auto/noauto :自動/手動,mount-a命令執行時,是否會自動安裝/etc/fstab文件內容掛載,默認爲自動。
  • exec/noexec:執行/不執行,設定是否允許在文件系統中執行可執行文件,默認是exec允許。
  • rw/ro:讀寫/只讀,文件系統掛載時,是否具有讀寫權限,默認是rw。
  • suid/nosuid:具有/不具有SUID權限,設定文件系統是否具有SUID和SGID的權限,默認是具有。
  • user/nouser:允許/不允許普通用戶掛載,設定文件系統是否允許普通用戶掛載,默認是不允許,只有root可以掛載分區。
  • defaults:定義默認值,相當於rw,suid,dev,exec,auto,nouser,async 這七個選項。
  • remount:重新掛載已經掛載的文件系統,一般用於指定修改特殊權限。
  • usrquota:寫入代表文件系統支持用戶磁盤配額,默認不支持。
  • grpquota:寫入代表文件系統支持組磁盤配額,默認不支持。

說明:
defaults權限代表最上邊7種權限中,有一個是默認值。這個默認值一般不需要進行修改,默認選項就很好。

比如exec/noexec選項,如果選擇noexec,那整個分區中的文件都不能執行,如果是根目錄定義成noexec,那整個系統都無法啓動,即使想修改也不行,因爲mount命令都執行不了了。

6、練習:說明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的作用和使用方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章