chgrp 和 newgrp 命令簡介
chgrp 和 newgrp 命令可幫助你管理需要維護組所有權的檔案。
在最近的一篇文章中,我介紹了 chown 命令,它用於修改系統上的檔案所有權。回想一下,所有權是分配給一個物件的使用者和組的組合。chgrp
和 newgrp
命令為管理需要維護組所有權的檔案提供了幫助。
使用 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 'conf/conf.xml' from alan to delta
changed group of 'conf' 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 '/'
chgrp: use --no-preserve-root to override this failsafe
不與遞迴(-R)結合使用時,該選項無效。但是,如果該命令由 root
使用者執行,那麼 /
的許可權將會更改,但其下的其他檔案或目錄的許可權則不會被更改:
[alan@localhost /]$ chgrp -c --preserve-root alan /
chgrp: changing group of '/': Operation not permitted
[root@localhost /]# chgrp -c --preserve-root alan /
changed group of '/' from root to alan
令人驚訝的是,它似乎不是預設引數。而選項 --no-preserve-root
是預設的。如果你在不帶“保持”選項的情況下執行上述命令,那麼它將預設為“無保持”模式,並可能會更改不應更改的檔案的許可權:
[alan@localhost /]$ chgrp -cfR alan /
changed group of '/dev/pts/0' from tty to alan
changed group of '/dev/tty2' from tty to alan
changed group of '/var/spool/mail/alan' 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
訂閱“Linux 中國”官方小程式來檢視
相關文章
- Linux基礎命令---chgrpLinux
- 每天一個 Linux 命令(29): chgrp 命令Linux
- chown 命令簡介
- lsof命令簡介
- nc命令簡介
- Cellcli命令簡介
- fortune 命令簡介
- crontab命令簡介
- Git命令簡介Git
- crontab命令簡介(zt)
- Redis Sort 命令簡介Redis
- G++命令簡介
- crontab命令簡介(轉)
- 簡單介紹 ldd 命令
- powermt 命令簡介(轉載)
- 【系統】lsof命令簡介
- linux tar命令簡介Linux
- 【系統】lsof 命令簡介
- Linux lsof 命令簡介Linux
- adb命令使用簡介
- KVM常用命令簡介
- Linux cgroups 命令簡介Linux
- 【Oracle】lsnrctl reload 命令簡介Oracle
- fuser與lsof命令使用簡介
- TUXEDO 管理命令簡介--轉載UX
- Linux/UNIX命令dd簡介Linux
- pop3命令簡介(轉)
- 簡單批處理內部命令簡介
- HTTP介紹和HTML簡介HTTPHTML
- Linux的命令列介面簡介Linux命令列
- 檔案拆分命令 split 使用簡介
- AIX系統級命令簡介(轉)AI
- Hashtable簡介和使用
- RubyGems簡介和使用
- AIX中find命令和xargs命令介紹AI
- linux命令下jq的用法簡介Linux
- adb簡介及常用命令
- mvn相關介紹和命令