百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

趣谈Linux用户管理

ahcoder 2025-01-02 14:06 13 浏览

说到Linux的用户系统,不得不让人联想到:

没错就是他,Linux中最厉害的用户,没有之一,维护世界和平,维护系统治安可以对全部用户、全部目录、全部文件等等为所欲为的超级用户,英文名称root。

1 Linux用户层级以及组的关系

  • 超级管理员:用户名root,对Linux系统具有最高级别权限,可以对系统的任何文件和目录进行操作。
  • 用户组:具有唯一GID的多个用户的集合。
  • 一般用户:Linux的一般使用用户,具有唯一的UID。

2 GID和UID

  • Group Id,即组ID,用来标识用户组的唯一标识符
  • User Id,即用户ID,用来标识每个用户的唯一标示符

3 组管理

3.1 添加组

(1)命令:

groupadd [组名]

(2)示例:

[root@iZ1608aqb7ntn9Z ~]# groupadd ymx
[root@iZ1608aqb7ntn9Z ~]# groupadd ymx
groupadd:“ymx”组已存在

(3)常见参数:

  • group -g [组ID] [组名]
  • [root@iZ1608aqb7ntn9Z ~]# groupadd -g 1111 g1
    [root@iZ1608aqb7ntn9Z ~]# cat /etc/group
    ......
    g1:x:1111:

3.2 删除组

(1)命令:

groupdel [组名]

(2)示例:

[root@iZ1608aqb7ntn9Z ~]# groupdel g1

3.3 查看全部用户组

(1)命令:

cat /etc/group 或使用管道符 cat /etc/group | grep [组名]

(2)示例:

[root@iZ1608aqb7ntn9Z ~]# cat /etc/group # 查看全部组
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
users:x:100:
nobody:x:65534:
dbus:x:81:
utmp:x:22:
utempter:x:35:
input:x:999:
kvm:x:36:
render:x:998:
systemd-journal:x:190:
systemd-coredump:x:997:
systemd-resolve:x:193:
tss:x:59:
polkitd:x:996:
libstoragemgmt:x:995:
printadmin:x:994:
unbound:x:993:
ssh_keys:x:992:
setroubleshoot:x:991:
cockpit-ws:x:990:
cockpit-wsinstance:x:989:
sssd:x:988:
sshd:x:74:
chrony:x:987:
slocate:x:21:
rngd:x:986:
tcpdump:x:72:
nscd:x:28:
admin:x:1000:
mysql:x:1001:
docker:x:985:
cgred:x:984:
super:x:1002:
ymx:x:1003:
[root@iZ1608aqb7ntn9Z ~]# cat /etc/group | grep ymx # 根据管道符查看组
ymx:x:1003:

格式说明: [用户组名称]:[密码]:[GID],例如ymx?1003: 的组名称为ymx,密码在其他配置文件中,GID为1003

大家根据命令的使用结果可以大致看出来几个规律,Linux系统中有很多系统默认的组,并且他们的GID都在1000以下,我们自己新加的组GID一般都在1000以上其次是管道符(后边会专门文章讲解),规律是|后边的值是|前边的查询条件

4 用户管理

4.1 添加用户

(1)命令

useradd [用户名]

(2)示例

[root@iZ1608aqb7ntn9Z article]# useradd ymx1

(3)常见参数

  • useradd -D : 查看系统创建用户时的默认值
  • [root@iZ1608aqb7ntn9Z article]# useradd -D
    GROUP=100 # 表示默认的GID为100
    HOME=/home # 表示默认用户目录在/home目录下
    INACTIVE=-1 # 表示新用户的密码过期后不会被禁用
    EXPIRE= # 密码的过期日期
    SHELL=/bin/bash # 默认的shell环境
    SKEL=/etc/skel # 将/etc/skel目录下的内容复制到用户的HOME目录下
    CREATE_MAIL_SPOOL=yes # 在mail目录下创建一个用于接收邮件的文件
  • useradd [用户名] -g [组名] 或者 useradd -g [组名] [用户名] : 创建用户时指定组
  • [root@iZ1608aqb7ntn9Z article]# useradd ymx2 -g ymx
    [root@iZ1608aqb7ntn9Z article]# useradd -g ymx ymx2
    useradd:用户“ymx2”已存在
  • useradd -d [目录名称] [用户名] : 创建用户时指定用户的home目录
  • [root@iZ1608aqb7ntn9Z article]# useradd -d /home/yyy3 ymx3
    [root@iZ1608aqb7ntn9Z article]# cd /home/
    [root@iZ1608aqb7ntn9Z home]# ls
    admin article mysql ymx1 ymx2 yyy3
  • useradd [用户名] -u [UID] :为新用户指定UID
  • useradd [用户名] -e [过期时间] :为新用户指定过期时间
  • [root@iZ1608aqb7ntn9Z home]# useradd ymx5 -e 2021-09-01
    [root@iZ1608aqb7ntn9Z home]# ls
    admin article mysql ymx1 ymx4 ymx5 yyy3
  • passwd : 为用户设置密码
  • [root@iZ1608aqb7ntn9Z home]# useradd ymx4
    [root@iZ1608aqb7ntn9Z home]# passwd ymx4
    更改用户 ymx4 的密码 。
    新的 密码: # 输入密码时是隐藏的(安全)
    重新输入新的 密码:
    passwd:所有的身份验证令牌已经成功更新。
    [root@iZ1608aqb7ntn9Z home]#

