C SHELL - 修改默认群组

54 篇文章 22 订阅

C SHELL - 修改默认群组

需求描述

用户发现有些存储有16群组数量的限制,不改变存储与挂载的情况下,排在17th以及以后的群组如何能提前使得用户有权限访问对应的项目数据?

需求分析

将需求总结一下:如何修改默认群组?

需求解决

方式一
假设用户信息存储在域控,并且服务器使用该域控进行认证,则在域控修改对应的default shell信息即可;

方式二
假设用户信息存储在本机,并且服务器使用本机认证,则修改/etc/passwd对应条目中的default shell信息即可;

方式三
假设因各种原因,用户无法(或无法立即)修改,则可以在自己的初始化文件中,加上一段切换群组的代码,以使得新shell下的primary group是自己期望的group。以C SHELL为例,我预期的group名称为stapusr,则在.cshrc中添加以下代码

set current_group=`id -g -n`
set expect_group="stapusr"
if ( $current_group != $expect_group ) then
    echo "Changing group with newgrp."
    newgrp $expect_group
endif
unset current_group expect_group

值得注意的是,我们在这里判断了是否已是期望群组,如果是否则执行newgrp命令。为什么我们要做这个判断?我们查看以下newgrp命令手册,
在这里插入图片描述重点是log in,它是一个登陆shell(是已有进程的子进程),登陆时会读取对应的初始化文件。如C SHELL就会读取~/.cshrc文件。假设没有判断,则登陆时,newgrp执行log in,log in会读取~/.cshrc,读取这个文件又执行newgrp命令log in,如此反复。直到进程数量达到上限或者堆栈溢出,或者shell自有的报错。

报错示例

假设在~/.cshrc文件中只加newgrp stapusr,将导致报错,如下所示
在这里插入图片描述

参考文档

  • newgrp手册。

相关文章

  • 存储16群组限制的解决方法: https://blog.csdn.net/thesre/article/details/116947637
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王万林 Ben

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值