管理本地用户和组

news2024/11/27 4:39:49

管理本地用户和组

在这里插入图片描述

描述用户和组

用户

用户账户用于运行命令的不同人员与程序之间提供安全界限。

使用id显示有关当前登录用户信息

[root@servera ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

查找其他用户基本信息

[root@servera ~]# id usr1
uid=1000(usr1) gid=1000(usr1) groups=1000(usr1)

查看文件所有者

[root@servera /]# ls -ld
dr-xr-xr-x. 17 root root 224 Jul 15 10:14 .

查看进程相关信息,使用ps命令 -u进程关联用户


[root@servera /]# ps -au
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         890  0.0  0.0   6916  1708 tty1     Ss+  23:00   0:00 /sbin/agetty -o -p -- \u --noclear tty1 l
root        1651  0.0  0.2  15120  3680 pts/0    Ss   23:01   0:00 -bash
root        1756  0.0  0.2  47636  3692 pts/0    R+   23:58   0:00 ps -au

组需要共享文件和其他系统资源访问权限的用户的集合。组可以用于向一组用户授予文件访问权限,而非一个用户授予访问权限。

系统通过分配的唯一标识好GID区分不同组,组名称到GID的映射在组账户信息数据库定义。默认情况存储在/etc/group


[root@servera ~]# head -n 1 /etc/group
root:x:0:
#被冒号分隔
#用户组名称:过时的组密码字段始终x:改组GID:作为补充组成员的用户列表

主要组和补充组

每个用户有且只有一个主要组。对于本地用户而言,按照/etc/passwd上的GID号列出。

创建新用户时,会创建一个与该用户同名的新组。该组用户新用户的主要组,而该用户是这一用户组唯一成员。

用户组也可以有补充组。补充组的资格由/etc/group确定。根据所在组是否具有访问权限啊,将授予用户对文件的访问权限。

获取超级用户访问权限

切换用户

su命令可以切换用户,普通用户运行su,系统会提示输入切换账户的密码,而root身份运行su,无需密码。

[root@servera ~]# su - tmpUsr
[tmpUsr@servera ~]$

[tmpUsr@servera ~]$ su - root
Password:
Last login: Mon Jul 17 02:34:36 EDT 2023 from 192.168.182.1 on pts/0
[root@servera ~]#


使用sudo运行命令

有时为安全,root用户可能没有有效的密码,这种情况下,用户无法使用密码直接以root身份登录系统,也不能使用su获取交互式shell。

sudo可以配置运行特定用户想其他用户一样运行命令,或仅运行该用户身份运行部分命令。且所有命令默认记录/var/log/secure


[root@servera ~]# tail /var/log/secure
Jul 17 02:34:59 servera sshd[6232]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jul 17 02:46:09 servera useradd[6282]: new group: name=tmpUsr, GID=1000
Jul 17 02:46:09 servera useradd[6282]: new user: name=tmpUsr, UID=1000, GID=1000, home=/home/tmpUsr, shell=/bin/bash
Jul 17 02:46:26 servera passwd[6289]: pam_unix(passwd:chauthtok): password changed for tmpUsr
Jul 17 02:46:36 servera su[6293]: pam_unix(su-l:session): session opened for user tmpUsr by root(uid=0)
Jul 17 02:46:59 servera su[6321]: pam_unix(su-l:session): session opened for user root by root(uid=1000)
Jul 17 02:54:47 servera su[6349]: pam_unix(su-l:session): session opened for user tmpUsr by root(uid=0)
Jul 17 02:55:11 servera sudo[6377]:  tmpUsr : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/tmpUsr ; USER=root ; COMMAND=/sbin/usermod -L root
Jul 17 02:56:49 servera sudo[6381]:  tmpUsr : user NOT in sudoers ; TTY=pts/0 ; PWD=/home/tmpUsr ; USER=root ; COMMAND=/bin/tail /var/log/secure
Jul 17 02:57:05 servera su[6385]: pam_unix(su:session): session opened for user root by root(uid=1000)

配置sudo

/etc/sudoers,如果多个管理员同时编辑该文件,为避免出现问题,只硬使用特殊的visudo命令进行编辑。


[root@servera ~]# cat /etc/sudoers | grep wheel
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
# %wheel        ALL=(ALL)       NOPASSWD: ALL

%wheel是规则适用的用户或组。%指定这是一个组,ALL=(ALL)指定在可能包含此文件的任何主机上,wheel可以运行任何命令。最后的ALL指定wheel可以在系统上的任何用户一样运行这些命令。

默认/etc/sudoers还包含/etc/sudoers.d目录中所有文件内容,作为配置文件的一部分。管理员只需将相应的文件放入该目录中,即可为用户添加sudo访问权限。

为用户tmpUsr启用完整的sudo权限,创建含有以下内容的/etc/sudoer.d/tmpUsr

tmpUsr	ALL=(ALL)	ALL

管理用户密码

阴影密码和密码策略

加密密码存储在全局可读/etc/passwd中,由于对于加密密码的攻击变得常见;加密密码被移动到只有root用户才能读取的/etc/shadow中,该文件也允许实施期限和到期时间。

[root@servera ~]# head -n 1 /etc/shadow
root:$6$Jbj1e1iV11tUoVKP$OpdEsyOvZ0vS0ndaXi06/2yPBFPJMOE6vkSoht0zeh8kPBAp9mFIqyHEv4BKsCCJk27RWC5kGlFH1pJicwywq.::0:99999:7:::
#
#用户名:加密密码:上次更改密码时间:自上次更改后可以再次更改必须经过的最短时间:密码过期之前不进行更改可以经过的最长时间:警告期(在密码过期前几天,登录会有提示):非活动期(一旦密码过期,在有些天内仍可以使用,之后账户被锁定):密码过期时间:留给未来使用

配置密码期限

使用chage命令

[root@servera ~]# chage -m 0 -M 90 -W 7 -I 14 tmpUsr


chage -d 0 tmpUsr #强制tmpUsr用户下次登录更新密码
chage -l tmpUsr #显示tmpUsr密码期限详情
chage -E 2011-08-05 tmpUsr #2011-08-05tmpUsr用户到期

#计算未来日期
[root@servera ~]# date
Mon Jul 17 05:21:39 EDT 2023
[root@servera ~]# date -d "+45 days" -u
Thu Aug 31 09:21:53 UTC 2023

编辑/etc/login.defs,设置密码期限策略


[root@servera ~]# cat /etc/login.defs | grep PASS_
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

限制访问

nologin shell 用作不打算通过交互式登录系统的用户账户代替shell。

[root@servera ~]# su - usr1
Last login: Mon Jul 17 05:57:24 EDT 2023 on pts/0
[usr1@servera ~]$ exit
logout

[root@servera ~]# usermod -s /sbin/nologin usr1
[root@servera ~]# su - usr1
Last login: Mon Jul 17 06:09:15 EDT 2023 on pts/0
This account is currently not available.

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

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

相关文章

[STM32教程]01如何开始准备hal库的开发环境

文章目录 概述1、认识硬件环境1.1 ARM简介1.2 STM32简介 2. 软件开发环境准备2.1 Keil MDK安装2.2 安装STM32Cube MX2.3 安装STM32 HAL库2.4 St-Link V2使用 总结 概述 本文介绍如何准备stm32f103的hal库工程开发环境,包括cubemx安装、keil mdk安装、stm32 hal库安…

小程序引入阿里云矢量图库图标

简介 阿里云矢量图库(Aliyun Vector Icon Library)是阿里云提供的一个图标库,为开发者和设计师提供了丰富的矢量图标资源,用于在网页、移动应用和其他设计项目中使用。 使用阿里云矢量图库,你可以快速搜索、选择和下…

如何设置反馈点

如何设置反馈点 前面的POWER DC仿真都是忽略反馈线进行的仿真,如果单板压降不过,电源会自动调整输出电压,来满足负载的得到额定的电压. 仿真上也可以自己添加反馈点,以得到抬高后的电源输出电压值 具体操作如下 同样以下图的CPU的Core电源为例 按照流程正常设置好参数

携程ANR 优化实践 - Binder开辟线程数过多导致主线程ANR异常

了解携程ANR前,我们一起了解 binder 线程池的前生今世 在android系统中,通过binder进行IPC时,服务端总是会起一些Binder线程来响应客户端的请求。这里面就涉及到通过BInder线程池 开辟binder线程 那这些Binder线程又是如何创建,如…

已解决YOLOv5训练报错:RuntimeError: Expected all tensors to be on the same device......

这是发生在集成一个yolov5中没有的检测头head的情况下发生的错误,出现的时候是已经训练起来了,在训练结束时发生的报错,下面是我的解决办法。 1、问题出现及分析排查 改yolov5的网络进行训练时出的报错: RuntimeError: Expected all tenso…

步进电机控制

步进电机控制 #include "./stepper/bsp_stepper_init.h" #include "./delay/core_delay.h" #include "stm32f4xx.h"void TIM_SetTIMxCompare(TIM_TypeDef *TIMx,uint32_t channel,uint32_t compare); void TIM_SetPWM_period(TIM_TypeDef* TI…

Python爬虫学习笔记(五)————JsonPath解析

目录 1.JSONPath —— xpath在json的应用 2.JSONPath 表达式 3.jsonpath的安装及使用方式 4.jsonpath的使用 5.JSONPath语法元素和对应XPath元素的对比 6.实例 (1)商店案例 (2) 解析淘票票的“城市选择”数据 1.JSONPath…

Java8实战-总结3

Java8实战-总结3 基础知识流多线程并非易事 默认方法 基础知识 流 几乎每个Java应用都会制造和处理集合。但集合用起来并不总是那么理想。比方说,从一个列表中筛选金额较高的交易,然后按货币分组。需要写一大堆套路化的代码来实现这个数据处理命令&…

cocos creator Richtext点击事件

组件如图 添加ts自定义脚本,定义onClickFunc点击方法: import { Component, _decorator} from "cc";const { ccclass } _decorator; ccclass(RichTextComponent) export class RichTextComponent extends Component{public onClickFunc(even…

reggie优化02-SpringCache

1、SpringCache介绍 2、SpringCache常用注解 package com.itheima.controller;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.itheima.entity.User; import com.itheima.service.UserService; import lombok.extern.slf4j.Slf4j; imp…

Mybatis:传参+提交事务(自动or手动)+sql多表关联查询(两种方法)

目录 一、参数两种类型: 二、传参的几种方法: 三、提交事务 四、sql多表关联查询(两种方法) 一、参数两种类型: 1.#{参数}:预编译方式,更安全,只用于向sql中传值; select * from admin w…

getattr, __getattr__, __getattribute__和__get__区别

一、getattr() 和另外三个方法都是魔法函数不同的是,getattr()是python内置的一个函数,它可以用来获取对象的属性和方法。例子如下: class A():a 5def __init__(self, x):self.x xdef hello(self):return hello funca A(10)print(getattr(a, x)) #…

2023 双非本科三个月互联网找实习心路历程

双非本科三个月互联网找实习心路历程 1、实习面试准备2、面试日历(1)开发投递(2)线下宣讲(3)转投测试,机会多多 3、同窗现状4、货拉拉 offer 的故事5、我的闲言6、我的收获(1)勇气&a…

2.5 线性表的建表

1. 顺序表建表 #include <iostream>/// <summary> /// 数组最大长度 /// </summary> const int MAX_SIZE 10;/// <summary> /// 顺序表建表 /// </summary> /// <param name"arr">数组</param> /// <param name"…

万达商管IPO:看似轻舟已过万重山,实则负重前行?

近日&#xff0c;继万达商管债券发行计划被终止、证监会质疑万达商场销售数据真实性、珠海万达商管的股权被法院冻结后又解冻&#xff0c;万达商管又遇“水逆”——惠誉发布报告下调万达商管的评级&#xff0c;并认为珠海万达商管可能无法在2023年底前完成上市。 纷至沓来的负…

什么是链路跟踪 Skywarking

什么是链路跟踪 Skywarking 链路跟踪&#xff08;Link Tracing&#xff09;是一种用于追踪分布式系统中请求路径和性能的技术。SkyWalking 是一个开源的 APM&#xff08;Application Performance Monitoring&#xff09;系统&#xff0c;它提供了链路跟踪功能。 SkyWalking 的…

ceph----应用

文章目录 一、创建 CephFS 文件系统 MDS 接口1.1 服务端操作1.2 客户端操作 二、创建 Ceph 块存储系统 RBD 接口三、OSD 故障模拟与恢复 一、创建 CephFS 文件系统 MDS 接口 1.1 服务端操作 1&#xff09;在管理节点创建 mds 服务 cd /etc/ceph ceph-deploy mds create node0…

Java编程-基本排序算法

冒泡排序 图解 &#xff08;注&#xff1a;图片来源网络&#xff09; Java代码 package suanfa_Ja;import org.apache.hadoop.security.SaslOutputStream;// 基本排序算法&#xff0c;冒泡排序 时间复杂度 O(n^2) 空间复杂度O(1) public class BubbleSort {public static v…

blender 建模马拉松

效果展示 蘑菇模型创建&#xff1a; 创建蘑菇头 shift A &#xff0c;创建立方体&#xff1b; 右下工具栏添加细分修改器&#xff08;视图层级&#xff1a;2&#xff0c;渲染&#xff1a;2&#xff09;&#xff1b;tab键进入编辑模式&#xff0c;alt z 进入透显模式&…

Python项目依赖项管理的秘诀:requirements.txt文件

一、背景 公司里面很多时候我们开发的Python项目都不只是我们一个人使用&#xff0c;而是整体团队使用。Python项目需要在别人的电脑环境中运行&#xff0c;则需要别人的电脑环境中也要安装上我们项目需要的python库。那么项目中到底用到了哪些Python库&#xff0c;每个库具体…