当前位置: 首页 > news >正文

Linux用户-普通用户

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注我,我尽量把自己会的都分享给大家,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

Linux是一个多用户多任务操作系统,这意味着它可以同时支持多个用户登录并使用系统。但是我们之前所有的操作都是基于超级管理员root来操作的,但是从Linux设计来说,是不推荐的。因为root的权限太大,所以才需要使用普通用户来进行日常运维,那如果普通用户需要做的操作需要root权限的时候又该怎么做呢?我们将通过以下几个方面来讲解。

1.Linux用户(本章节)

2.Linux用户组

3.SU命令

4.SUDO命令

用户介绍

Linux操作系统的用户体系非常灵活,这使得它成为了一个很好的多用户系统。它有三种类型的用户:超级用户(root),系统用户和常规用户。

  1. 超级用户 (root):在Linux系统中,超级用户是权限最高的用户,被称为根用户,也就是root用户。超级用户可以执行任何命令,包括系统设置、软件安装、用户和权限管理等。root用户的权限等同于Windows系统中的管理员权限。

  2. 系统用户:系统用户主要是为了运行某些服务或者守护进程(daemon)而创建的。这些系统用户通常不会具有登录shell,也就是说,它们不能直接登录系统。例如,邮件系统会有一个名为 mail 的系统用户,网页服务器可能会有一个名为 www 或 http 的用户。

  3. 常规用户:这些用户是进行日常工作的用户,他们可以登录系统并运行各种应用程序。但是,他们不能对系统进行修改,也不能访问其他用户的文件,除非这些文件被明确地赋予了访问权限。你在安装Linux系统后创建的第一个用户就是常规用户(也可以不创建),通常这个用户会被赋予使用sudo命令的权限,也就是说,这个用户可以执行一些需要root权限的命令。

在Linux系统中,每个用户都有一个唯一的用户ID(UID),系统内部通过UID来识别用户。UID 0通常被赋予root用户,UID 1-999一般为系统用户,1000以上的UID用于常规用户。

用户命令

Linux 用户管理可以通过命令行进行,以下是一些常用的用户管理命令:

  1. useradd [options] username:创建新的用户。例如 useradd -m username 将会创建一个新的用户,并创建用户的主目录。

  2. passwd username:设置或修改用户的密码。不加用户名则默认修改当前用户,只有root可以修改其他用户的密码。

  3. userdel [options] username:删除用户。例如 userdel -r username 将会删除用户以及用户的主目录。

  4. usermod [options] username:修改用户的信息。例如 usermod -l newname username 将会修改用户的用户名。

  5. groups username:显示用户所属的组。

  6. id username:显示用户的 UID(用户 id)、GID(用户组 id)以及所属的组。

  7. su username:切换到其他用户。例如 su - username 将会切换到用户,并加载用户的环境变量。

  8. whoami:显示当前的用户名。

  9. who:显示当前登录的所有用户。

  10. last:显示系统的登录记录。

注意在使用这些命令时可能需要 root 权限,可以使用 sudo 命令获取 root 权限。例如 sudo useradd username

用户管理

