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