# Mango - dialog專案 --- ## 專案名稱:Linux_chmod v1.0 * 專案緣起: Linux為多人多工環境,為了讓各個使用者具有較保密的檔案資料,因此檔案的權限管理重要,此專案提供一個TUI互動選單模式,讓管理者可以簡單操作完成權限修改。 * 創作者:Mango Huang * 創作日期:2024/03/03 * 最後更新:2024/03/03 * 適用系統:Ubuntu 20.04 up --- ### 觀念說明 * Linux檔案的基本權限就有九個 * 分別是owner/group/others三種身份,u, g, o來代表三種身份的權限,各有自己的read/write/execute權限 * 『-rwxrwxrwx』, 這九個權限是三個三個一組 ### chmod.sh程式碼內容 ```python= #!/bin/bash # 請使用者輸入要查詢的檔名 file_name=$(dialog --stdout --inputbox "請輸入欲查詢權限的檔案名稱:" 10 60) # 取得檔案權限 file_permission=$(ls -al "$file_name" | awk '{print $1}') # 顯示視窗,讓使用者確認權限 dialog --msgbox "檔名 '$file_name' 的權限為:$file_permission" 10 60 # 顯示權限修改函式 show_permission_window() { # 檔名與權限變數 file_name=$1 permission=$2 # 確認是否修改權限 dialog --yesno "確定要修改 '$file_name' 的權限嗎?" 10 60 # 檢查選擇 case $? in 0) # 選擇"Yes",修改權限 # 選取設定user權限 dialog --checklist "user權限" 15 60 3 \ r "(read)" off \ w "(write)" off \ x "(eXecute)" off \ 2> owner.txt # 讀取文字檔並去除空格 u_value=$(<owner.txt) u_value=$(echo "$u_value" | tr -d ' ') # 選取設定group權限 dialog --checklist "group權限" 15 60 3 \ r "(read)" off \ w "(write)" off \ x "(eXecute)" off \ 2> group.txt g_value=$(<group.txt) g_value=$(echo "$g_value" | tr -d ' ') # 選取設定others權限 dialog --checklist "others權限" 15 60 3 \ r "(read)" off \ w "(write)" off \ x "(eXecute)" off \ 2> others.txt o_value=$(<others.txt) o_value=$(echo "$o_value" | tr -d ' ') chmod u=$u_value,g=$g_value,o=$o_value $file_name # 取得檔案權限 new_permission=$(ls -al "$file_name" | awk '{print $1}') # 顯示視窗,讓使用者確認權限 dialog --msgbox "檔名 '$file_name' 已成功修改為:$new_permission" 10 60 ;; 1) # 選擇"No",取消修改 dialog --msgbox "取消修改權限" 10 60 ;; esac } show_permission_window "$file_name" "$permission" ``` :::warning Linux中修改權限需要使用 __root身份__ ,可以使用以下兩個方式執行本專案 chmod.sh ``` sudo ./chmod.sh #使用sudo執行 chmod.sh sudo su #使用sudo切換至root ``` ::: ### 操作畫面說明 * 畫面1 - 請輸入欲查詢的完整檔案名稱 ![image](https://hackmd.io/_uploads/HkfX5mfpT.png) * 畫面1-1 - 如檔名輸入錯誤,會顯示提示視窗,請重新確認檔名 ![image](https://hackmd.io/_uploads/B1LS37zpT.png) * 畫面2 - 檔案存在,會顯示所查詢的檔案權限 ![image](https://hackmd.io/_uploads/r1f24TGp6.png) * 畫面3 - 與使用者確認是否修改 ![image](https://hackmd.io/_uploads/B13TNpGT6.png) * 畫面4 - 確認是否修改權限 ![image](https://hackmd.io/_uploads/SJYis7zTT.png) * 畫面5 - 複選設定user權限 ![image](https://hackmd.io/_uploads/BkQZrpf6T.png) * 畫面6 - 複選設定group權限 ![image](https://hackmd.io/_uploads/rJQfB6faa.png) * 畫面7 - 複選設定others權限 ![image](https://hackmd.io/_uploads/HkEmSaMTT.png) * 畫面8 - 成功修改 ![image](https://hackmd.io/_uploads/B10mr6G66.png)