4.2 删除用户

(1)命令

userdel [用户名]

(2)示例

[root@iZ1608aqb7ntn9Z home]# ls
admin article mysql ymx1 ymx2 ymx4 yyy3
[root@iZ1608aqb7ntn9Z home]# userdel ymx3
[root@iZ1608aqb7ntn9Z home]# ls
admin article mysql ymx1 ymx2 ymx4 yyy3

(3)常见参数

  • userdel -r [用户名]: 删除user的信息和所有的目录
  • [root@iZ1608aqb7ntn9Z home]# ls
    admin article mysql ymx1 ymx2 ymx4 yyy3
    [root@iZ1608aqb7ntn9Z home]# userdel -r ymx2
    [root@iZ1608aqb7ntn9Z home]# ls
    admin article mysql ymx1 ymx4 yyy3

4.3 查看全部用户

(1)命令

四种方式:

  • getent passwd
  • cat /etc/shadow
  • cat /etc/passwd
  • compgen -u

(2)示例

[root@iZ1608aqb7ntn9Z home]# getent passwd
......
admin:x:1000:1000::/home/admin:/bin/bash
mysql:x:1001:1001::/home/mysql:/bin/bash
ymx1:x:1002:1004::/home/ymx1:/bin/bash
ymx4:x:1005:1006::/home/ymx4:/bin/bash
ymx5:x:1006:1007::/home/ymx5:/bin/bash
[root@iZ1608aqb7ntn9Z home]# cat /etc/shadow
......
admin:!!:18704:0:99999:7:::
mysql:!!:18704:0:99999:7:::
ymx1:!!:18862:0:99999:7:::
ymx4:$6$F6bYMV/44jm63XXX$9FLXnCqXrE5BbXILRJghmaLF.LUBlnV.YBdFS0R8Wq5mzFIh3g9LlpwCtsfWChZaMw0P91P4deNJVHway7Gom1:18862:0:99999:7:::
ymx5:!!:18862:0:99999:7::18871:
[root@iZ1608aqb7ntn9Z home]# cat /etc/passwd
......
admin:x:1000:1000::/home/admin:/bin/bash
mysql:x:1001:1001::/home/mysql:/bin/bash
ymx1:x:1002:1004::/home/ymx1:/bin/bash
ymx4:x:1005:1006::/home/ymx4:/bin/bash
ymx5:x:1006:1007::/home/ymx5:/bin/bash
[root@iZ1608aqb7ntn9Z home]# compgen -u
......
admin
mysql
ymx1
ymx4
ymx5

4.4 切换用户

(1)命令

su [用户名] 切换到root 直接使用 su

(2)示例

