Linux命令学习—linux 下的用户和组的管理(下)

1.2、组的管理

1.2.1、组相关文件介绍

①、/etc/group

       用户组的特性在系统管理中为系统管理员提供了极大的方便,但安全性也是值得关注的,如某个用户 下有对系统管理有最重要的内容,最好让用户拥有独立的用户组,或者是把用户下的文件的权限设置为完 全私有;另外 root 用户组一般不要轻易把普通用户加入进去。

/etc/group 内容具体分析
/etc/group 的内容包括用户组(Group)、用户组口令、GID 及该用户组所包含的用户(User)
每个用户组一条记录;格式如下: group_name:passwd:GID:user_list 

在/etc/group 中的每条记录分四个字段:

第 1 字段:用户组名称;

第 2 字段:用户组密码;

第 2 字段:用户组密码;

第 3 字段:GID

第 4 字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为 GID 的用 户名;

root : x : 0 :root,rose 
root 组 x 是密码段 GID 是 0 root 用户组下包括 root、rose 以及 GID 为 0 的其它用户(可以通过 /etc/passwd 查看)

②、/etc/gshadow

         /etc/gshadow 是/etc/group 的密码文件,用户组(Group)管理密码就是存放在这个文件 。 /etc/gshadow 和/etc/group 是互补的两个文件;对于大型服务器,针对很多用户和组,定制一些关系结 构比较复杂的权限模型,设置用户组密码是极有必要的。比如我们不想让一些非用户组成员永久拥有用户 组的权限和特性,这时我们可以通过密码验证的方式来让某些用户临时拥有一些用户组特性,这时就要用 到用户组密码;

/etc/gshadow 格式如下,每个用户组独占一行;
groupname:password:admin,admin,...:member,member,...
第 1 字段:用户组
第 2 字段:用户组密码,这个段可以是空的或!,如果是空的或有!,表示没有密码;
第 3 字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割;
第 4 字段:组成员,如果有多个成员,用,号分割;
jake:!::rose
rose:oUS/q7NH75RhQ::rose
第一字段:这个例子中,有两个用户组 jake 用 rose
第二字段:用户组的密码,jake 用户组无密码;rose 用户组有已经,已经加密;
第三字段:用户组管理者,两者都为空;
第四字段:jake 用户组所拥有的成员是 rose,rose 用户组有成员 rose

1.2.2、组的管理

①、groupadd 添加用户组

-g 指定 GID
-o 一般和 g 选项同时使用,可以与已有组的 GID 相同
groupadd -go 501 g1 创建组 g1 其 GID 可以与已有的组重复

②、gpasswd 设置用户组的密码

一般的情况下,没有必要设置用户组的密码;
gpasswd rose 修改 rose 组的密码

③、groupdel 删除用户组

groupdel g1 删除 g1 组(没有用户的空组)

④、groupmod 修改组属性

-g 指定新的 GID
-o 与-g 配合使用同 groupadd 的-o
-n 修改组名
groupmod -g 601 g1 修改 g1 的 GID 为 601
groupmod -n g11 g1 将 g1 组改名为 g11

⑤、newgrp 切换用户组

newgrp root 切换到 root 组

1.3、普通用户权限提升

1.3.1、su 切换用户命令

su 直接默认切换到 root 用户
su - root 更改环境变量为 root 用户的
su -m root 保留环境变量不变
su -c “/usr/sbin/useradd u1” root 以 root 的身份执行 useradd 命令,-c 代表执行一个命令后就结束。其中命令需要输入命令文件的绝对路径。

