diff options
author | Alexander Hall <halex@cvs.openbsd.org> | 2013-12-01 01:54:24 +0000 |
---|---|---|
committer | Alexander Hall <halex@cvs.openbsd.org> | 2013-12-01 01:54:24 +0000 |
commit | 559c71ef432a77242249c6a2619ba29b15b8b8a9 (patch) | |
tree | 0848cd5948b3974714ad9e130613752a87553126 | |
parent | 04cf7e9e8ddba9f5e688c2974ae3e525e18d7795 (diff) |
Allows the autoinstaller to pass a public ssh key for inclusion in the
user's .ssh/authorized_keys. Deliberately not in interactive mode since
I am not sure it's worth adding another question that only quite few
people would enjoy.
ok rpe@
-rw-r--r-- | distrib/miniroot/install.sh | 16 | ||||
-rw-r--r-- | distrib/miniroot/install.sub | 6 |
2 files changed, 16 insertions, 6 deletions
diff --git a/distrib/miniroot/install.sh b/distrib/miniroot/install.sh index 4ac5bfe0872..aa20bfc18bb 100644 --- a/distrib/miniroot/install.sh +++ b/distrib/miniroot/install.sh @@ -1,5 +1,5 @@ #!/bin/ksh -# $OpenBSD: install.sh,v 1.236 2013/11/19 22:20:06 halex Exp $ +# $OpenBSD: install.sh,v 1.237 2013/12/01 01:54:23 halex Exp $ # $NetBSD: install.sh,v 1.5.2.8 1996/08/27 18:15:05 gwr Exp $ # # Copyright (c) 1997-2009 Todd Miller, Theo de Raadt, Ken Westerback @@ -284,20 +284,26 @@ apply if [[ -n $user ]]; then _encr=$(encr_pwd "$userpass") - uline="${user}:${_encr}:1000:1000:staff:0:0:${username}:/home/${user}:/bin/ksh" + _home=/home/$user + uline="${user}:${_encr}:1000:1000:staff:0:0:${username}:$_home:/bin/ksh" echo "$uline" >> /mnt/etc/master.passwd echo "${user}:*:1000:" >> /mnt/etc/group echo ${user} > /mnt/root/.forward - mkdir -p /mnt/home/$user - (cd /mnt/etc/skel; cp -pR . /mnt/home/$user) + _home=/mnt$_home + mkdir -p $_home + (cd /mnt/etc/skel; cp -pR . $_home) (umask 077 && sed "s,^To: root\$,To: ${username} <${user}>," \ /mnt/var/mail/root > /mnt/var/mail/$user ) - chown -R 1000:1000 /mnt/home/$user /mnt/var/mail/$user + chown -R 1000:1000 $_home /mnt/var/mail/$user echo "1,s@wheel:.:0:root\$@wheel:\*:0:root,${user}@ w q" | ed /mnt/etc/group 2>/dev/null + + # Add public ssh key to authorized_keys + [[ -n "$userkey" ]] && + print -r -- "$userkey" >> $_home/.ssh/authorized_keys fi if [[ -n "$_rootpass" ]]; then diff --git a/distrib/miniroot/install.sub b/distrib/miniroot/install.sub index 1f2f261341d..78674a3a548 100644 --- a/distrib/miniroot/install.sub +++ b/distrib/miniroot/install.sub @@ -1,4 +1,4 @@ -# $OpenBSD: install.sub,v 1.707 2013/11/29 22:28:12 rpe Exp $ +# $OpenBSD: install.sub,v 1.708 2013/12/01 01:54:23 halex Exp $ # $NetBSD: install.sub,v 1.5.2.8 1996/09/02 23:25:02 pk Exp $ # # Copyright (c) 1997-2009 Todd Miller, Theo de Raadt, Ken Westerback @@ -380,6 +380,10 @@ user_setup() { askpassword $user userpass=$_password + userkey= + _autorespond "Public ssh key for $user" none && + [[ $resp != none ]] && userkey=$resp + if [[ $sshd == y ]]; then ask_yn "Since you set up a user, disable sshd(8) logins to root?" yes sshd_disableroot=$resp |