从0到1一步一步玩转openEuler--12 openEuler用户管理

news2024/9/22 21:17:55

image-20230210222529444

文章目录

      • 12.1 创建用户
        • 12.1.1 useradd命令
        • 12.1.2 用户信息文件
        • 12.1.3 创建用户实例
      • 12.2 修改用户账号
        • 12.2.1 修改密码
        • 12.2.2 修改用户shell设置
        • 12.2.3 修改主目录
        • 12.2.4 修改UID
        • 12.2.5 修改账号的有效期
      • 12.3 删除用户
      • 12.4 管理员账户授权

在Linux中,每个普通用户都有一个账户,包括用户名、密码和主目录等信息。除此之外,还有一些系统本身创建的特殊用户,它们具有特殊的意义,其中最重要的是管理员账户,默认用户名是root。同时Linux也提供了用户组,使每一个用户至少属于一个组,从而便于权限管理。

用户和用户组管理是系统安全管理的重要组成部分,本节主要介绍openEuler提供的用户管理命令,以及为普通用户分配特权的方法。

12.1 创建用户

12.1.1 useradd命令

在root权限下,通过useradd命令可以为系统添加新用户信息,其中 options 为相关参数, username 为用户名称。

# useradd [options] username

12.1.2 用户信息文件

与用户账号信息有关的文件如下:

  • /etc/passwd:用户账号信息文件。
  • /etc/shadow:用户账号信息加密文件。
  • /etc/group:组信息文件。
  • /etc/default/useradd:定义默认设置文件。
  • /etc/login.defs:系统广义设置文件。
  • /etc/skel:默认的初始配置文件目录。

12.1.3 创建用户实例

例如新建一个用户名为test的用户,在root权限下执行如下命令:

[root@superman-21 ~]# useradd test
[root@superman-21 ~]# 

img 说明:
没有任何提示,表明用户建立成功。这时请使用passwd命令设置用户的密码,没有设置密码的新账号不能登录系统。

使用id命令查看新建的用户信息,命令如下:

[root@superman-21 ~]# id test
用户id=1001(test) 组id=1001(test)=1001(test)
[root@superman-21 ~]# 

修改用户test的密码:

# passwd test

建议在修改用户密码时满足密码复杂度要求,密码的复杂度的要求如下:

  1. 口令长度至少8个字符。

  2. 口令至少包含大写字母、小写字母、数字和特殊字符中的任意3种。

  3. 口令不能和账号一样。

  4. 口令不能使用字典词汇。

    • 查询字典 在已装好的openEuler环境中,可以通过如下命令导出字典库文件dictionary.txt,用户可以查询密码是否在该字典中。

      # cracklib-unpacker /usr/share/cracklib/pw_dict > dictionary.txt
      

      例如示例命令如下:

      [root@superman-21 ~]# cracklib-unpacker /usr/share/cracklib/pw_dict > dictionary.txt
      [root@superman-21 ~]# 
      
    • 修改字典

      1. 修改上面导出的字典文件,执行如下命令更新系统字典库。

        # create-cracklib-dict dictionary.txt
        

        例如示例命令如下:

        [root@superman-21 ~]# create-cracklib-dict dictionary.txt
        1916902 1916902
        [root@superman-21 ~]# 
        
      2. 在原字典库基础上新增其他字典内容custom.txt。

        # create-cracklib-dict dictionary.txt custom.txt
        

        例如示例命令如下:

        [root@superman-21 ~]# echo 'superman' > custom.txt
        [root@superman-21 ~]# cat custom.txt 
        superman
        [root@superman-21 ~]# create-cracklib-dict dictionary.txt custom.txt
        1916902 1916902
        [root@superman-21 ~]# 
        

例如根据提示两次输入新用户的密码,完成密码更改。过程如下:

[root@superman-21 ~]# passwd test
更改用户 test 的密码 。
新的密码: 
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
[root@superman-21 ~]# 

img 说明:
若打印信息中出现“BAD PASSWORD: The password fails the dictionary check - it is too simplistic/sytematic”,表示设置的密码过于简单,建议设置复杂度较高的密码。

12.2 修改用户账号

12.2.1 修改密码

普通用户可以用passwd修改自己的密码,只有管理员才能用passwd username为其他用户修改密码。

12.2.2 修改用户shell设置

使用chsh命令可以修改自己的shell,只有管理员才能用chsh username为其他用户修改shell设置。

