LINUX学习之用户及用户组管理(九)

用户账号管理

用户账号的管理涉及添加、删除和修改用户账号信息。而这些操作实际上就是对/etc/passwd文件进行更新


useradd

命令描述

useradd命令用于添加新用户, 以下是useradd命令常用参数:

  • -c : 指定用户的一段注释性描述。
  • -d : 指定用户的主目录,如果此目录不存在,可以使用 -m 选项来创建主目录。
  • -g : 指定用户所属的用户组。
  • -G : 指定用户所属的附加组。
  • -s : 指定用户的登录 Shell。
  • -u : 指定用户的用户号

使用实例

1.创建一个用户sam, 其中-d和-m选项用来为用户sam生成一个主目录 /home/sam

/home为默认的用户主目录所在的父目录

useradd –d /home/sam -m sam

2.创建一个用户gem, 指定用户登录的shell是`/bin/sh`, 它属于group用户组,同时又属于adm和root用户组(这两个组是附加组)
useradd -s /bin/sh -g group –G adm,root gem

userdel

命令描述

userdel 命令用于在 Linux 系统中删除用户。它可以删除用户的账户和与其相关的文件,例如用户主目录和用户配置文件

删除用户账号就是要将/etc/passwd等系统文件中的关于该用户的记录删除,必要时还删除用户的主目录

一下是userdel命令的常用参数:

  • -r : 删除用户的同时删除用户主目录和其他文件
  • -f : 强制删除用户,不管该用户是否已登录

使用实例

1.删除用户sam以及其主目录

userdel -r sam

2.删除用户名为 tom 的用户,并强制删除其账户,即使该用户已登录
userdel -f tom

3.删除用户名为 kim 的用户,不删除其主目录和其他文件
userdel kim

usermod

命令描述

usermod 命令用于在 Linux 系统中修改用户信息。它可以修改用户名、用户组、用户密码、用户主目录等

以下是usermod命令的常用参数:

  • -l : 修改用户名
  • -g : 修改用户所属的用户组
  • -G : 修改用户所属的附加组
  • -d : 修改用户主目录
  • -s : 修改用户登录的 shell
  • -u : 修改用户的用户号
  • -L : 锁定/解锁用户
  • -U : 更新用户密码

使用实例

1.修改sam用户的登录Shell为/bin/sh, 主目录为/home/z, 用户组为developer

usermod -s /bin/sh -d /home/z –g developer sam

2.修改用户名为 gem 的用户的用户名为 newgem
usermod -l newgem gem

3.修改用户名为 jim 的用户,将其设置为附加组 adm 和 root
usermod -G adm,root jim

passwd

命令描述

passwd 命令用于在 Linux 系统中修改用户密码。使用这个命令可以更改当前用户或其他用户的密码, 请注意,在修改密码后,用户可能需要重新登录才能生效

常用的参数包括:

  • -d : 删除用户密码
  • -l : 锁定用户账户
  • -u : 解锁用户账户

使用实例

1.例如当前用户是sam, 使用如下命令修改自己的口令

$ passwd 
Old password:****** 
New password:******* 
Re-enter new password:*******

2.若当前用户是超级用户, 可以不输入旧密码就能修改任何用户的口令
[root]# passwd sam 
New password:******* 
Re-enter new password:*******

3.锁定sam用户的口令, 使其不能登录
[root]# passwd -l sam

用户组管理

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新


groupadd

命令描述

groupadd 命令用于在 Linux 系统中创建新用户组

常用的参数包括:

  • -g: 指定新用户组的组标识号 (GID)
  • -r : 创建系统组(GID < 1000)

使用实例

1.创建一个名为 newgroup 的新用户组,并指定其组标识号为1000

groupadd -g 1000 newgroup

2.创建一个名为 sysgroup 的系统用户组
groupadd -r sysgroup

3.创建一个名为 staff 的新用户组,并自动分配组标识号
groupadd staff

groupdel

命令描述

groupdel 命令用于在 Linux 系统中删除已有的用户组


使用实例

删除一个名为 group1 的用户组

groupdel group1

groupmod

命令描述

groupmod 命令用于在 Linux 系统中修改已有的用户组. 使用这个命令可以修改用户组的名称、组标识号以及成员等信息

常用的参数包括:

  • -g : 指定新的组标识号(GID)
  • -n : 指定新的组名称
  • -a : 添加用户到组中
  • -d : 从组中删除用户
  • -G: 指定用户组成员的

使用实例

1.将名为 oldgroup 的用户组修改为 newgroup

groupmod -n newgroup oldgroup

2.将名为 oldgroup 的用户组的组标识号(GID)修改为 1000
groupmod -g 1000 oldgroup

3.将用户 tom 添加到名为 newgroup 的用户组中
groupmod -a -G newgroup tom

4.将用户 tom 从名为 newgroup 的用户组中删除
groupmod -d -G newgroup tom

newgrp

命令描述

newgrp 命令用于在 Linux 系统中切换用户组。使用这个命令可以让用户暂时地切换到另一个用户组中,并在操作完成后切换回原来的用户组


使用实例

如下命令将当前用户切换至root用户组, 前提条件是root用户组是该用户的主组或附加组

newgrp root

存放用户信息的系统文件

/etc/passwd

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性

如下例子所示, /etc/passwd中一行记录对应着一个用户,每行记录又被冒号分隔为7个字段, 分别为用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

# cat /etc/passwd

root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh

系统中有一类用户被称为**伪用户**, 这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求

常见的伪用户如下表格所示:

伪用户 描述
bin 拥有可执行的用户命令文件
sys 拥有系统文件和配置文件
adm 拥有帐户文件和系统日志
uucp UNIX-to-UNIX复制程序使用
lp 打印系统使用
nobody 用于NFS匿名访问

/etc/shadow

由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。

只有超级用户才能读取此文件,这就保证了用户密码的安全性

它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开, 字段描述如下所示:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

如下是/etc/shadow的文件内容:

# cat /etc/shadow

root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::

/etc/group

用户要访问属于附加组的文件时,必须首先使用newgrp命令切换至附加组

用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号":"隔开若干个字段,这些字段描述如下所示:

组名:口令:组标识号:组内用户列表

如下是/etc/group的文件内容:
root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam

批量添加用户

1.编辑用户文本文件

每一列按照/etc/passwd密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号

一个范例文件user.txt内容如下:

user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
user004::603:100:user:/home/user004:/bin/bash
user005::604:100:user:/home/user005:/bin/bash
user006::605:100:user:/home/user006:/bin/bash

2.执行newuser命令创建用户

要使用root用户只需newuser命令

newusers < user.txt

3.执行pwunconv命令

pwunconv命令是一个命令行工具,通常用于将密码文件从旧版本的Unix使用的密码文件格式转换为当前版本的Unix使用的格式

pwunconv

4.编辑每个用户的密码对照文件

文件内容格式为:用户名:密码, 例如下面的passwd.txt:

user001:123456
user002:123456
user003:123456
user004:123456
user005:123456
user006:123456

5.执行chpasswd命令

chpasswd命令是一个命令行工具,它允许您批量更改一个或多个用户的密码。它从标准输入读取用户名和密码的列表,并更新系统密码文件中相应的密码

执行如下命令, chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入 /etc/passwd 的密码栏

chpasswd < passwd.txt

6.执行pwconv命令

pwconv命令是一个命令行工具,它用于将密码文件从系统原始的密码文件格式转换为shadow文件的格式

pwconv
posted @ 2023-01-21 17:29  亨利其实很坏  阅读(226)  评论(0编辑  收藏  举报