【每天一个Linux命令】10. 用户账号的新建/修改/删除以及密码修改 useradd/usemod/userdel/passwd

在 Linux 系统中,与用户管理有关的文件主要有如下几个:分别是/etc/passwd,/etc/shadow,/etc/gfoup,/etc/gshadow 。它们分别与用户的账号,密码,用户组及用户组密码有关。我们创建用户也就是跟这几个文件打交道。

 

 

1. 如何新建一个用户?

 

 

主要是下面这两个步骤:

一. 通过useradd命令完成一个新用户的初始化设置工作

 

二. 通过passwd为这个新用户设置密码

 

给系统添加一个用户叫wirelessqa,密码为12345

1. 先添加用户wirelessqa

bixiaopeng@ubuntu:~$ useradd wirelessqa
useradd: cannot lock /etc/passwd; try again later.


#oh,my god,需要root权限

bixiaopeng@ubuntu:~$ su
Password:


再试一次添加用户wirelessqa

root@ubuntu:/home/bixiaopeng# user add wirelessqa


没有任何结果说明是没错误

 

 

 

 

2. 为wirelessqa设置密码

 

root@ubuntu:/home/bixiaopeng# passwd wirelessqa
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully


上面说明密码设置成功了,当然我们也可以为上面的用户修改密码,方法是一样的

 

 

 

此时虽然我们已经新建了帐号,但是在home目录下是看不到的

 

root@ubuntu:/home# pwd
/home
root@ubuntu:/home# ls -al
total 12
drwxr-xr-x  3 root       root       4096  8��� 17 00:31 .
drwxr-xr-x 23 root       root       4096  6��� 17 18:14 ..
drwxr-xr-x 29 bixiaopeng bixiaopeng 4096  8��� 16 19:45 bixiaopeng


3. 如果想同时在home目录(默认的)创建用户目录,需要用到 -m参数

 

 

 

 

root@ubuntu:/home# useradd -m bilaoshi
root@ubuntu:/home# passwd bilaoshi
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@ubuntu:/home# ls -al
total 16
drwxr-xr-x  4 root       root       4096  8��� 17 00:38 .
drwxr-xr-x 23 root       root       4096  6��� 17 18:14 ..
drwxr-xr-x  2 bilaoshi   bilaoshi   4096  8��� 17 00:38 bilaoshi
drwxr-xr-x 29 bixiaopeng bixiaopeng 4096  8��� 17 00:34 bixiaopeng

 

 

 

2. 添加用户(useradd)常用参数

 
1. useradd默认在/home目录下为新增加的账号建一个主目录,如果想改变主目录存放位置,可以使用useradd的参数-d

例:新建一个用户alex3,主目录放在/home/account里

 
useradd -d /home/account alex3 

2. useradd的初始化操作还包括为用户单独建立一个与用户名同名的组(floatboat组)。这叫用户私有组的机制,与默认组机制相对应。
对用户分组一是方便管理,二是可以明确权限。如果想让此用户加入一个已有的组的话,可以使用-g参数。
例: 让alex加入bilaoshi组
 
useradd -g bilaoshi alex 
还可以使用-G参数使他同时加入多个组
例:让alex加入bilaoshi1和bilaoshi2组:
 
useradd -G bilaoshi1,bilaoshi2 alex 

3.  新建一个账号,指定分组和UID,使用-g 和  -u参数
root@ubuntu:/home/bixiaopeng# grep 888 /etc/passwd
root@ubuntu:/home/bixiaopeng# useradd -u 888 -g bilaoshi alex
root@ubuntu:/home/bixiaopeng# grep alex /etc/passwd /etc/shadow /etc/group
/etc/passwd:alex:x:888:1002::/home/alex:/bin/sh
/etc/shadow:alex:!:15934:0:99999:7:::

4. 新建一个系统账号,加上参数 -r 
root@ubuntu:/home/bixiaopeng# useradd -r alex2
root@ubuntu:/home/bixiaopeng# grep alex2 /etc/passwd /etc/shadow /etc/group
/etc/passwd:alex2:x:999:999::/home/alex2:/bin/sh
/etc/shadow:alex2:!:15934::::::
/etc/group:alex2:x:999:
 

