Linux 命令速查
用户权限 man newgrp

newgrp

以新的主组身份启动一个 shell。

返回

补充说明

newgrp 用于临时切换当前会话的主组(primary group),它会启动一个新的 shell,并把该 shell 的 GID 设为指定组。退出新 shell 后回到原来的环境。

不指定组时,newgrp 使用 /etc/passwd 中为该用户记录的主组。使用 - 参数会像登录 shell 一样重新初始化环境。切换后新创建的文件将属于新的组,这对共享目录协作很有用。

如果用户不是目标组的成员,系统会要求输入组密码(保存在 /etc/gshadow)。出于安全考虑,现代发行版通常不建议设置组密码,而是直接把用户加入附加组(usermod -aG),再用 newgrp 激活。

语法

newgrp [-] [组] [[-c] 命令]

选项

  • -:以登录 shell 方式启动,重置环境
  • -c 命令:在新组身份下执行命令后退出(util-linux 版本支持)

实例

# 切换到 developers 组,进入新的 shell
newgrp developers

# 以登录 shell 方式切换
newgrp - developers

# 临时以新组身份执行命令
newgrp developers -c "touch shared/newfile && ls -l shared/newfile"

# 查看当前主组与附加组
id
newgrp developers -c id

# 退出新 shell 回到原环境
exit

注意事项

  • newgrp 启动的是子 shell,未导出的 shell 变量不会保留。
  • 只有组成员或知道组密码的人才能切换。
  • 需要长期生效请修改用户的主组或用 sg/newgrp 临时激活附加组。

参考链接