[root@localhost ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bash#省略中间部分nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologinntp:x:38:38::/etc/ntp:/sbin/nologin#省略中间部分user01:x:1000:1000::/home/user01:/bin/bash

/etc/passwd 文件中的每一行都代表系统上的一个用户账号,每行由多个字段组成,字段之间使用冒号(:)分隔。典型的字段包括:

  • 用户名:用户的登录名。

  • 密码占位符:(在现代系统中通常是 x)原本是存储加密的密码,现在通常是存储在 /etc/shadow 文件中,或者指向其他安全存储的文件。

  • 用户 ID (UID):唯一标识符,用于系统内部识别用户。

  • 组 ID (GID):该用户所属的主要组的标识符。

  • 用户描述:一般是用户的全名或注释。

  • 主目录:用户登录后所处的初始目录。

  • 登录 Shell:用户登录后默认使用的 Shell 程序。

root 属于超级管理员,无论用户ID还是组ID都是0nginx&ntp 属于系统用户,都是服务自带的用户,/sbin/nologin 就是不允许登录,包括ssh和通过控制台user01 属于常规用户,属于通过useradd 增加的用户的,没有nologin就是允许ssh和通过
[root@localhost ~]# cat /etc/shadowroot:*:18961:0:99999:7:::#省略中间部分ntp:!!:19885::::::user01:!!:19893:0:99999:7:::

/etc/shadow 文件用于存储用户账号的加密密码、密码过期信息以及账号是否被锁定等敏感信息。相比于 /etc/passwd 文件,它具有更高的安全性,因为普通用户无法直接读取此文件。

  1. 文件结构

    • 用户名:与 /etc/passwd 中的用户名对应。

    • 加密密码:使用密码哈希算法加密后的密码。实际密码不会直接存储在此处,只存储其哈希值。

    • 密码最后更改日期:自 Unix 时间戳起,距离上次更改密码的天数。

    • 密码更改最短天数:两次密码更改之间的最小天数间隔。

    • 密码更改最大天数:密码的有效期,超过此期限用户需要强制更改密码。

    • 密码过期前警告天数:密码即将过期前,提前多少天发出警告。

    • 账号失效日期:账号失效的日期,即停止使用该账号的日期。

    • 账号标志:包含有关账号当前状态的其他信息,例如是否被锁定等。

    • 每一行对应一个用户账号,字段之间用冒号(:)分隔。

    • 典型的字段包括:

  2. 访问权限/etc/shadow 文件具有非常严格的访问控制,通常只有 root 用户或具有相应特权的用户能够读取和修改此文件。这是为了确保用户密码和账户信息不被未经授权的用户获取。

总结

1.如果自己是一个普通运维角色,我们能拿到的账号和密码,应该是一个普通用户和密码。

2.如果自己是运维管理员的情况,则分配给其他人的账号也只能是一个普通账号。

3.普通用户可以可以通过susudo命令来提升自己的权限,用于完成需要超级管理员权限才能完成运维的操作。

4.当然,这并不是标准方案,你可以根据自己的实际情况选择。

5.有的应用程序则要求必须使用非root用户启动,比如es,使用root则会被提示不允许使用root启动。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 树上dp学习总结2
  • SpringMVC中的常用注解
  • stl-algorithm【1】
  • 【错误总结】Ubuntu系统中执行 sudo apt-get update报错
  • 随着人工智能技术的发展,如何确保其决策过程的透明度和可解释性,以避免潜在的不公正和歧视?
  • 入门 PyQt6 看过来(案例)18~ 表格属性
  • 【MATLAB源码】机器视觉与图像识别技术实战示例文档---鱼苗面积预测计数
  • 机器学习模型选择与优化: 打造智能IDS
  • 程序员面试中的“八股文”:敲门砖还是绊脚石?
  • M12电连接器的编码分类及应用领域分析
  • 在Linux上编译软件并且运行的入门示例
  • 同城校园跑腿外卖配送平台源码,这套目前全网还没有人分享过
  • 技术学习笔记2:std::bad_cast 在多态编程中有什么作用,如何避免类型转换失败?
  • 面向未来的S2B2C电商供应链系统发展趋势与创新探索
  • 从零入门 AI for Science(AI+药物) #Datawhale AI 夏令营 Task2
  • [deviceone开发]-do_Webview的基本示例
  • 345-反转字符串中的元音字母
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • java第三方包学习之lombok
  • Mysql数据库的条件查询语句
  • Spring核心 Bean的高级装配
  • Unix命令
  • 看域名解析域名安全对SEO的影响
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 前端之React实战:创建跨平台的项目架构
  • 小李飞刀:SQL题目刷起来!
  • 新手搭建网站的主要流程
  • 用element的upload组件实现多图片上传和压缩
  • 2017年360最后一道编程题
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #Lua:Lua调用C++生成的DLL库
  • #QT 笔记一
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (libusb) usb口自动刷新
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (八)c52学习之旅-中断实验
  • (补)B+树一些思想
  • (分布式缓存)Redis哨兵
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (剑指Offer)面试题34:丑数
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (南京观海微电子)——COF介绍
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)德国人的记事本
  • (状压dp)uva 10817 Headmaster's Headache
  • .Net Web窗口页属性
  • .Net 代码性能 - (1)
  • .NET 中 GetProcess 相关方法的性能
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET6 开发一个检查某些状态持续多长时间的类
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /etc/motd and /etc/issue
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116