在Linux中编辑/etc/passwd和/etc/group文件的正确方法

时间:2020-03-21 11:47:25  来源:igfitidea点击:

本简要教程说明了在Linux中使用vipw和vigr命令编辑/etc/passwd和/etc/group文件的正确方法。
为什么我们不能仅仅使用Vi或者nano这样的文本编辑器来编辑它们并完成它呢?
我们可能想知道!好吧,想象一下这种情况。
root用户当前正在使用Vi或者其他一些文本编辑器来编辑/etc/passwd文件。
同时,另一个用户尝试在root用户编辑/etc/passwd文件时更改其密码。
因此,密码更改可能不会在此文件中更新,并且用户可能无法登录。
这是vipw和vigr命令进入紧急状态的地方。

vipw和vigr命令用于在Linux系统中安全地编辑文件/etc/passwd和/etc/group。
他们将在编辑/etc/passwd和/etc/group文件时放置适当的锁,以防止其他用户对其进行任何更改并避免文件损坏。
当我们使用-s标志运行这些命令时,它们将分别编辑这些文件的影子版本,例如:/etc/shadow和/etc/gshadow。

使用vipw和vigr命令编辑/etc/passwd和/etc/group文件的正确方法

要安全地编辑/etc/password文件,只需运行:

$sudo vipw

要安全地编辑/etc/group文件,请运行:

$sudo vigr

现在,vipw和vigr命令将锁定/etc/passwd和/etc/group文件,并阻止其他用户进行任何更改。

要验证这一点,请打开两个终端窗口。
在一个窗口中运行“ sudo vipw”,然后尝试在另一个窗口中更改用户的密码。

直到退出vipw命令,密码才会更新。
因此,其他用户在以root用户身份进行编辑时,可能不会无意或者有意对/etc/passwd文件进行任何更改。
关闭/etc/passwd后,密码将成功更新。

我们也可以以普通用户身份登录,然后尝试在另一个“终端”窗口中更改用户的密码。
除非关闭vipw命令,否则密码不会更改。

在编辑/etc/passwd文件vipw命令时,我们甚至无法创建任何新用户。

$sudo useradd kumar
useradd: cannot lock /etc/passwd; try again later.

同样,要编辑这些文件的影子版本,例如:/etc/shadow和/etc/gshadow,请使用-s标志。

$sudo vipw -s
$sudo vigr -s

vipw和vipr命令还支持其他选项:

-g, --group
Edit group database.
-h, --help
Display help message and exit.
-p, --passwd
Edit passwd database.
-q, --quiet
Quiet mode.
-R, --root CHROOT_DIR
Apply changes in the CHROOT_DIR directory and use the configuration files from the
CHROOT_DIR directory.
-s, --shadow
Edit shadow or gshadow database

有关更多详细信息,请参见手册页。

$man vipw
$man vigr