3. 添加用户(useradd)默认值

 
在 linux 中使用 useradd 去新增用户时,一些在 /etc/passwd 中的值是会去参考 /etc/default/useradd 这个文件的。其文件内容基本如下:
root@ubuntu:/home/bixiaopeng# cat /etc/default/useradd
# Default values for useradd(8)
#
# The SHELL variable specifies the default login shell on your
# system.
# Similar to DHSELL in adduser. However, we use "sh" here because
# useradd is a low level utility and should be as general
# as possible
SHELL=/bin/sh  //老毕注:默认使用的shell
#
# The default group for users
# 100=users on Debian systems
# Same as USERS_GID in adduser
# This argument is used when the -n flag is specified.
# The default behavior (when -n and -g are not specified) is to create a
# primary user group with the same name as the user being added to the
# system.
# GROUP=100   //老毕注:默认的用户组
#
# The default home directory. Same as DHOME for adduser
# HOME=/home  //老毕注:账户目录地址
#
# The number of days after a password expires until the account
# is permanently disabled
# INACTIVE=-1   //老毕注:密码过期的宽限时间,对应 /etc/shadow 的第七栏
#
# The default expire date
# EXPIRE=  //老毕注:账号失效日期,对应 /etc/shadow 的第八栏
#
# The SKEL variable specifies the directory containing "skeletal" user
# files; in other words, files such as a sample .profile that will be
# copied to the new user's home directory when it is created.
# SKEL=/etc/skel   //老毕注:用户家目录里面的内容参照文件(里面基本上全为隐藏文件——>以“.”开头的文件)
#
# Defines whether the mail spool should be created while
# creating the account
# CREATE_MAIL_SPOOL=yes  //老毕注:建立使用者的mailbox
 

4. 修改用户的设置

对现有用户的修改,比较常用的主要是:
1. 修改密码(用passwd) 2.修改用户的登录shell 3.修改用户所属的默认组 4.设置帐号有效期 5.修改用户的说明信息等等 6.修改用户主目录。

1. passwd 用户名 【回车输入密码就可以了】

2. 修改用户的登录shell 

使用chsh命令可以修改自己的shell,只有超级用户才能用chsh username为其它用户修改shell设置。
注意,指定的shell必须是列入/etc/shells文件中的shell,否则该用户将不能登陆。

一般,比较常见的shells文件包括下面这些shell:

/bin/bash2 
/bin/bash 
/bin/sh 
/bin/ash 
/bin/bsh 
/bin/tcsh 
/bin/csh 

也可以使用usermod命令修改shell信息:
usermod -s /bin/bash bilaoshi 

其中/bin/bash和bilaoshi应取相应的shell路径文件名及用户名。

3. 修改用户所属的默认组
这个功能也可以通过usermod命令来实现,使用-g参数,例如把bilaoshi的默认组改为bixiaopeng,可以使用如下命令:
usermod -g bixiaopeng bilaoshi 
注意:nobody在类UNIX系统中一般都意味着没有任何权限。
4.设置帐号有效期
如果使用了影子口令,则可以使用如下命令来修改一个帐号的有效期:
usermod -e MM/DD/YY username 

例如把用户bilaoshi的有效期定为2013年12月31日:

usermod -e 12/31/13 bilaoshi 

注意: 如果把该用户的有效期设为已经过去的时间,就可以暂时禁止该用户登录系统。

5. 修改用户的说明信息

修改用户的说明信息,最简单的方法莫过于直接修改/etc/passwd文件,找到对应的用户记录行,例如下列行:

bilaoshi:x:1002:1002::/home/bilaoshi:/bin/sh 

你可以直接在第四个冒号和第五个冒号之间插入该用户的说明就可以了。其实,很多用户设置都可以在这修改,比如该行最后一部分/bin/bash就是用户登录shell的设置。

6. 修改用户主目录

修改用户的主目录主要使用usermod命令的-d参数,例如:

usermod -d /main bilaoshi 

这一行将bilaoshi的主目录改到/main。
如果想将现有主目录的主要内容转移到新的目录,应该使用-m开关,如下所示:

usermod -d -m /main bilaoshi 

 

5. 删除用户账号

此时我的用户已经这么多了
那我们想办法删除一个吧
root@ubuntu:~# userdel wirelessqa

ok,此时用户wirelessqa就被删除了 

6. 你还应该知道的事

1. /etc/passwd文件说明

oot@ubuntu:/home/account# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
……..
saned:x:114:123::/home/saned:/bin/false
bixiaopeng:x:1000:1000:bixiaopeng,,,:/home/bixiaopeng:/bin/bash
bilaoshi:x:1002:1002::/home/bilaoshi:/bin/sh
alex:x:888:1002::/home/alex:/bin/sh
alex2:x:999:999::/home/alex2:/bin/sh

在passwd的文件里,每一行被冒号(":")分成7个部分,分别是:
[用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell] 
其中:

⒈[用户名]是passwd文件里各记录行唯一的有"唯一性"要求的域。也就是说每一行的第一个区域的内容都不能相同,其它区域就无所谓了。

⒉[密码]区域在以前,保存着一个经过不可逆的哈希算法进行DES加密的13位字符,但不包括单引号和冒号。这13位字符中,前两位是密钥,在加密的 时候随机生成的。由于这个字符串不包括单引号,所以以前有一种不修改密码又禁止用户登录的方式就是在密码前面加一个单引号。值得注意的是,现在由于使用了 shadow口令,在密码区域只有一个x字符。 

