运维Linux系统中的用户管理

一、用户及用组存在的意义

1)用户存在的意义

系统资源是有限的,如何合理的分配系统资源?

在这个问题解决时必须要有连个资源配合

1.身份        account

2.授权        author

3.认证        auth

3A机制,3A机制组成系统中最底层的安全架构

2)用户组存在的意义

用户组是一个逻辑容器,对用户进行归类和统一授权

二、用户及用户组在系统中存在方式

电脑对数字敏感              id

人类对字符串敏感          名称

id  <-------->名称 必须要记录到文件当中用户才能存在用户就是/etc/passwd文件中的一行字符

 

用户组存在的方式就是/etc/group 文件中的一行字符

三、用户切换

1)用户查看

whoami                  

#查看当前用户

id                            

#查看当前用户id信息

id -u                        

#查看用户的用户id

id -g                        

#查看用户主组id

id -G                        

#查看用户所有组的id

id -n                         

#显示名称

2)用户切换

su - username

-                              #切换用户身份

username

#如果root----->commounuser                 不需要后者密码

#commounuser------->root                      需要密码

#commounuser-------->commounuser     需要密码

注意:在做用户切换时当使用完用户身份及时退出,不要在一个系统中反复执行su - 命令,在一个shell中反复执行会导致环境错乱

四、用户涉及到的系统配置文件

/etc/passwd

#用户身份信息文件

(用户名称:用户密码:用户id:用户主组id:用户说明:用户家目录:用户默认shell)

/etc/group

#组身份信息文件 (组名称:组密码:组id:组附加成员)

/etc/skel/.*

#用户环境配置文件模板

/etc/shadow

#用户认证信息文件

/home/username

#用户家目录

五、用户和用户组建立及删除

监控用户建立的命令

watch -n 1 "tail -n 4 /etc/passwd /etc/group;ls -l /home

1、useradd username

#用户的建立

useradd -u id username

#指定ui d

useradd -g id username

#指定主组id

useradd -G

#附加组id

useradd -d dir

#指定用户的家目录

useradd -c word

#指定用户说明

useradd -s shell 

#指定用shell        ##/sbin/nologin   不可登陆的shell

useradd -M

#不创建家目录

 

 

2、userdel  -r username

#用户的删除

##uid   2**16=0-65535

##0   表示超级用户

##1-200   系统预留id

##201-999    系统用户

##1000-60000   用户级用户

##/etc/longin.defs  记录用户建立的默认规则

 

3、groupadd username

#用户组的建立

groupadd -g 666 username

#指定建立组id

4、groupdel username

#删除组id

六、用户和用户组的信息管理

usermod -l    #更改用户名称

usermod -u  #更改用户的id

usermod -g   #更改主组id

usermod -G   #更改用户附加组身份

usermod -aG  #添加用户附加组身份

usermod -c    #更改用户说明

usermod -d    #更改家目录指向

usermod -md  #更改家目录指向同时更改家目录名称

usermod -s    #更改默认shell

usermod -L   #冻结账号

usermod -U   #解锁

groupmod -g   #更改用户组id

七、用户认证信息管理

1)用户名称

passwd -s westos            

##查看密码状态

2)用户加密字符

更改密码

passwd westos                             ###只有root用户可以执行“echo 123 | passwd --stdin westos”

passwd                                         ##普通用户改密码

Changing passwd for user westos

Current passwd :输入原始密码

New passwd:输入新密码

Retype new passwd :

passwd: all authentication tokens updated successfully.

#冻结认证

passwd -l westos

#冻结账号认证

passwd -u westos

##解锁账号认证

密码删除:passwd -d westos

#密码使用天数

*从1970/1/1算到今天天数

passwd -e westos              

passwd -e 0 westos              登陆用户后会被强制改密码、

chage -d 0 westos

#密码最短有效期

passwd -n 数字 westos                   

chage -m 数字 westos

#密码最长有效期

passwd -x westos

chage -M westos

#非活跃天数

passwd -i

chage -I

#警告期

passwd -w

chage -W

#账号到期时间

passwd -E 2020-11-11

八、用户权力的下放

普通用户授权方法“sudo”   作用:可以使普通用户使用特定的身份运行命令

授权方法:visudo     #此命令作用是编辑/etc/suders并提供语法检测   在文件100行左右写入

用户名字                           主机                                                免密                     执行命令

测试:

su - westosamdin

