C SHELL - 修改默认群组

2024-03-29 07:32
文章标签 shell 默认 修改 群组

本文主要是介绍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 ) thenecho "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 - 修改默认群组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/857988

相关文章

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

shell中set -u、set -x、set -e的使用

《shell中set-u、set-x、set-e的使用》本文主要介绍了shell中set-u、set-x、set-e的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录✅ 1. set -u:防止使用未定义变量 作用: 示例:❌ 报错示例输出:✅ 推荐使用场景:✅ 2. se

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.