1.3.2、sudo 命令

       由于 su 对转换到 root 后,权限的无限制性,所以 su 并不能担任多个管理员所管理的系统。假如用 su 来转换到 root 来管理系统,也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有 多人参和管理时,最好是针对每个管理员的技术特长和管理范围,并且有针对性的下放给权限,并且约定 其使用哪些工具来完成和其相关的工作,这时我们就有必要用到 sudo。

        通过 sudo,我们能把某些 root 有针对性的下放,并且无需普通用户知道 root 密码,所以 sudo 相对 于权限无限制性的 su 来说,还是比较安全的,所以 sudo 也能被称为受限制的 su ;另外 sudo 是需要授 权许可的,所以也被称为授权许可的 su;

        sudo 执行命令的流程是当前用户转换到 root(或其他指定转换到的用户),然后以 root(或其他指 定的转换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过 sudo 的 配置文档/etc/sudoers 来进行授权;

visudo 来增加一行
u1 ALL=(root) NOPASSWD:/bin/cat u1 用户可以转换到 root 下不需要输入密码执行/bin/cat 命令
u1 ALL=(root)/bin/cat,/user/bin/passwd,!/user/bin/passwd root
u1 用户可以转换到 root 下需要输入密码执行/bin/cat,/user/bin/passwd,但不能执行/user/bin/passwd root 来修改用户密码。
执行 sudo 命令
sudo -l 列出用户在主机上可用的和被禁止的命令
sudo 命令(命令为绝对路径)来执行命令
sudo /bin/cat /etc/shadow

1.4、磁盘配额

windows 不能对组进行配额设置,而 linux 可以对组进行配额限制。

1.4.1、vi /etc/fstab 文件

       将要设置配额的分区设置开机自动挂载在添加行在 defaults 后面加上,usrquota(grpquota)表示要建 立用户或组的磁盘配额。

1.4.2、重新挂载文件系统

之前重启看效果,可以使用 umount -a 卸载所有文件挂载,然后使用 mount -a 挂载所有文件系统

1.4.3、在挂载目录下创建 aquota.user 文件

在挂载目录下执行 touch aquota.user

通常要对该文件配置权限,防止用户随便访问。

1.4.4、进行配额检查

执行 quotacheck -avu(g)(g 是启用组配额)

1.4.5、设置用户磁盘配额

执行 edquota -u rose
默认使用 vi 编辑 rose 用户的配额文件
filesystem blocks soft hard inodes soft hard 
/dev/sdb1 4 0 0 1 0 0

4 个数据块和 1 个 inodes

软极限和硬极限讲解(结合 windows 中的配额提醒来讲)

如果设置宽限时间,可以让用户在规定的时间内可以超过软极限,但必须在硬极限之内。

1.4.6、设置宽限时间

edquota -t 编辑时间。

1.4.7、启用配额

quotaon /qt(配额目录)

1.4.8、进行配额测试

创建文件,占用磁盘空间,然后超过软极限,看提醒,然后再超过硬极限,看效果

如果要对其他用户设置相同的配额,可以复制配额

edquota -up rose u1 u2 u3

如果要使配额每次启动生效,可以将配额检查和激活命令放在默认/etc/rc.d/rc.sysinit 启动脚本中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815309.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go程序设计语言 学习笔记 第十一章 测试

1949年,EDSAC(第一台存储程序计算机)的开发者莫里斯威尔克斯在他的实验室楼梯上攀登时突然领悟到一件令人震惊的事情。在《一位计算机先驱的回忆录》中,他回忆道:“我突然完全意识到,我余生中的很大一部分时…

SpringCloudalibaba之Nacos的配置管理

Nacos的配置管理 放个妹子能增加访问量? 动态配置服务 动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。 动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。 配置中心化管…

Redis: 内存回收

文章目录 一、过期键删除策略1、惰性删除2、定时删除3、定期删除4、Redis的过期键删除策略 二、内存淘汰策略1、设置过期键的内存淘汰策略2、全库键的内存淘汰策略 一、过期键删除策略 1、惰性删除 顾名思义并不是在TTL到期后就立即删除,而是在访问一个key的时候&…

计算机网络----第十二天

交换机端口安全技术和链路聚合技术 1、端口隔离技术: 用于在同vlan内部隔离用户; 同一隔离组端口不能通讯,不同隔离组端口可以通讯; 2、链路聚合技术: 含义:把连接到同一台交换机的多个物理端口捆绑为一个逻辑端口…

武林风云之一个shell同时维护多个设备

仅以此文纪念linux中国 小y最近真的颓废了,马上就三十了,一下班整个人跟个废物一样,躺在住处刷B站,太颓废了。哎,我想这今年就收手博客了,后续不再更新。但是人不能这样,人需要和懒惰做斗争&…

Python学习笔记25 - 一些案例

1. 输出金陵前五钗 2. 向文件输出信息 3. 打印彩色字 4. print函数、进制转换 5. 猜数游戏 6. 输出ASCII码对应的字符 7. 计算100~999之间的水仙花数 8. 千年虫数组的索引及其值 9. 星座zip dict 10. 12306车次信息 11. 字符串的格式化 12. 手动抛出异常 13. 计算圆的面积和周长…

源码安装 clr - hip runtime

1,下载 HIP 源代码 git clone --recursive https://github.com/ROCm/HIP.git cd HIP/ git checkout rocm-6.0.2 pwd export HIP_COMMON_DIR${PWD} cd ../ 2,下载 clr 源码 git clone --recursive https://github.com/ROCm-Developer-Tools/clr.git cd c…

杰发科技AC7840——CAN通信简介(4)_过滤器设置

0. 简介 注意:过滤器最高三位用不到,因此最高位随意设置不影响过滤器。 1. 代码分析 注意设置过滤器数量 解释的有点看不懂 详细解释...也看不大懂 Mask的第0位是0,其他位都是1(就是F?),那就指定了接收值就是这个数,…

Qt状态机

基本概念 QStateMachine:管理一组状态和转换的状态机。QState:表示状态机中的一个状态。QSignalTransition:根据发射的信号触发状态之间的转换。 示例逻辑 假设您有三个主要状态:值守(Daemon)、做样&…

小程序 安卓连接wifi成功,提示消息为失败

解决方案: forceNewApi: true, uni.connectWifi({forceNewApi: true,SSID: this.SSID,password: this.password,success: (res) > {console.log(res, "连接成功");},fail: (err) > {console.log(err);},}); 加上这话就返回正常数据了

版本控制工具Git的使用

1、Git的基本概念和使用 1、Git是什么? ● Git: 是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 ● GitHub: 全球最大的面向开源及私有软件项目的托管平台,免费注册并且可以免费托管开源代码。 ● GitLab:与GitHub类似&a…

二分查找的边界问题是怎么产生的?

总结:二分查找的目标有两个,一个是左区件的右边界,一个是右区间的左边界 如何去理解二分的过程? 如果要查找的是左区间的右边界: 可以将[l, r]理解一个集合,这个集合范围内的数都有可能是最后需要得到的…

打不动的蓝桥杯

打不动的蓝桥杯 2024-4-13 今天的蓝桥杯打得很烂,8题写了4题,100分可能有20来分吧。我写了的题好像都很简单,没什么竞争力。又觉得我知道的东西不止这么点,没能发挥。 这次比赛,首先,有强烈的陌生感。pytho…

【C++核心】C++中的对象

C中的对象 一、对象的初始化和清理1. 构造函数和析构函数1.1 构造函数简介1.2 构造函数1.3 析构函数1.4 代码样例1.5 默认实现 2. 构造函数的分类及调用2.1 构造函数的分类2.2 构造函数的调用方式2.3 匿名函数 3. 拷贝构造函数调用时机4. 构造函数的规则5. 深拷贝和浅拷贝6. 初…

ChatGLM3初体验

mac本地化部署ChatGLM3 写在前面环境准备1. python环境2. 安装第三方依赖torch3.下载模型 代码准备1.clone代码 run效果 写在前面 建议直接去看官方文档 https://github.com/THUDM/ChatGLM3?tabreadme-ov-file 环境准备 1. python环境 python -V ## 3.11.42. 安装第三方依…

标注平台工作流:如何提高训练数据质量与管理效率

世界发展日益依托数据的驱动,企业发现,管理不断增长的数据集却愈发困难。数据标注是诸多行业的一个关键过程,其中包括机器学习、计算机视觉和自然语言处理。对于大型语言模型(LLM)来说尤是如此,大型语言模型…

前端面试问题汇总 - Vue篇

1. Vue 的生命周期有哪些,每个阶段分别做什么操作? beforeCreate: 在实例初始化之后、数据观测和事件配置之前被调用。此时数据对象 data 和事件(methods)都还未初始化。一般不在此阶段进行数据初始化和 DOM 操作。cre…

为什么我们应该切换到Rust

What is RUST? 什么是Rust? Rust is a programming language focused on safety, particularly safe concurrency, supporting functional and imperative-procedural paradigms. Rust is syntactically similar to C, but it provides memory safety without usi…

[大模型]Yi-6B-chat WebDemo 部署

Yi-6B-chat WebDemo 部署 Yi 介绍 由60亿个参数组成的高级语言模型 Yi LLM。为了促进研究,Yi 已经为研究社区开放了Yi LLM 6B/34B Base 和 Yi LLM 6B/34B Chat。 环境准备 在autodl平台中租一个3090等24G显存的显卡机器,如下图所示镜像选择PyTorch–…

leecode438 | 找到所有字符串中的异位词

题意大致是&#xff0c;给定两个字符串&#xff0c;s 和 p 其中 要在s 中找到由p的元素组成的子字符串&#xff0c;记录子字符串首地址 class Solution { public:vector<int> findAnagrams(string s, string p) {int m s.size(), n p.size();if(m < n)return {};vec…