linux chgrp_Linux chgrp和newgrp命令简介

linux chgrp

在最近的文章中,我介绍了chown命令 ,该命令用于修改系统上文件的所有权。 回想一下,所有权是分配给对象的用户和组的组合。 chgrpnewgrp命令为管理需要维护组所有权的文件提供了其他帮助。

使用chgrp

chgrp命令仅更改文件的组所有权。 它与chown:<group>命令相同。 您可以使用:

 $ chown :alan mynotes 

要么:

 $ chgrp alan mynotes 

递归的

chgrp的一些其他参数在命令行和脚本中都可以使用。 就像许多其他Linux命令一样,chgrp具有递归参数-R 。 您将需要它来对目录及其内容进行递归操作,如下文所示。 我添加了-vverbose )参数,因此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 。 如果将此参数与根目录上的递归chgrp命令一起使用,则什么也不会发生,而是出现一条消息:


   
   
[ 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

不与递归结合使用时,该选项无效。 但是,如果该命令由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 。 如果您在没有“ preserve”选项的情况下运行上述命令,它将默认设置为“ no reserved”模式,并可能更改了不应更改的文件的权限:


   
   
[ 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会很方便。 假设您的Intranet服务器上有一个名为share的目录,不同的团队在该目录中存储营销照片。 该组是共享的 。 当不同的用户将文件放入目录时,文件的主要组可能会变得混乱。 每当添加新文件时,都可以通过将组设置为share来运行chgrp来纠正任何混淆:


   
   
$ 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命令在这种情况下很有用。 在任何用户将文件放入共享目录之前,他们可以运行命令newgrp share 。 这会将其主要组切换为共享,因此他们放入目录中的所有文件将自动具有组share ,而不是用户的主要组。 完成操作后,用户可以使用(例如)切换回其常规主要组:

 newgrp alan 

结论

了解如何管理用户,组和权限非常重要。 最好知道一些替代方法来解决可能遇到的问题,因为并非所有环境都以相同的方式设置。

翻译自: https://opensource.com/article/19/9/linux-chgrp-and-newgrp-commands

linux chgrp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值