您好,登錄后才能下訂單哦!
Linux?系統上的每個文件和目錄均由某個人擁有,擁有者可以完全控制更改或刪除他們擁有的文件。除了有一個擁有用戶外,文件還有一個擁有組。
你可以使用 ls -l?命令查看文件的所有權:
[pablo@workstation?Downloads]$?ls?-l total?2454732 -rw-r--r--.?1?pablo?pablo?1934753792?Jul?25?18:49?Fedora-Workstation-Live-x86_64-30-1.2.iso
該輸出的第三和第四列是擁有用戶和組,它們一起稱為所有權。上面的那個 ISO 文件這兩者都是 pablo。
所有權設置由 chmod 命令進行設置,控制允許誰可以執行讀取、寫入或運行的操作。你可以使用 chown 命令更改所有權(一個或兩者)。
所有權經常需要更改。文件和目錄一直存在在系統中,但用戶不斷變來變去。當文件和目錄在系統中移動時,或從一個系統移動到另一個系統時,所有權也可能需要更改。
我的主目錄中的文件和目錄的所有權是我的用戶和我的主要組,以 user:group 的形式表示。假設 Susan 正在管理 Delta 組,該組需要編輯一個名為 mynotes 的文件。你可以使用 chown 命令將該文件的用戶更改為 susan,組更改為 delta:
$?chown?susan:delta?mynotes ls?-l -rw-rw-r--.?1?susan?delta?0?Aug??1?12:04?mynotes
當給該文件設置好了 Delta 組時,它可以分配回給我:
$?chown?alan?mynotes $?ls?-l?mynotes -rw-rw-r--.?1?alan?delta?0?Aug??1?12:04?mynotes
給用戶后添加冒號(:),可以將用戶和組都分配回給我:
$?chown?alan:?mynotes $?ls?-l?mynotes -rw-rw-r--.?1?alan?alan?0?Aug??1?12:04?mynotes
通過在組前面加一個冒號,可以只更改組。現在,gamma 組的成員可以編輯該文件:
$?chown?:gamma?mynotes $?ls?-l -rw-rw-r--.?1?alan?gamma?0?Aug??1?12:04?mynotes
chown 的一些附加參數都能用在命令行和腳本中。就像許多其他 Linux 命令一樣,chown 有一個遞歸參數(-R),它告訴該命令進入目錄以對其中的所有文件進行操作。沒有 -R 標志,你就只能更改文件夾的權限,而不會更改其中的文件。在此示例中,假定目的是更改目錄及其所有內容的權限。這里我添加了 -v(詳細)參數,以便 chown 報告其工作情況:
$?ls?-l?.?conf .: drwxrwxr-x?2?alan?alan?4096?Aug??5?15:33?conf conf: -rw-rw-r--?1?alan?alan?0?Aug??5?15:33?conf.xml $?chown?-vR?susan:delta?conf changed?ownership?of?'conf/conf.xml'?from?alan:alan?to??susan:delta changed?ownership?of?'conf'?from?alan:alan?to??susan:delta
根據你的角色,你可能需要使用 sudo 來更改文件的所有權。
在更改文件的所有權以匹配特定配置時,或者在你不知道所有權時(例如運行腳本時),可以使用參考文件(--reference=RFILE)。例如,你可以復制另一個文件(RFILE,稱為參考文件)的用戶和組,以撤消上面所做的更改。回想一下,點(.)表示當前的工作目錄。
$?chown?-vR?--reference=.?conf
報告更改
大多數命令都有用于控制其輸出的參數。最常見的是 -v(--verbose)以啟用詳細信息,但是 chown 還具有 -c(--changes)參數來指示 chown 僅在進行更改時報告。chown 還會報告其他情況,例如不允許進行的操作。
參數 -f(--silent、--quiet)用于禁止顯示大多數錯誤消息。在下一節中,我將使用 -f 和 -c,以便僅顯示實際更改。
保持根目錄
Linux 文件系統的根目錄(/)應該受到高度重視。如果命令在此層級上犯了一個錯誤,則后果可能會使系統完全無用。尤其是在運行一個會遞歸修改甚至刪除的命令時。chown 命令具有一個可用于保護和保持根目錄的參數,它是 --preserve-root。如果在根目錄中將此參數和遞歸一起使用,那么什么也不會發生,而是會出現一條消息:
$?chown?-cfR?--preserve-root?alan?/ chown:?it?is?dangerous?to?operate?recursively?on?'/' chown:?use?--no-preserve-root?to?override?this?failsafe
如果不與 --recursive 結合使用,則該選項無效。但是,如果該命令由 root 用戶運行,則 / 本身的權限將被更改,但其下的其他文件或目錄的權限則不會更改:
$?chown?-c?--preserve-root?alan?/ chown:?changing?ownership?of?'/':?Operation?not?permitted [root@localhost?/]#?chown?-c?--preserve-root?alan?/ changed?ownership?of?'/'?from?root?to?alan
所有權即安全
文件和目錄所有權是良好的信息安全性的一部分,因此,偶爾檢查和維護文件所有權以防止不必要的訪問非常重要。chown 命令是 Linux 安全命令集中最常見和最重要的命令之一。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。