Linux中國

chgrp 和 newgrp 命令簡介

在最近的一篇文章中,我介紹了 chown 命令,它用於修改系統上的文件所有權。回想一下,所有權是分配給一個對象的用戶和組的組合。chgrpnewgrp 命令為管理需要維護組所有權的文件提供了幫助。

使用 chgrp

chgrp 只是更改文件的組所有權。這與 chown :<group> 命令相同。你可以使用:

$chown :alan mynotes

或者:

$chgrp alan mynotes

遞歸

chgrp 和它的一些參數可以用在命令行和腳本中。就像許多其他 Linux 命令一樣,chgrp 有一個遞歸參數 -R。如下所示,你需要它來對文件夾及其內容進行遞歸操作。我加了 -v(詳細)參數,因此 chgrp 會告訴我它在做什麼:

$ 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
# chgrp -vR delta conf
changed group of &apos;conf/conf.xml&apos; from alan to delta
changed group of &apos;conf&apos; from alan to delta

參考

當你要更改文件的組以匹配特定的配置,或者當你不知道具體的組時(比如你運行一個腳本時),可使用參考文件 (--reference=RFILE)。你可以複製另外一個作為參考的文件(RFILE)的組。比如,為了撤銷上面的更改 (請注意,點 . 代表當前工作目錄):

$ chgrp -vR --reference=. conf

報告更改

大多數命令都有用於控制其輸出的參數。最常見的是 -v 來啟用詳細信息,而且 chgrp 命令也擁有詳細模式。它還具有 -c--changes)參數,指示 chgrp 僅在進行了更改時報告。chgrp 還會報告其他內容,例如是操作不被允許時。

參數 -f--silent--quiet)用于禁止顯示大部分錯誤消息。我將在下一節中使用此參數和 -c 來顯示實際更改。

保持根目錄

Linux 文件系統的根目錄(/)應該受到高度重視。如果命令在此層級犯了一個錯誤,那麼後果可能是可怕的,並會讓系統無法使用。尤其是在運行一個會遞歸修改甚至刪除的命令時。chgrp 命令有一個可用於保護和保持根目錄的參數。它是 --preserve-root。如果在根目錄中將此參數和遞歸一起使用,那麼什麼也不會發生,而是會出現一條消息:

[root@localhost /]# chgrp -cfR --preserve-root a+w /
chgrp: it is dangerous to operate recursively on &apos;/&apos;
chgrp: use --no-preserve-root to override this failsafe

不與遞歸(-R)結合使用時,該選項無效。但是,如果該命令由 root 用戶運行,那麼 / 的許可權將會更改,但其下的其他文件或目錄的許可權則不會被更改:

[alan@localhost /]$ chgrp -c --preserve-root alan /
chgrp: changing group of &apos;/&apos;: Operation not permitted
[root@localhost /]# chgrp -c --preserve-root alan /
changed group of &apos;/&apos; from root to alan

令人驚訝的是,它似乎不是默認參數。而選項 --no-preserve-root 是默認的。如果你在不帶「保持」選項的情況下運行上述命令,那麼它將默認為「無保持」模式,並可能會更改不應更改的文件的許可權:

[alan@localhost /]$ chgrp -cfR alan /
changed group of &apos;/dev/pts/0&apos; from tty to alan
changed group of &apos;/dev/tty2&apos; from tty to alan
changed group of &apos;/var/spool/mail/alan&apos; from mail to alan

關於 newgrp

newgrp 命令允許用戶覆蓋當前的主要組。當你在所有文件必須有相同的組所有權的目錄中操作時,newgrp 會很方便。假設你的內網伺服器上有一個名為 share 的目錄,不同的團隊在其中存儲市場活動照片。組名為 share。當不同的用戶將文件放入目錄時,文件的主要組可能會變得混亂。每當添加新文件時,你都可以運行 chgrp 將錯亂的組糾正為 share

$ cd share
ls -l
-rw-r--r--. 1 alan share 0 Aug  7 15:35 pic13
-rw-r--r--. 1 alan alan 0 Aug  7 15:35 pic1
-rw-r--r--. 1 susan delta 0 Aug  7 15:35 pic2
-rw-r--r--. 1 james gamma 0 Aug  7 15:35 pic3
-rw-rw-r--. 1 bill contract  0 Aug  7 15:36 pic4

我在 chmod 命令的文章中介紹了 setgid 模式。它是解決此問題的一種方法。但是,假設由於某種原因未設置 setgid 位。newgrp 命令在此時很有用。在任何用戶將文件放入 share 目錄之前,他們可以運行命令 newgrp share。這會將其主要組切換為 share,因此他們放入目錄中的所有文件都將有 share 組,而不是用戶自己的主要組。完成後,用戶可以使用以下命令切換回常規主要組(舉例):

newgrp alan

總結

了解如何管理用戶、組和許可權非常重要。最好知道一些替代方法來解決可能遇到的問題,因為並非所有環境都以相同的方式設置。

via: https://opensource.com/article/19/9/linux-chgrp-and-newgrp-commands

作者:Alan Formy-Duval 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國