C SHELL - 修改默认群组
Posted 王万林 Ben
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C SHELL - 修改默认群组相关的知识,希望对你有一定的参考价值。
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
以上是关于C SHELL - 修改默认群组的主要内容,如果未能解决你的问题,请参考以下文章
usermod命令,用户密码管理,mkpasswd随机生成密码
修改shell 将当前shell(默认是bash B SHELL )改为csh C SHELL
3.4 usermod命令 3.5 用户密码管理 3.6 mkpasswd命令
/etc/profile和/etc/bashrc、~/.bash_profile和~/.bashrc、.zshrc和.zprofile的区别