sudo wseradd username       ####在第一次使用时需要输入密码

 

### 回答1: 在STM32HAL中,串口中断接收不定度的数据可以通过以下方法实现。 首先,我们可以使用HAL中的`HAL_UART_Receive_IT`函数来启动串口接收中断,并设置接收缓冲区接收度。例如,可以使用以下代码初始化串口接收: ```c uint8_t RxBuffer[100]; // 接收缓冲区 uint16_t RxSize; // 接收度 // 启动串口接收中断 HAL_UART_Receive_IT(&huart1, RxBuffer, 1); ``` 接下来,在串口接收中断处理函数`USART1_IRQHandler`中,可以通过获取接收数据的度,并根据需求进行处理。例如,可以使用以下代码获取接收度和处理接收数据: ```c void USART1_IRQHandler(void) { // 判接收中断标志是否置位 if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) != RESET) { // 清除接收中断标志 __HAL_UART_CLEAR_FLAG(&huart1, UART_FLAG_RXNE); // 接收数据 RxSize++; HAL_UART_Receive_IT(&huart1, &RxBuffer[RxSize], 1); // 处理接收数据 if (RxSize >= 10) { // 处理接收到的完整数据 // ... // 重置接收度和缓冲区 RxSize = 0; memset(RxBuffer, 0, sizeof(RxBuffer)); } } } ``` 在上述代码中,每次接收到一个字节的数据后,会增加接收度`RxSize`的值,并继续启动下一次接收中断。当接收度达到我们需要的度(例如10个字节)时,可以进行相应的处理逻辑,并重置接收度和缓冲区,以准备接收下一组数据。 通过以上方法,我们可以实现串口中断接收不定度的数据。根据不同的需求,可以灵活调整接收度和处理逻辑来适应具体的应用场景。 ### 回答2: STM32HAL是STMicroelectronics推出的一套针对STM32系列微控制器的硬件抽象层。在使用STM32HAL时,我们可以通过使用串口中断来实现串口的不定接收。 在串口中断接收不定度的数据时,我们首先需要初始化串口以及中断设置。通过配置串口的波特率、数据位、停止位、校验位等参数,可以保证串口的正常工作。同时,我们还需要配置NVIC(Nested Vectored Interrupt Controller)中断控制器,使得串口接收中断能够正确触发。 接下来,在串口接收中断服务函数中,我们可以通过检查USART接收缓冲区是否空来确定是否有数据接收。如果接收缓冲区空,则可以读取接收到的数据,并进行相应的处理。在不定接收的情况下,我们可以使用一个循环来不读取数据,并根据我们自己的协议或规则来判何时停止接收。 通常情况下,我们可以定义一个接收缓冲区数组,用于存储接收到的数据。在每次循环中,我们可以将接收到的数据存储到接收缓冲区中,并根据数据的特征来判何时停止接收,例如可以设置一个特定的结束标志。 一旦接收结束,我们就可以进行后续的数据处理,例如解析数据、执行相关操作等。需要注意的是,由于不定度数据的特性,在数据处理时应该对数据的有效性进行检查,避免错误操作或潜在的安全问题。 总的来说,通过使用STM32HAL的串口中断机制,我们可以实现串口的不定接收。通过正确配置串口和中断设置,合理处理接收中断服务函数中的数据读取和处理逻辑,我们可以很方便地实现与外部设备的可靠通信。 ### 回答3: STM32HAL中,通过使用串口中断可以实现不定度的串口接收。具体步骤如下: 1. 配置串口接收中断使能:通过调用`HAL_UART_Receive_IT()`函数,使能串口的中断接收功能。该函数会启动中断接收,并将接收到的数据存储到缓冲区中。 2. 在中断处理函数中读取数据:当接收到数据后,会触发串口接收中断,此时会自动进入中断处理函数。在该中断处理函数中,可以调用`HAL_UART_Receive_IT()`函数来读取接收到的数据。 3. 判数据接收完成:在中断处理函数中,可以通过判接收到的数据度来确定数据是否接收完成。一般可以通过判接收到的数据是否满足某一特定的结束标志。 4. 数据处理:当数据接收完成后,可以对接收到的数据进行相应的处理,比如解析数据,执行相应的操作等。 需要注意的是,在使用串口中断接收不定度数据时,需要事先确定好数据的传输格式和度,以便正确地进行接收和处理。同时,还需要配置接收缓冲区度,以确保能够容纳接收到的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值