首页 > 其他分享 >用户管理

用户管理

时间:2024-01-13 23:13:58浏览次数:28  
标签:选项 管理 -- 用户 etc useradd ID

用户管理

用户(uid)

用户就是Linux系统中创建一个账号,可以通过这个账号登录系统操作文件

用户管理的好处

  1. 合理的分配资源,协助系统管理员对用户追踪管理
  2. 增加系统的安全性

用户分类

  1. root用户
  2. 系统默认的用户(nobody、ftp)
  3. 安装软件自动生成的(nginx)
  4. 其他创建的普通用户

用户角色划分

  1. root
  2. 普通用户
  3. 虚拟用户

root

root拥有系统最大权限,UID是0,root所在组是root组,可以管理操作所有文件

用户组(gid)

就是同等权限的用户的集合,在一个组里的权限相同

用户与文件权限关系

用户、组配置文件

/etc/passwd 用户信息
/etc/shadow  用户密码信息
/etc/group 用户组信息
/etc/gshadow 用户组密码信息  ,在大公司,用户和组数量很大的情况下,需要制定复杂的权限管理,那时会用到组密码
/etc/skel
skel是skeleton的缩写,意为骨骼、框架。故此目录的作用是在建立新用户时,用于初始化用户根目录。系统会将此目录下的所有文件、目录都复制到新建用户的根目录,并且将用户属主与用户组调整为与此根目录相同。

命令列表

命令 作用
useradd 创建用户
usermod 修改用户信息
userdel 删除用户及配置文件
passwd 更改用户密码
chpasswd 批量更新用户密码
chage 修改用户密码属性
id 查看用户UID、GID、组信息
su 切换用户
sudo 用root身份执行命令
visudo 编辑sudoers配置文件

useradd

创建的新的系统用户

补充说明

useradd命令 用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

在Slackware中,adduser指令是个script程序,利用交谈的方式取得输入的用户帐号资料,然后再交由真正建立帐号的useradd命令建立新用户,如此可方便管理员建立用户帐号。在Red Hat Linux中, adduser命令 则是useradd命令的符号连接,两者实际上是同一个指令。

语法

useradd(选项)(参数)

选项

-b, --base-dir BASE_DIR  # 如果未指定 -d HOME_DIR,则系统的默认基本目录。如果未指定此选项,useradd 将使用 /etc/default/useradd 中的 HOME 变量指定的基本目录,或默认使用 /home。
-c, --comment COMMENT    # 加上备注文字。任何文本字符串。它通常是对登录名的简短描述,目前用作用户全名的字段。
-d, --home HOME_DIR      # 将使用 HOME_DIR 作为用户登录目录的值来创建新用户。 
-D, --defaults           # 变更预设值。
-e, --expiredate EXPIRE_DATE # 用户帐户将被禁用的日期。 日期以 YYYY-MM-DD 格式指定。
-f, --inactive INACTIVE      # 密码过期后到帐户被永久禁用的天数。
-g, --gid GROUP   # 用户初始登录组的组名或编号。组名必须存在。组号必须引用已经存在的组。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]] # 用户也是其成员的补充组列表。每个组用逗号隔开,中间没有空格。
-h, --help # 显示帮助信息并退出。
-k, --skel SKEL_DIR # 骨架目录,其中包含要在用户的主目录中复制的文件和目录,当主目录由 useradd 创建时。
-K, --key KEY=VALUE # 覆盖 /etc/login.defs 默认值(UID_MIN、UID_MAX、UMASK、PASS_MAX_DAYS 等)。
-l, --no-log-init   # 不要将用户添加到 lastlog 和 faillog 数据库。
-m, --create-home   # 如果用户的主目录不存在,则创建它。
-M                  # 不要创建用户的主目录,即使 /etc/login.defs (CREATE_HOME) 中的系统范围设置设置为 yes。
-N, --no-user-group # 不要创建与用户同名的组,而是将用户添加到由 -g 选项或 /etc/default/useradd 中的 GROUP 变量指定的组中。
-o, --non-unique    # 允许创建具有重复(非唯一)UID 的用户帐户。 此选项仅在与 -o 选项结合使用时有效。
-p, --password PASSWORD # crypt(3) 返回的加密密码。 默认是禁用密码。
-r, --system        # 创建一个系统帐户。
-s, --shell SHELL   # 用户登录 shell 的名称。
-u, --uid UID       # 用户 ID 的数值。
-U, --user-group    # 创建一个与用户同名的组,并将用户添加到该组。
-Z, --selinux-user SEUSER # 用户登录的 SELinux 用户。 默认情况下将此字段留空,这会导致系统选择默认的 SELinux 用户。

