我最近在做一个名为:arch loop 的项目,它是 Arch Linux 的自动安装程序。我看过一些安装程序和脚本来简化 Arch 安装,但我每天安装 Arch Linux 超过 3 次,所以遵循 Arch-way 需要很长时间并且不断需要用户交互。
问题:
密码是,非root用户的信息是自己创建的,在合适的时候,我们将使用以下命令:
arch-chroot /mnt useradd -m -g users -G wheel -s /usr/bin/bash archuser
arch-chroot /mnt bash -c "echo -e 'password\npassword\n' | passwd
arch-chroot /mnt bash -c "echo -e 'rootpassword\nrootpassword\n' | passwd root
将密码发送到 chroot
系统中的 passwd
二进制文件。但我不知道为什么它不起作用。安装完成后通过 sudo
命令验证密码时。密码似乎可以正常工作。但是当尝试从 tty 以非 root 用户登录时,密码似乎不正确。
我已经尝试过的事情:
- 使用以下代码手动加密提供的密码,并使用
-p
选项将其传递给useradd
二进制文件:
perl -e 'print crypt("password", "\$6\$SALTsalt\$") . "\n"'"
请指导我稍后如何设置用户提供的密码,而不需要任何用户交互。
谢谢你:)
最佳答案
存在 chpasswd命令。它只是为了使 passwd
在批处理脚本中可用。只是做:
echo "root:rootpassword" | arch-chroot /mnt chpasswd
或者可能更好,不需要 mount -o bind
sys
proc
和 dev
目录:
echo "root:rootpassword" | chpasswd -R /mnt
@subjective:抱歉,这个项目看起来不错,但还有很多工作要做。我想这样做的目的是让 Archlinux 更接近“普通”用户。但是,我不喜欢为项目选择 python。使用普通的 POSIX sh 将使它对所有人可用。我不喜欢硬编码分区、mlocate
(你真的使用 mlocate
吗?)、多个 arch-chroot 调用,你可以只执行一个大脚本,而不处理 os.system
错误代码 (!),甚至没有 -Sy
(!) 的多个 pacman 调用(如果上游更新 repos,pacman 可能会失败),还有一些我不知道的事情不喜欢。除此之外,漂亮的 python 抽象和很酷的目标。我记得几年(或更多)年前的旧 archlinux 安装脚本,它们很好,但我认为无论如何它们自己都使用了命令。祝你好运。
关于linux - 如何在没有用户交互的情况下创建用户和设置密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55430287/