[root@iZ1608aqb7ntn9Z home]# su ymx1
[ymx1@iZ1608aqb7ntn9Z home]$ who
root pts/0 2021-08-23 10:03 (222.128.60.244)
root pts/1 2021-08-23 10:03 (222.128.60.244
[ymx1@iZ1608aqb7ntn9Z home]$ su
密码:
[root@iZ1608aqb7ntn9Z home]#

注意:区分是root用户还是其他用户,可以用 # 和 $ 来区分,例如[root@iZ1608aqb7ntn9Z home]#代表root用户下的终端,[ymx1@iZ1608aqb7ntn9Z home]$ 则代表普通模式下的终端

(3)常见参数

  • su -l [用户名] : 表示重新登录该用户
  • [root@iZ1608aqb7ntn9Z home]# su -l ymx1
    上一次登录:一 8月 23 10:43:12 CST 2021pts/0 上

5 两个重要的配置文件

5.1 /etc/shadow

(1)先看下内容:

[root@iZ1608aqb7ntn9Z ymx1]# cat /etc/shadow
......
ymx1:!!:18862:0:99999:7:::
ymx4:$6$F6bYMV/44jm63XXX$9FLXnCqXrE5BbXILRJghmaLF.LUBlnV.YBdFS0R8Wq5mzFIh3g9LlpwCtsfWChZaMw0P91P4deNJVHway7Gom1:18862:0:99999:7:::
ymx5:!!:18862:0:99999:7::18871:

(2)作用:

用于存储 Linux 系统中用户的密码信息,又称为“影子文件”

(3)每一行的含义:

  • 第一字段:用户名
  • 第二字段:密码
  • 第三字段:上次修改口令的时间戳
  • 第四字段:两次修改口令间隔最少的天数;如果这个字段的值为空,帐号永久可用;
  • 第五字段:两次修改口令间隔最多的天数;如果这个字段的值为空,帐号永久可用;
  • 第六字段:提前多少天警告用户口令将过期;如果这个字段的值为空,帐号永久可用;
  • 第七字段:在口令过期之后多少天禁用此用户;如果这个字段的值为空,帐号永久可用;
  • 第八字段:用户过期日期;此字段指定了用户作废的天数(从1970年的1月1日开始的天数),如果这个字段的值为空,帐号永久可用;
  • 第九字段:保留字段,目前为空,以备将来发展之用;

5.2 /etc/password

先看下内容:

[root@iZ1608aqb7ntn9Z ymx1]# cat /etc/passwd
......
ymx1:x:1002:1004::/home/ymx1:/bin/bash
ymx4:x:1005:1006::/home/ymx4:/bin/bash
ymx5:x:1006:1007::/home/ymx5:/bin/bash

(2)作用:

用于存储 Linux 系统中用户信息

(3)每一行的含义:

  • 第一段:用户名
  • 第二段:用户密码,x表示放在 /etc/shadow 中去了
  • 第三段:UID,0代表了root
  • 第四段:GID
  • 第五段:用户的描述介绍,可使用usermod -c 修改
  • 第六段:用户的家目录,在创建用户时自动生成在/home/用户名中,可以自定义这个目录。
  • 第七段:用户登陆的时候需要启动一个进程


文中图片来源自网络 如有侵权请联系删除

相关推荐

Linux ntp时钟同步问题(linux ntp同步命令)

有时候,操作系统会报linux的ntp时钟错误。从时钟源同步时间超时。我查看了一下ntp的时钟源,发现执行ntpq-p显示超时。执行nslookup时钟服务器域名,发现可以正常解析。执行了n...

linux服务器同步利器Rsync全介绍(付脚本)

1、认识Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件...

如何使用Rsync同步两个网站服务器的内容

本头条号每天坚持更新原创干货技术文章,欢迎关注本头条号"Linux学习教程",公众号名称“Linux入门学习教程"。如需学习视频,请复制以下信息到手机浏览器或电脑浏览器上:zc...

Linux TB级小文件同步备份解决方案

在某些电子档案存储的业务系统下,按照业务场景要求,需要将产生的所有电子影像资料永久存储,并支持备份;因为“钞能力”等原因,一般备份存储只有一个节点(即:一个备份存储服务器);这样就要求研发工程师,不...

CentOS7下使用Lsyncd实现文件实时同步

Lsyncd简单介绍Lsyncd使用文件系统事件接口(inotify或fsevents)来监视本地文件和目录的更改。Lsyncd在几秒钟内将这些文件事件整理核对后,然后生成一个或多个进程以将更...

如何手动同步Linux系统时间并与互联网时间保持同步?

在Linux系统中,正确的时间同步对于许多任务都是至关重要的。一些关键应用程序可能需要准确的时间戳才能正常工作,而一些安全功能也需要确保所有服务器的时间都是准确的。NTP服务可以自动同步系统时间和互...

Linux服务器Rsync定时同步一键化配置指南

1、主从服务器同时安装rsyncopenssh-clientaptupdate&&aptinstall-yrsyncopenssh-client2、主服务器安装好后输入以下命令生成密钥...

Linux系统如何使用NTPDATE命令设置时间同步

简介:咱们在使用Linux系统的时候,常常能发现用了一阵子之后,Linux系统的时间就对不上了。已经知道的情况是,安装Linux的时候选的时区是Asia/Shanghai,可这系统运行了一...

开源的Linux文件同步工具有哪些?(linux 文件夹 同步)

Linux系统之间经常需要文件同步,一个好的文件同步工具省时省力,这里介绍几款开源的Linux文件同步工具1.rsync:rsync是Linux上一个功能强大的命令行工具,可以在不同的服务器之间同...

Linux 系统使用 rsync + inotify 实现文件实时同步

Linux系统使用rsync+inotify实现文件实时同步简介inotify监控文件的变化后通知rsync进行文件的同步#配置免密登录ssh-keygen-trsaca...

Linux 远程数据同步工具详解(linux远程同步命令)

一、简介1认识Rsync(remotesynchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之...

构建基于 Linux 的 NTP 时间同步集群与时间安全防护实战指南

一、为什么时间同步对系统如此重要?在分布式系统、数据库复制、消息队列、审计日志、安全认证(如Kerberos)、容器编排等场景中,系统时间一致性是保障正确性与安全性的基础。一旦服务器间时间漂移,可能...

每日Linux学习:同步备份工具 rsync

rsync是一个用于高效同步文件和目录的工具。它通过仅传输变化的部分(增量传输)来节省时间和带宽,支持本地同步、远程同步(通过SSH),还能保留文件原有权限、时间戳等属性。本文通过几个常用的实例来...

Chromixium OS 1.0发布 基于Ubuntu发行版

Chromixium项目宣布chromixiumOS1发布,一款基于Ubuntu的Linux分支,chromixiumOS试图重新打造一款外观和感觉与ChromeOS相似的完...

iOS8.0.X~iOS8.1完美越狱!盘古团队出品

【巴士速递·移动情报站】最新消息,iOS8.1越狱了!!此次越狱依旧是iOS7时代我国的大神盘古团队带来的,而该次越狱支持最新的iPhone6、iPhone6Plus、iPadAir2和iPad...