# 更改默认值
# 当仅使用 -D 选项调用时,useradd 将显示当前默认值。 当使用 -D 和其他选项调用时,useradd 将更新指定选项的默认值。 有效的默认更改选项是:

参数

用户名:要创建的用户名。

案例

新建用户加入组:

useradd –g sales jack –G company,employees    # -g:加入主要组、-G:加入次要组

建立一个新用户账户,并设置ID:

useradd caojh -u 544

需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号。

新建一个普通用户:

useradd lutixia

新建一个系统用户,系统用户一般用于管理服务,无需登录,所以分配nologin,限制其登录系统:

useradd -r -s /sbin/nologin mq

usermod

用于修改用户的基本信息

补充说明

usermod命令 用于修改用户的基本信息。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的 crontab 档。也需手动更改使用者的 at 工作档。采用 NIS server 须在server上更动相关的NIS设定。

语法

usermod(选项)(参数)

选项

-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录,只是修改/etc/passwd中用户的家目录配置信息,不会自动创建新的家目录,通常和-m一起使用;
-m<移动用户家目录>:移动用户家目录到新的位置,不能单独使用,一般与-d一起使用。
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s<shell>:修改用户登入后所使用的shell;
-u<uid>:修改用户ID;
-U:解除密码锁定。

参数

登录名:指定要修改信息的用户登录名。

实例

将 newuser2 添加到组 staff 中:

usermod -G staff newuser2

修改newuser的用户名为newuser1:

usermod -l newuser1 newuser

锁定账号newuser1:

usermod -L newuser1

解除对newuser1的锁定:

usermod -U newuser1

userdel

用于删除给定的用户以及与用户相关的文件

补充说明

userdel命令 用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。

语法

userdel(选项)(参数)

选项

-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。

参数

用户名:要删除的用户名。

用户创建的过程

1)在 /etc/passwd 文件中创建一行关于用户的数据

2)在 /etc/shadow 文件中新增了一行关于用户密码的数据

3)在 /etc/group 文件中创建一行与用户名相同的组

4)在 /etc/gshadow 文件中新增一行与新增群组相关的密码信息

5)自动创建用户的家目录,默认在/home下,与用户名同名

/etc/passwd文件解析

这五个步骤里,passwd文件是重点要关注的

用户名:登录linux时使用的用户名

密码:此密码位置一般情况都是"x",表示密码的占位,真实密码存储在/etc/shadow,做了加密处理。

用户ID:用户的识别符,每个用户都有唯一的UID【-u】

用户组ID:该用户所属的主组ID;【-g】(可以通过-g修改主组)

注释:解释该用户是做什么用的;【-c】

家目录:用户登录进入系统之后默认的位置;【-d】

解释器shell:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,转换成机器语言,传递给内核处理;

⚠️如果解释器是/bin/bash 表示用户可以登录到系统/sbin/nologin表示该用户不能登录到系统【-s】

groupadd

用于创建一个新的工作组

补充说明

groupadd命令 用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。

语法

groupadd(选项)(参数)

选项

-g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组ID小于500;
-K:覆盖配置文件“/etc/login.defs”;
-o:允许添加组ID号不唯一的工作组。

参数

组名:指定新建工作组的组名。

实例

建立一个新组,并设置组ID加入系统:

groupadd -g 1888 jsdigname

此时在/etc/passwd文件中产生一个组ID(GID)是1888的项目。

linux给组设置组密码

在Linux中,可以使用gpasswd命令为组设置组密码。

groupmod

更改群组识别码或名称

补充说明

groupmod命令 更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。

语法

groupmod(选项)(参数)

选项

-g<群组识别码>:设置欲使用的群组识别码;
-o:重复使用群组识别码;
-n<新群组名称>:设置欲使用的群组名称。

参数

组名:指定要修改的工作的组名。

groupdel

用于删除指定的工作组

补充说明

groupdel命令 用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。

语法

groupdel(参数)

参数

组:要删除的工作组名。

id

打印真实以及有效的用户和所在组的信息

概要

id [OPTION]... [USER]...

主要用途

  • 没有选项时,打印指定用户ID信息。

选项

-a               兼容性选项,没有实际作用。
-Z, --context    只打印进程的安全上下文。
-g, --group      只打印有效的组ID。
-G, --groups     打印全部组ID。
-u, --user       只打印有效的用户ID。
-z, --zero       使用空字符代替默认的空格来分隔条目。
--help           显示帮助信息并退出。
--version        显示版本信息并退出。

