[精讚] [會員登入]
165

[Centos] Linux mount 掛載檔案時的使用者和SELINUX和權限處理

linux下使用mount來掛載目錄或磁碟,我們一般會使用這樣的指令 # mount /dev/sdc1 /home/h

分享此文連結 //n.sfs.tw/16421

分享連結 [Centos] Linux mount 掛載檔案時的使用者和SELINUX和權限處理 @新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2024-06-08 00:28:09 最後編修
2024-06-04 00:35:23 By 張○○
 

自動目錄

linux下使用mount來掛載目錄或磁碟,我們一般會使用這樣的指令

# mount /dev/sdc1 /home/hdd

意思是將磁碟分割 /dev/sdc1 指定掛載到 /home/hdd 這個目錄,簡單的操作可以參考[2]。

掛載完畢後,切換到 /home/hdd 這個目錄,其餘他是使用了另一個磁區 /dev/sdc1,而且他是屬於 root 的

如果這個磁區的檔案類型和你的系統一樣的話(例如 ext3, ext4, xfs),你可以使用 chmod, chcon, chgrp, chown 等指令去修改權限沒有任何問題。

但假設你掛載的檔案類型不是linux的類型的話,上面修改權限的指令將不會有任何作用,假設 /home/hdd 不是linux常見的檔案類型,而是例如常見的 cifs、nfs 類型。

# chown -R user:user /home/hdd
# chmod 777 /home/hdd

<結果是能跑完不會有任何錯誤,但是結果是完全沒有用>

換句話說,就是使用者和群組並不會改變成為 user

此外,Centos上還有 selinux的機制,要是沒被關掉的話,可能還會有selinux導致權限的問題。

 

使用 -o參數來指定權限及context

使用 mount 指令時,可以加上 -o 來指定 selinux 的 context,例如:

# mount /dev/sda2 /test/ -o defcontext="system_u:object_r:httpd_sys_rw_content_t:s0"

上面的指令中defcontext指定沒有selimux標籤的檔案會給予預設的selinux權限[4],原則上對於非linux相關的檔案類型的話,也可以用 context=,兩者是等義。

mount只是暫時的,在重開機後就消失,希望能永久掛載的話,可以修改 /etc/fstab

 

修改 /etc/fstab 來解決掛載後的權限問題

假設我要把 nas 掛載後指令給 apache (uid=48),同時也要指定selinux 的context,另外要掛載後能讀寫,並且目錄具有 讀寫的權限

修改 /etc/fstab,加入以下內容:

//192.168.1.20/home /path/to/uploads cifs username=user,password=123456,rw,uid=48,context="system_u:object_r:httpd_sys_rw_content_t:s0" 0 0

上面把nas(192.168.1.20)掛載上 /path/to/uploads 的目錄,nas的檔案型態是cifs。登入nas的帳密就寫在後面

uid=48 指定目錄的擁有者是 apache, 適應給selinux的內容作為apache可讀寫。

這裡要注意的是 rw 是指掛載完後可以讀寫這個目錄,如果沒有指定uid,預設會是 root(uid=0),如此這個目錄只有root可以讀寫。你也可以把他指定成777,像這樣[5]

//192.168.1.20/home /path/to/uploads cifs username=user,password=123456,rw,context="system_u:object_r:httpd_sys_rw_content_t:s0",dir_mode=0777,file_mode=0666 0 0

   ├── dir_mode=0777 目錄可讀寫,要注意這和 dmask 不一樣,dmask在cifs中是無效的
   └── file_mode=0666 檔案可讀寫

 

錯誤排除

沒有檔案 mount.cifs 的話,請安裝 mount.cifs檔案:

# dnf install cifs-utils

 

參考資料

[1] [Oracle9] 查看磁碟檔案類型、掛載和uuid@新精讚

[2] [Centos6 7] 掛載磁碟@新精讚

[3] https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-mounting_file_systems-making_context_mounts_persistent

[4] https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/sect-security-enhanced_linux-working_with_selinux-mounting_file_systems

[5] https://superuser.com/questions/174776/modify-fstab-entry-so-all-users-can-read-and-write-to-an-ext4-volume

END

你可能感興趣的文章

[CentOS] 新增修改及刪除使用者 新增、修改、刪除使用者和群組

[Centos8] 利用nmcli 設定ipv6 位址 Centos7之後修改網路設定變得比較麻煩一點,此篇介紹使用nmcli指令的方法

[CentOS6] 設定 sendmail Centos6上設定sendmail,基本上sendmail會設定多半是為了寄系統信和收垃圾信(喂!!?)

[Centos7] 使用網路安裝 Centos7 使用網路來安裝Centos7,雖然這不是什麼新鮮事,但可以省你的磁碟空間或光碟片

DNS壓力測試工具queryperf 要怎麼知道我安裝的DNS是否能耐受的住網路上的攻擊或大量查詢,這裡有一個免費的工具 queryperf

[Centos8] 校時ntpdate? 以前常用的ntpdate,在centos8竟然不見了?

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

沒有非誰做不可的事,也沒有不可被取代的人 沒有非誰做不可的事,也沒有不可被取代的人

Linux shell 的date表示法 linux下SHELL中的date表示法

[bc] linux 的計算機 bc 設定小數位數、計算π、次方根 linux 的計算機 bc 設定小數位數、計算π、次方根

Smarty安裝 smarty 是著名的樣版引擎,非常的好用,用多了突然發現拿掉smarty反而不會寫php了,以下是安裝過程..

正則表達式:Email名稱防止連續輸入點(.)及下底線(_) Email的名稱中要允許特殊符號,但又不允許連續出現的正則表達式