用户也可以使用usermod命令修改shell信息,在root权限下执行如下命令,其中 new_shell_path 为目标shell路径,username 为要修改用户的用户名,请根据实际情况修改:

# usermod -s new_shell_path username

例如,将用户test的shell改为sh,命令如下:

[root@superman-21 ~]# grep test /etc/passwd
test:x:1001:1001::/home/test:/bin/bash
[root@superman-21 ~]#
[root@superman-21 ~]# usermod -s /usr/bin/sh test 
[root@superman-21 ~]# 
[root@superman-21 ~]# grep test /etc/passwd   
test:x:1001:1001::/home/test:/usr/bin/sh
[root@superman-21 ~]# 

12.2.3 修改主目录

  • 修改主目录,可以在root权限下执行如下命令,其中 new_home_directory 为已创建的目标主目录的路径,username 为要修改用户的用户名,请根据实际情况修改:

    # usermod -d new_home_directory username
    

    例如示例命令及输出信息如下:

    [root@superman-21 ~]# ll -a /home/test
    总用量 20K
    drwx------. 2 test test 4.0K 126 21:05 .
    drwxr-xr-x. 5 root root 4.0K 126 21:21 ..
    -rw-r--r--. 1 test test   75 112  2021 .bash_logout
    -rw-r--r--. 1 test test   71 112  2021 .bash_profile
    -rw-r--r--. 1 test test  138 112  2021 .bashrc
    [root@superman-21 ~]# 
    [root@superman-21 ~]# mkdir /home/test1
    [root@superman-21 ~]# 
    [root@superman-21 ~]# usermod -d /home/test1 test
    [root@superman-21 ~]# 
    [root@superman-21 ~]# ll -a /home/test1
    总用量 8.0K
    drwxr-xr-x. 2 root root 4.0K 126 21:21 .
    drwxr-xr-x. 5 root root 4.0K 126 21:21 ..
    [root@superman-21 ~]# 
    
  • 如果想将现有主目录的内容转移到新的目录,应该使用-m选项,命令如下:

    # usermod -d new_home_directory -m username
    

    例如示例命令及输出信息如下:

    [root@superman-21 ~]# ll -a /home/test1
    总用量 8.0K
    drwxr-xr-x. 2 root root 4.0K 126 21:30 .
    drwxr-xr-x. 5 root root 4.0K 126 21:30 ..
    [root@superman-21 ~]# 
    [root@superman-21 ~]# touch /home/test1/1.txt
    [root@superman-21 ~]# 
    [root@superman-21 ~]# ll -a /home/test1      
    总用量 8.0K
    drwxr-xr-x. 2 root root 4.0K 126 21:32 .
    drwxr-xr-x. 5 root root 4.0K 126 21:30 ..
    -rw-r--r--. 1 root root    0 126 21:32 1.txt
    [root@superman-21 ~]# 
    [root@superman-21 ~]# usermod -d /home/test2 -m test
    [root@superman-21 ~]# 
    [root@superman-21 ~]# ll -a /home/test2
    总用量 8.0K
    drwxr-xr-x. 2 root root 4.0K 126 21:32 .
    drwxr-xr-x. 5 root root 4.0K 126 21:33 ..
    -rw-r--r--. 1 root root    0 126 21:32 1.txt
    [root@superman-21 ~]# 
    

12.2.4 修改UID

修改用户ID,在root权限下执行如下命令,其中 UID 代表目标用户ID,username 代表用户名,请根据实际情况修改:

# usermod -u UID username

该用户主目录中所拥有的文件和目录都将自动修改UID设置。但是,对于主目录外所拥有的文件,只能使用chown命令手动修改所有权。

例如示例命令及输出信息如下:

[root@superman-21 ~]# id test
用户id=1001(test) 组id=1001(test)=1001(test)
[root@superman-21 ~]# 
[root@superman-21 ~]# usermod -u 1002 test
[root@superman-21 ~]# 
[root@superman-21 ~]# id test             
用户id=1002(test) 组id=1001(test)=1001(test)
[root@superman-21 ~]# 

12.2.5 修改账号的有效期

如果使用了影子口令,则可以在root权限下,执行如下命令来修改一个账号的有效期,其中 MM 代表月份,DD 代表某天,YY 代表年份,username 代表用户名,请根据实际情况修改:

# usermod -e MM/DD/YY username

例如示例命令及输出信息如下:

[root@superman-21 ~]# usermod -e 03/20/23 test
[root@superman-21 ~]# 
[root@superman-21 ~]# chage -l test
最近一次密码修改时间                                    :12月 06, 2022
密码过期时间                                    :从不
密码失效时间                                    :从不
帐户过期时间                                            :3月 20, 2023
两次改变密码之间相距的最小天数          :0
两次改变密码之间相距的最大天数          :99999
在密码过期之前警告的天数        :7
[root@superman-21 ~]# 

12.3 删除用户

在root权限下,使用userdel命令可删除现有用户。

例如,删除用户Test,命令如下:

[root@superman-21 ~]# grep test /etc/passwd
test:x:1002:1001::/home/test2:/usr/bin/sh
[root@superman-21 ~]# 
[root@superman-21 ~]# ll -a /home/test2
总用量 8.0K
drwxr-xr-x. 2 root root 4.0K 126 21:32 .
drwxr-xr-x. 5 root root 4.0K 126 21:33 ..
-rw-r--r--. 1 root root    0 126 21:32 1.txt
[root@superman-21 ~]# 
[root@superman-21 ~]# userdel test
[root@superman-21 ~]# 
[root@superman-21 ~]# ll -a /home/test2
总用量 8.0K
drwxr-xr-x. 2 root root 4.0K 126 21:32 .
drwxr-xr-x. 5 root root 4.0K 126 21:33 ..
-rw-r--r--. 1 root root    0 126 21:32 1.txt
[root@superman-21 ~]# 

如果想同时删除该用户的主目录以及其中所有内容,要使用-r参数递归删除。

例如示例命令如下:

[root@superman-21 ~]# useradd test3
[root@superman-21 ~]# 
[root@superman-21 ~]# grep test3 /etc/passwd
test3:x:1002:1002::/home/test3:/bin/bash
[root@superman-21 ~]# 
[root@superman-21 ~]# ll -a /home/test3
总用量 20K
drwx------. 2 test3 test3 4.0K 126 22:07 .
drwxr-xr-x. 6 root  root  4.0K 126 22:07 ..
-rw-r--r--. 1 test3 test3   75 112  2021 .bash_logout
-rw-r--r--. 1 test3 test3   71 112  2021 .bash_profile
-rw-r--r--. 1 test3 test3  138 112  2021 .bashrc
[root@superman-21 ~]# 
[root@superman-21 ~]# userdel -r test3      
[root@superman-21 ~]# 
[root@superman-21 ~]# ll -a /home/test3     
ls: 无法访问 '/home/test3': 没有那个文件或目录
[root@superman-21 ~]# 

img 说明:
不建议直接删除已经进入系统的用户,如果需要强制删除,请使用 userdel -f Test 命令。

12.4 管理员账户授权

使用sudo命令可以允许普通用户执行管理员账户才能执行的命令。

sudo命令允许已经在/etc/sudoers文件中指定的用户运行管理员账户命令。例如,一个已经获得许可的普通用户可以运行如下命令:

$ sudo /usr/sbin/useradd newuserl

实际上,sudo的配置完全可以指定某个已经列入/etc/sudoers文件的普通用户可以做什么,不可以做什么。