只有在使用 -u -g -G 选项中一到多个时,以下选项可以使用:

-n, --name    打印名称而不是数字。
-r, --real    打印真实ID而不是有效ID。

参数

user(可选):可以为一到多个,默认为当前用户。

标签:选项,管理,--,用户,etc,useradd,ID
From: https://www.cnblogs.com/yechangyao/p/17963166

相关文章

  • gin学习笔记(三)—— 会话管理
    会话管理HTTP会话管理HTTP协议的特点是一问一答(请求然后响应)。基本上,Web应用都实现了用户管理,因此当用户发送请求时,服务器要能识别出是哪个用户,最简单的方法就是客户端每次请求,都附上用户信息。这样既不安全也不高效,故提出会话(Session),会话一般存储用户信息。服务端会话(S......
  • C++多线程并发(一)--- 线程创建与管理
    目录进程和线程的区别何为并发?C++11线程基本操作C++11新标准多线程支持库std::thread类成员函数std::thread的关键总结C++中多线程创建C++的多线程可以充分利用计算机资源,提高代码运行效率。在这里总结了一些多线程应用过程中的基本概念和用法。进程和线程的区别进程是一......
  • Jmeter 参数化之用户参数
    1用户参数意义:并发测试时,解决不同线程读取不同数据的场景2jmeter如何实现?首先添加线程组,添加前置处理器中的用户参数 3添加变量,添加用户,变量:参数名称,用户:参数值 4引用变量 注意这里要与前面变量名要一致,不然引用会失败5最后将线程数改为4,点击查看结果树运行一下......
  • node版本管理工具推荐
    hello,今天给大家分享几款node版本管理的工具。背景在开发前端项目的时候,特别是新到公司接手一个多年维护的老项目时,如果node版本不正确,有的插件可能无法正确安装,比如我之前提到的node-sass无法安装问题,具体请看:https://www.cnblogs.com/easy1996/p/17945874同时我们在开......
  • Flutter Getx 路由管理
    GetX为我们封装了Navigation,无需context可进行跳转,使用GetX进行路由跳转非常的简单,只需要调用Get.to()即可进行路由跳转,GetX路由跳转简化了跳转动画设置、动画时长定义、动画曲线设置。Get.to()实现普通路由跳转一、设置应用程序入口当我们导入依赖后,在应用程序......
  • 深入探索JVM:理解Java程序在虚拟机中的存储和管理
    大家好,我是大圣,很高兴又和大家见面。今天给大家带来图解JVM系列的第四篇文章,我们写的Java程序是怎么在JVM里面存储的。本次大纲如下:前面知识回顾上一篇图解JVM系列:揭秘运行时数据区的设计与实现文章说了JVM运行时数据区的设计理念,我们是通过冯·诺依曼结构来类比引......
  • Ajax注册表单用户名实时验证
    Ajax注册表单用户名实时验证 1.1.1摘要很多时候在网站上注册时,我们会发现,注册表单通常需要检查用户名和电子邮件地址的可用性;从而确保用户之间不拥有相同的用户名和电子邮件地址;一些网站喜欢在用户提交填写的用户信息时,做信息可用性的检查,而一些网站会做实时的用户名和电子......
  • 【Powershell】管理DHCPServer
    欢迎购买课程:https://edu.51cto.com/course/35515.html适合人群:对Powershell和域控有一定基础和感兴趣的运维你将会学到:利用Powershell创建和管理DHCPServer课程简介:本课程将教你利用Powershell创建和管理DHCPServer,特别是管理DHCPFailover,详解故障转移中的负载均衡和热备模式的差......
  • 【Powershell】域用户提权
    适合人群:适合对Powershell和域有一定基础和感兴趣的运维。课程目标:利用Powershell和计划任务让普通用户能用管理员权限执行程序或脚本课程简介:以往都需要借助收费第三方软件来完成的事情,现在可以通过强大的Powershell完成。利用Powershell和计划任务让普通用户能用管理员权限执行......
  • 关于AD域的全面管理
       通常,企业需要选择合适的域架构,为便于理解和成本控制,这里以单林单域(我这儿主域、辅域和边缘域控)的环境做介绍,最大满足100,000人(10万人)公司规模的用户使用。(注意,一般来说子域或多域架构,基于LDAP集成的第三方业务系统license是另外计算的。)  AD域里头有两种对象,一种是计算......