我正在寻找一种方法来通过 bash 脚本更改 Linux 系统上的 root 用户密码,而无需启动系统。到目前为止,我发现的唯一事情是删除密码或使用我不喜欢使用的 chroot。
我知道如何清空 root 密码,但我需要将其更改为脚本前面定义的不同密码。
我对整个文件系统具有 root 访问权限。
系统正在使用影子密码,有没有办法在不登录/chrooting 的情况下生成加密的影子密码?
还有其他方法可以从脚本更改 root 密码吗?
问问题
3816 次
2 回答
8
密码哈希在/etc/shadow
. 您可以简单地用生成的(加盐的)哈希替换它。密码哈希的格式在crypt(3)中描述。默认值为 DES,但在 glibc2 系统上,它可以包含几种不同的加密方法之一:
ID | Method
---------------------------------------------------------
1 | MD5
2a | Blowfish (not in mainline glibc; added in some
| Linux distributions)
5 | SHA-256 (since glibc 2.7)
6 | SHA-512 (since glibc 2.7)
所以影子密码字符串可能如下所示:$5$saltysalt$KhboodWTnuXJ5siXvWx5mxYXbnuNJOxROfD1inCILfD
在这种情况下,第一个$5$部分表示它是 SHA-256 哈希,中间部分是盐,其余部分是实际哈希。
要生成一个,最好使用系统的 crypt(3) 函数,例如使用最小的 C 程序:
#include <stdio.h>
#include <crypt.h>
int main(int argc, char *argv[]) {
printf("%s\n", crypt(argv[1], argv[2]));
}
编译cc mkpass.c -o mkpass -lcrypt
然后使用明文密码和盐字符串运行以生成可以放入的字符串/etc/shadow
:
./mkpass yourpassword yoursalt # DES (default)
./mkpass yourpassword '$6$yoursalt$encrypted' # SHA-512 (quote your $)
较旧的 Linux 系统可能不支持第二种形式。最好查看影子文件中的现有字符串并使用相同的哈希类型(来自顶部的 $id$ 列表)。
于 2012-06-28T11:58:01.487 回答
-1
按e
操作系统选择菜单屏幕中的 Ubuntu 选项卡。更新命令如下
rw init=/bin/bash
它会丢弃你的 linux root shell。只需输入名为 passwd root 的命令即可更改您的 root 密码。
于 2015-04-02T08:07:26.370 回答