⒊[UID]虽然是系统用来标志文件归属,确定各种权限的标志,但这个区域的内容并不要求唯一的。比较常见而又与安全问题相关的一个例子是有多个 UID和GID均为0的用户帐号。注意到在该文件最后一行还有一个UID和GID为0的用户imnotroot,虽然它声称自己不是root,但是它却有 和root完全相同的权限,因为系统并非根据[用户名],而是根据UID和GID来分用户的权力的。所以,这种情况无疑为系统埋下了安全的炸弹。但是,当 imnorroot做锁定屏幕等操作的时候,如果它的密码和root的不一样,它将无法解锁,因为系统只是查到第一个UID为0的用户(自然是root) 后,就不在往下查找了——它当UID也是唯一的。

⒋[GID]用户默认的组ID,这个ID可以在文件/etc/group里查到对应的组名。

⒌[身份描述]:就是用户的身份说明,默认的是无任何说明,可人工添加。

⒍[主目录]:用户的主目录,可以使用前面介绍的命令修改。

⒎[登录shell]:用户登录时系统提供的shell

<注意>:[UID]和[GID]小于500的一般都是系统自己保留,不做普通用户和组的标识的,所以新增加的用户和组一般都是UID和GID大于500的。
 

2. /etc/group文件说明

root@ubuntu:/home/account# cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:bixiaopeng
…...
pulse-access:x:120:
utempter:x:121:
rtkit:x:122:
saned:x:123:
bixiaopeng:x:1000:
sambashare:x:124:bixiaopeng
bilaoshi:x:1002:
alex2:x:999:

它总共分四个部分:

[组名]:[密码域]:[GID]:[组员列表] 


新组的增加可以使用groupadd newgroupname  

1. 由于组一般都不用密码保护,所以虽然看起来密码域有个X字符,其实那只表示使用了SHADOW。
2. 组员列表用逗号分隔各个帐号3. 一个组的组员如果默认登录组就是它的话,那么在组员列表里将不显示这个组员的帐号,例如用如下命令 增加的用户:
 
useradd -g bilaoshi bilaoshi 
在/etc/group文件里bilaoshi的组员列表将不显示这个组员,而只是在passwd文件中的GID被设置为1002。而使用如下命令:
root@ubuntu:/home/account# usermod -G bilaoshi,alex2 bilaoshi 
root@ubuntu:/home/account# cat /etc/group
root:x:0:
….
utempter:x:121:
rtkit:x:122:
saned:x:123:
bixiaopeng:x:1000:
sambashare:x:124:bixiaopeng
bilaoshi:x:1002:bilaoshi
alex2:x:999:bilaoshi 

就可以看见相关的组后边加上了bilaoshi帐号。当然我们也可以编辑此文件

订阅

微信搜索“毕小烦”或者扫描下面的二维码,即可订阅我的文章。

image.png

如果文章对你有帮助,请随手点个赞吧!

(完)

 

 