/etc/sudoers的配置行如下所示。

  • 空行或注释行(以#字符打头):无具体功能的行。

  • 可选的主机别名行:用来创建主机列表的简称。必须以Host_Alias关键词开头,列表中的主机必须用逗号隔开,如:

    # Host_Alias  linux=ted1,ted2
    

    其中ted1和ted2是两个主机名,可使用linux(别名)称呼它们。

  • 可选的用户别名行:用来创建用户列表的简称。用户别名行必须以User_Alias关键词开头,列表中的用户名必须以逗号隔开。其格式同主机别名行。

  • 可选的命令别名行:用来创建命令列表的简称。必须以Cmnd_Alias开头,列表中的命令必须用逗号隔开。

  • 可选的运行方式别名行:用来创建用户列表的简称。不同的是,使用这样的别名可以告诉sudo程序以列表中某一用户的身份来运行程序。

  • 必要的用户访问说明行。

    用户访问的说明语法如下:

    # user host = [ run as user ] command list
    

    在user处指定一个真正的用户名或定义过的别名,host也可以是一个真正的主机名或者定义过的主机别名。默认情况下,sudo执行的所有命令都是以root身份执行。如果您想使用其他身份可以指定。command list可以是以逗号分隔的命令列表,也可以是一个已经定义过的别名,如:

    # ted1   ted2=/sbin/shutdown
    

    这一句说明ted1可以在ted2主机上运行关机命令。

    # newuser1 ted1=(root) /usr/sbin/useradd,/usr/sbin/userdel
    

    这一句说明ted1主机上的newuser1可以以root用户权限执行useradd,userdel命令。

    img 说明:

    • 可以在一行定义多个别名,中间用冒号 (😃 隔开。
    • 可在命令或命令别名之前加上感叹号 (!),使该命令或命令别名无效。
    • 有两个关键词:ALL和NOPASSWD。ALL意味着“所有”(所有文件、所有主机或所有命令),NOPASSWD意味着不用密码。
    • 通过修改用户访问,将普通用户的访问权限修改为同root一样,则可以给普通用户分配特权。

下面是一个sudoers文件的例子:

#sudoers files
#User alias specification
User_Alias ADMIN=ted1:POWERUSER=globus,ted2
#user privilege specification
ADMIN ALL=ALL
POWERUSER ALL=ALL,!/bin/su

其中:

  • User_Alias ADMIN=ted1:POWERUSER=globus,ted2

    定义了两个别名ADMIN和POWERUSER

  • ADMIN ALL=ALL

    说明在所有主机上,ADMIN用户都可以以root身份执行所有命令

  • POWERUSER ALL=ALL,!/bin/su

    给POWERUSER用户除了运行su命令外等同ADMIN的权限

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

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

相关文章

【Java 面试合集】怎么声明一个类不会被继承,以及应用场景

怎么声明一个类不会被继承,以及应用场景1. 概述 今天的Java 面试合集又来了。今天我们复习的问题是:怎么声明一个类,不可以被继承 2. 验证 public final class TestMath { }通过上述截图 我们可以看到,被关键字final 修饰过的类,…

EOC第六章《块与中枢派发》

文章目录第37条:理解block这一概念第38条:为常用的块类型创建typedef第39条:用handler块降低代码分散程度第41条:多用派发队列,少用同步锁方案一:使用串行同步队列来将读写操作都安排到同一个队列里&#x…

02 OpenCV图像通道处理

1 通道提取与合并 在数字图像处理中,图像通道是指一个图像中的颜色信息被分离为不同的颜色分量。常见的图像通道包括RGB通道、灰度通道、HSV通道等。 RGB通道是指将图像分离为红色、绿色和蓝色三个颜色通道,每个通道表示相应颜色的亮度。这种方式是最常…

【QT 5 相关实验-仪表盘-学习笔记-表盘组件练习与使用总结】

【QT 5 相关实验-仪表盘-学习笔记-表盘组件练习与使用总结】1、概述2、实验环境3、参考资料-致谢4、自我提升实验效果5、代码练习-学习后拆解(1)头文件部分(2)绘制事件绘制表盘代码(3) 每一块部分绘制6、代码移植提升类…

Spring Security in Action 第十一章 SpringSecurity前后端分离实战

本专栏将从基础开始,循序渐进,以实战为线索,逐步深入SpringSecurity相关知识相关知识,打造完整的SpringSecurity学习步骤,提升工程化编码能力和思维能力,写出高质量代码。希望大家都能够从中有所收获&#…

nginx正向代理的配置和使用

nginx正向代理的配置和使用 nginx正向代理的配置和使用nginx正向代理的配置和使用安装包准备下载nginx安装包下载正向代理模块的包版本与模块对照表部署nginx服务上传nginx包和正向模块包解压,改名安装nginx配置正向代理创建nginx用户检查nginx配置并启动nginx服务所在服务器验…

微服务02 Docker

Docker实用篇0.学习目标1.初识Docker1.1.什么是Docker微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署&#xff0…

实战绕过WTS-WAF的SQL注入

实战绕过WTS-WAF的SQL注入1.前言2.测试流程2.1.发现漏洞2.1.1.正常页面2.1.2.WAF警告2.1.3.非正常页面2.2.判断字段数2.2.1.非正常页面2.2.2.正常页面2.3.判断回显位2.4.信息收集2.4.1.数据库版本2.4.2.数据库名2.5.判断数据库表2.5.1.WAF告警2.5.2.获取表2.5.3.burp suite测试…

龙曲良 Tensorflow —— tensorflow高级操作(自用)

目录 一、合并与分割 1.1 tf.concat (合并) 1.2 tf.stack (增加新维度) 1.3 tf.unstack (一个一个拆分) 1.4 tf.split (均分拆分) 二、数据统计 2.1 tf.norm(默认二范数) 2…

WebRTC(一):三种架构和基本原理

文章目录一、三种架构二、为什么SFU最为常用?一、三种架构 webrtc大致可以分为三种架构: MESH mesh架构需要所有参与连接的peer简历和所有其他peer的媒体的连接,如图一。 该架构需要n-1个上下行,以此带来的带宽消耗&#xff08…

家政服务小程序实战教程02-创建模型应用

我们在上一篇中介绍了数据源的设计及创建方法,本篇我们就根据我们创建好的数据源来设计功能。 按我们的需求分析,系统管理员来审核数据,要想审核数据需要给管理员提供一个管理后台。微搭中的管理后台是通过模型应用来解决的。 登录控制台&a…

我用python/C++调用ChatGPT自制了一个聊天机器人

目录1 ChatGPT完整版2 Python/C调用ChatGPT2.1 获取API秘钥2.2 测试API功能2.3 设计简单UI3 聊天问答1 ChatGPT完整版 2015年,OpenAI由马斯克、美国创业孵化器Y Combinator总裁阿尔特曼、全球在线支付平台PayPal联合创始人彼得蒂尔等硅谷科技大亨创立,公…

chatGPT都可以干什么呢?来一睹风采 (送账号)

文章目录1. 写代码2. 写文案3. 写剧本4. 写歌诗5. 写报告6. 查公式7. 写对联8. 写文章9. 做表格10. 做计划11. 等等1. 写代码 2. 写文案 3. 写剧本 4. 写歌诗 5. 写报告 这妥妥的翻译文,数据完全不对。 6. 查公式 傅里叶变换的时域性质有如下几点: 对…

JAVA集合专题4 —— Map

目录Map接口实现类的特点Map接口的常见方法Map六大遍历方式Map练习1code编程练习2code编程练习3思路codeMap接口实现类的特点 Map与Collection并列存在,是Map集合体系的顶级接口Map的有些子实现存储数据是有序的(LinkedHashMap),有些子实现存储数据是无…

【量化交易】 量化因子 动量类因子

量化因子 - 风险类因子计算 5日乖离率 BIAS5 (收盘价-收盘价的N日简单平均)/ 收盘价的N日简单平均*100,在此n取5 60日变动速率(Price Rate of Change) ROC60 ①AX今天的收盘价—20天前的收盘价 ②BX60天前的收盘价 ③…

React-Router

版本5安装:npmnpm install react-router-dom5 -Syarnyarn add react-router-dom5import ReactDOM from "react-dom/client";// react router适用于web和原生项目,我们在web项目中使用,所以需要引入的包是react-router-dom import {…

Idea 安装 Sonar 插件提升代码质量

目录 0. 环境说明 1. Sonar 简介 2. IDEA 配置 Sonar 0. 环境说明 Java 1.8IDEA 2022.3.1SonarLint 7.4.0 1. Sonar 简介 在多人协通的软件开发过程中,代码风格和代码质量对于软件的整体交付是十分关键的。这时我们可以利用 Sonar 插件,对代码进行扫描…

Spring MVC注解Controller源码流程解析--HandlerAdapter执行流程--上

Spring MVC注解Controller源码流程解析--HandlerAdapter执行流程--上引言RequestMappingHandlerAdapter方法参数解析器方法参数名解析器类型转换体系简单的使用演示数据绑定器工厂定制化修改DataBinder获取泛型参数ControllerAdvice与InitBinder注解控制器方法执行流程Controll…

C语言(可变参数:stdarg.h)

目录 一.使用可变参数 1.提供一个使用省略号的函数原型 2.在函数定义中创建一个va_list类型的变量 3.用宏把该变量初始化为一个参数列表 4.用宏访问参数列表 5.使用宏完成清理工作 二.va_copy 三.实例 一.使用可变参数 该头文件提供类似接受可变数量参数的宏&#xf…

【招聘】永善县正向社会工作服务中心招聘2名工作人员

永善县正向社会工作服务中心面向社会公开招聘2名工作人员 永善县正向社会工作服务中心是2019年9月在永善县民政局注册登记成立的民办非企业单位。业务范围主要为:面向社会提供各类专业社工服务,开展活动策划、个案援助等社会服务项目;承接个人…