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

【Linux】用户和组

思考

使用useradd在Linux下面创建一个用户,默认情况下,会自动创建一个同名组,并且加入其中,那么是先创建用户呢?还是先创建组呢?
很简单,我们实践一下不就知道了,如下所示,可以看到我们执行了useradd后,日志中先创建了一个组,其次才创建用户,并且加入组。

[root@localhost ~]: useradd luobozi
[root@localhost ~]: cat /var/log/secure
Mar  7 10:50:56 localhost useradd[96767]: new group: name=luobozi, GID=1000
Mar  7 10:50:56 localhost useradd[96767]: new user: name=luobozi, UID=1000, GID=1000, home=/home/luobozi, shell=/bin/bash

如何手工创建一个用户?

手工创建一个kotonghitoli用户,组bondband,指定uid=3000,gid=3005,home=/home/gdyg,注释=“jp girl”,shell=/bin/bash

echo "kotonghitoli:x:3000:3005:jp girl:/home/gdyg:/bin/bash" >> /etc/passwd
echo "kotonghitoli:!!:20154:0:99999:7:::" >> /etc/shadow
echo "bondband:x:3005:" >> /etc/group
mkdir /home/gdyg
cp -v /etc/skel/.bash* /home/gdyg
touch /var/spool/mail/kotonghitoli

chown kotonghitoli:bondband  -R /home/gdyg  
chown kotonghitoli:mail /var/spool/mail/kotonghitoli
chmod 700 /home/gdyg/
chmod 600 /var/spool/mail/kotonghitoli


[root@localhost home]: su - kotonghitoli
Last login: Fri Mar  7 14:53:06 CST 2025 on pts/0
[kotonghitoli@localhost ~]$ id
uid=3000(kotonghitoli) gid=3005(bondband) groups=3005(bondband)

用户(user)

用户的分类

  1. 超级用户:root uid=0
  2. 系统用户:一般是启动服务的用户 uid=201-999
  3. 普通用户:普通用户 uid=1000-60000
[root@localhost ~]: cat /etc/login.defs |grep -A 10 UID_MIN
UID_MIN                  1000
UID_MAX                 60000
# System accounts
SYS_UID_MIN               201
SYS_UID_MAX               999

#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN                  1000
GID_MAX                 60000
# System accounts
SYS_GID_MIN               201
SYS_GID_MAX               999

命令介绍

useradd

id

w

userdel

passwd

chpasswd

su

usermod

last

lastlog

lastb

组(group)

命令

groupadd

groupdel

newgrp

groupmod

操作系统是如何区分不同用户的?

首先我们知道每个文件都有其对应的所有者、所属组、其它用户,这三个身份所能操作的权限rwx

如果我是luobozi用户,我使用 cat 命令去查看/var/log/secure文件,那么在操作系统底层发生了什么呢?

进程有pcb(进程控制块)+程序代码+产生的数据
进程控制块:pcb process control block 里面有进程信息,例如:pid、uid、gid 、状态、进程在内存里的地址等信息

用户和组的相关文件

和用户相关的文件

/etc/passwd 存放用户信息

[root@localhost ~]: cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

字段1:用户名
这是用户的登录名。例如,root 和 bin 都是用户名。
字段2:密码
通常是一个 x,表示密码存储在 /etc/shadow 文件中。如果这里是一个 * 或空,表示该用户不能登录。
字段3:用户ID (UID)
这是用户的唯一标识符。0 是 root 用户的 UID,其他用户的 UID 通常从 1000 开始。
字段4:组ID (GID)
这是用户所属的主组的唯一标识符。每个用户至少属于一个组。
字段5:用户信息
这是用户的描述信息,通常是用户的全名或其他注释信息。可以为空。
字段6:家目录
这是用户登录后的默认工作目录。例如,root 用户的家目录是 /root。
字段7:登录Shell
这是用户登录时使用的默认 Shell。例如,/bin/bash 是常见的交互式 Shell,而 /sbin/nologin 表示该用户不能登录系统。

存放密码信息

/etc/shadow

和组相关的文件

/etc/group

用户家目录

/home/

邮箱目录

/var/spool/mail/

定义了创建用户和组时的一些设置

/etc/login.defs

相关文章:

  • 使用miniforge安装python并用pycharm打开使用
  • 开源、创新与人才发展:机器人产业的战略布局与稚晖君成功案例解析
  • 【每日学点HarmonyOS Next知识】span问题、组件标识属性、属性动画回调、图文混排、相对布局问题
  • 【hot100】实现Trie(前缀树)
  • 前端 Webpack 面试题
  • javaEE初阶————多线程进阶(2)
  • PaddleDetection目标检测自定义训练
  • 李彦宏:紧抓AI智能体爆发元年机遇 推动新质生产力加快发展
  • 4.1 uboot启动第一阶段
  • 基于SpringBoot+Vue的瑜伽课体验课预约系统【附源码】
  • CI/CD—Jenkins实现自动构建Docker镜像运行Java程序
  • 10.OSPF专题
  • 【机器学习】强化学习(3)——深度强化学习的数学知识
  • 设计模式Python版 策略模式
  • C++:vector容器(下篇)
  • CI/CD—Jenkins配置一次完整的jar自动化发布流程
  • Hadoop安装文件解压报错:无法创建符号链接。。。
  • C++11 `enum class`
  • CSGO开箱网盲盒源码搭建与成品演示解析
  • 多视图几何--相机标定--DTL进行相机标定
  • 李公明︱一周书记:浪漫主义为什么……仍然重要?
  • 上海如何为街镇营商环境赋能?送政策、配资源、解难题、强活力
  • 国务院安委会办公室印发通知:坚决防范遏制重特大事故发生
  • 前瞻|美联储明晨“按兵不动”几无悬念:关税战阴霾下,会否释放降息信号
  • 习近平给谢依特小学戍边支教西部计划志愿者服务队队员回信
  • 纽约大都会博物馆展“萨金特与巴黎”:从艺术生到明星画家