我最近一直在从事一个名为arch loop的项目,该项目是Arch Linux的自动安装程序。我已经看到了一些安装程序和脚本来简化Arch的安装,但是我每天要安装Arch Linux的次数超过三次,因此遵循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
将密码发送到passwd
系统中的chroot
二进制文件。但是我不知道为什么它不起作用。安装完成后通过sudo
命令验证密码时。密码似乎可以正常使用。但是,当尝试从tty用非root用户登录时,密码似乎不正确。
我已经尝试过的东西:
useradd
选项将其传递给-p
二进制文件:perl -e 'print crypt("password", "\$6\$SALTsalt\$") . "\n"'"
请稍后指导我如何设置用户提供的密码,而无需任何用户交互。
谢谢:)
答案 0 :(得分:0)
以下方法适用于Ubuntu,我认为它也应适用于Arch。
首先,您应该有一台安装Arch的计算机。然后,使用以下两个命令添加所需的用户:useradd
和passwd
。之后,您可以cat /etc/shadow | grep [username]
来获取您添加的用户密码的信息,它应该是一个字符串,比方说它是XXX
。
现在,在目标系统上的arch-chroot /mnt useradd -m -g users -G wheel -s /usr/bin/bash archuser
之后,您将来自cat /etc/shadow | grep [username]
的字符串添加到目标系统的/etc/shadow
中。该命令应类似于arch-chroot /mnt sed -i "XXX" /etc/shadow
。
另一件事,您必须确保获取密码信息的Arch版本与目标系统的版本相同。
答案 1 :(得分:0)
存在chpasswd命令。仅在批处理脚本中使passwd
可用。只要做:
echo "root:rootpassword" | arch-chroot /mnt chpasswd
或者可能更好,不需要mount -o bind
,sys
,proc
和dev
目录:
echo "root:rootpassword" | chpasswd -R /mnt
@主观:很抱歉,该项目看起来还可以,但是还有很多工作要做。我猜目标是使Archlinux更接近“普通”用户。但是,我不喜欢为该项目选择python。使用普通的POSIX sh将使所有人都可以使用。我不喜欢硬编码分区,mlocate
(您真的使用mlocate
吗?),多个arch-chroot调用,您只能执行一个大脚本,而不处理os.system
错误代码(!),甚至没有-Sy
(!)的多个pacman调用(如果上游更新存储库,pacman可能会失败),还有其他我不喜欢的事情。除此之外,还不错的python抽象和很酷的目标。我记得几年(或更早)之前的旧archlinux安装脚本,它们很好,但是我认为无论如何都使用命令本身。祝你好运。