用户管理

用户管理

用户(uid)

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

用户管理的好处

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

用户分类

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

用户角色划分

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

root

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

用户组(gid)

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

用户与文件权限关系

image-20240113185736770

用户、组配置文件

/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文件是重点要关注的

image-20240113222642170

用户名:登录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(可选):可以为一到多个,默认为当前用户。

posted @   叶长尧  阅读(24)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示