<think>首先,用户的问题是关于Linux用户账户管理的命令useradd, passwd, userdel的使用指南。我需要基于提供的引用信息来构建回答。引用包括了useraddpasswduserdel命令选项和用法示例。 系统级指令要求: - 行内数学表达式用$...$格式(但这里可能不涉及数学,所以忽略)。 - 独立公式用$$...$$(不适用)。 - LaTeX语法正确(不涉及复杂数学)。 - 使用中文回答。 - 生成相关问题。 - 引用末尾添加引用标识。 用户可见层要求: - 回答结构清晰,逐步解决问题。 - 保证真实可靠。 结构回答: 1. **介绍命令**:简要解释每个命令的作用。 2. **详细用法**:基于引用,解释useraddpasswduserdel的选项和示例。 3. **示例**:提供简单示例代码或命令。 4. **总结**:强调关键点。 5. **相关问题**:生成相关问题。 引用信息摘要: - useradd: 用于创建新用户,选项如-c(备注)、-d(主目录)、-e(有效期)、-g(主组)、-G(附加组)、-m(自动创建主目录)、-s(shell)、-u(用户ID)等。 - passwd: 用于设置或修改用户密码。 - userdel: 用于删除用户,选项如-r(删除主目录和邮件池)。 具体引用: - [^1]: 提到useradd建立账号保存在/etc/passwdpasswd设置密码userdel删除账号。选项列表。 - [^2]: useradd命令参数详解。 - [^3]: 创建用户useradd abc,切换用户su abc。 - [^4]: 示例useradd -d /home/sam -m sam。 - [^5]: userdel选项如-f(强制)、-r(删除主目录)。 回答结构: - **开头**:介绍用户管理的重要性。 - **useradd**:解释命令、常用选项、示例。 - **passwd**:解释命令、用法、示例。 - **userdel**:解释命令、选项、示例。 - **总结**:简要回顾。 - **相关问题**:生成3-5个相关问题。 确保语言中文,专业但易懂。</think>### Linux 用户账户管理命令使用指南 在Linux系统中,用户账户管理是系统管理员的核心任务之一。通过命令如`useradd`(创建用户)、`passwd`(设置密码)和`userdel`(删除用户),可以高效管理用户权限和安全。本指南基于官方文档和最佳实践,逐步解释这些命令的用法、选项和示例。所有操作需在root权限下执行(使用`sudo`或切换到root用户)。 --- ### 1. **useradd 命令:创建新用户** `useradd`用于创建新用户账户。默认情况下,新用户信息保存在`/etc/passwd`文件中,主目录通常位于`/home/用户名`下(除非指定其他选项)。命令会自动复制`/etc/skel`目录下的配置文件到用户主目录(如`.bashrc`)[^1][^3]。 #### 常用选项及功能: - **-c "备注"**:添加用户备注信息(例如:`-c "开发人员"`)。 - **-d 目录路径**:指定用户登录时的主目录(例如:`-d /home/newuser`)。 - **-e 日期**:设置账号有效期(格式为YYYY-MM-DD),过期后账号自动锁定(例如:`-e 2024-12-31`)[^1][^2]。 - **-g 主组名**:指定用户的主用户组(例如:`-g developers`)。 - **-G 附加组名**:指定用户的附加组(多个组用逗号分隔,例如:`-G sudo,webadmin`)。 - **-m**:自动创建用户主目录(默认行为,除非使用`-M`禁用)[^1][^4]。 - **-s shell路径**:指定用户登录后的默认shell(例如:`-s /bin/bash`)。 - **-u 用户ID**:手动指定用户ID(UID),避免系统自动分配冲突(例如:`-u 1001`)[^2][^5]。 - **-r**:创建系统账户(无主目录,适用于服务账户)[^2][^5]。 #### 示例: - 创建用户`tom`,自动生成主目录: ```bash useradd -m tom # 主目录默认在/home/tom ``` - 创建用户`sam`,指定主目录和备注: ```bash useradd -d /home/sam -m -c "测试用户" sam # 创建/home/sam目录 ``` - 创建系统账户`serviceuser`: ```bash useradd -r -s /sbin/nologin serviceuser # 无登录shell ``` 创建后,使用`id 用户名`命令验证用户信息。 --- ### 2. **passwd 命令:设置或修改密码** `passwd`用于设置或更新用户密码。创建用户后必须执行此命令,否则用户无法登录。密码策略(如复杂度)由系统配置决定[^1][^3]。 #### 用法: - **设置密码**:`passwd 用户名`,输入两次新密码(例如:`passwd tom`)。 - **修改当前用户密码**:直接运行`passwd`(无需参数)。 - **管理员选项**: - `-l 用户名`:锁定用户(禁止登录)。 - `-u 用户名`:解锁用户。 - `-e`:强制用户下次登录时修改密码[^1][^2]。 #### 示例: - 为用户`tom`设置密码: ```bash passwd tom # 输出:Enter new UNIX password: [输入密码] ``` - 锁定用户`sam`: ```bash passwd -l sam ``` --- ### 3. **userdel 命令删除用户** `userdel`用于删除用户账户。默认仅删除`/etc/passwd`中的记录,不删除主目录文件(需手动清理)[^1][^5]。 #### 常用选项: - **-r**:删除用户主目录和邮件池(推荐使用,避免残留文件)。 - **-f**:强制删除(即使用户已登录或进程运行中)。 - **-Z**:删除SELinux用户映射(仅适用于SELinux系统)[^5]。 #### 示例: - 删除用户`tom`及其主目录: ```bash userdel -r tom # 删除/home/tom目录 ``` - 强制删除锁定的用户`sam`: ```bash userdel -f sam ``` --- ### 总结 - **关键步骤**:创建用户(`useradd`)→ 设置密码(`passwd`)→ 删除用户(`userdel -r`)。 - **安全建议**: - 使用`-e`选项设置账号有效期,增强安全性[^2]。 - 定期审查`/etc/passwd`文件,确保无未授权账户[^1]。 - **注意事项**:操作需root权限;误删用户可能导致数据丢失,建议备份重要文件。 通过以上命令,您可以高效管理Linux用户账户。如需更详细信息,请参考`man useradd`或`man passwd`手册页。 --- ### 相关问题 1. 如何设置用户密码过期策略(如强制定期修改密码)? 2. useradd 命令中的 -G 选项如何用于添加用户到多个组? 3. 删除用户时,如何保留主目录数据但移除账户权限? 4. 如何查看系统中所有用户及其ID列表? 5. Linux用户管理命令(如usermod)如何用于修改现有用户属性?
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕小烦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值