]> andersk Git - gssapi-openssh.git/blame - openssh/contrib/cygwin/ssh-user-config
Import of OpenSSH 4.3p1
[gssapi-openssh.git] / openssh / contrib / cygwin / ssh-user-config
CommitLineData
3c0ef626 1#!/bin/sh
2#
cdd66111 3# ssh-user-config, Copyright 2000, 2001, 2002, 2003, Red Hat Inc.
3c0ef626 4#
5# This file is part of the Cygwin port of OpenSSH.
6
cdd66111 7# Directory where the config files are stored
8SYSCONFDIR=/etc
9
3c0ef626 10progname=$0
11auto_answer=""
12auto_passphrase="no"
13passphrase=""
14
15request()
16{
17 if [ "${auto_answer}" = "yes" ]
18 then
19 return 0
20 elif [ "${auto_answer}" = "no" ]
21 then
22 return 1
23 fi
24
25 answer=""
26 while [ "X${answer}" != "Xyes" -a "X${answer}" != "Xno" ]
27 do
28 echo -n "$1 (yes/no) "
29 read answer
30 done
31 if [ "X${answer}" = "Xyes" ]
32 then
33 return 0
34 else
35 return 1
36 fi
37}
38
cdd66111 39# Check if running on NT
40_sys="`uname -a`"
41_nt=`expr "$_sys" : "CYGWIN_NT"`
42# If running on NT, check if running under 2003 Server or later
43if [ $_nt -gt 0 ]
44then
45 _nt2003=`uname | awk -F- '{print ( $2 >= 5.2 ) ? 1 : 0;}'`
46fi
47
3c0ef626 48# Check options
49
50while :
51do
52 case $# in
53 0)
54 break
55 ;;
56 esac
57
58 option=$1
59 shift
60
61 case "$option" in
62 -d | --debug )
63 set -x
64 ;;
65
66 -y | --yes )
67 auto_answer=yes
68 ;;
69
70 -n | --no )
71 auto_answer=no
72 ;;
73
74 -p | --passphrase )
75 with_passphrase="yes"
76 passphrase=$1
77 shift
78 ;;
79
80 *)
81 echo "usage: ${progname} [OPTION]..."
82 echo
83 echo "This script creates an OpenSSH user configuration."
84 echo
85 echo "Options:"
86 echo " --debug -d Enable shell's debug output."
87 echo " --yes -y Answer all questions with \"yes\" automatically."
88 echo " --no -n Answer all questions with \"no\" automatically."
89 echo " --passphrase -p word Use \"word\" as passphrase automatically."
90 echo
91 exit 1
92 ;;
93
94 esac
95done
96
97# Ask user if user identity should be generated
98
cdd66111 99if [ ! -f ${SYSCONFDIR}/passwd ]
3c0ef626 100then
cdd66111 101 echo "${SYSCONFDIR}/passwd is nonexistant. Please generate an ${SYSCONFDIR}/passwd file"
3c0ef626 102 echo 'first using mkpasswd. Check if it contains an entry for you and'
103 echo 'please care for the home directory in your entry as well.'
104 exit 1
105fi
106
107uid=`id -u`
cdd66111 108pwdhome=`awk -F: '{ if ( $3 == '${uid}' ) print $6; }' < ${SYSCONFDIR}/passwd`
3c0ef626 109
110if [ "X${pwdhome}" = "X" ]
111then
cdd66111 112 echo "There is no home directory set for you in ${SYSCONFDIR}/passwd."
3c0ef626 113 echo 'Setting $HOME is not sufficient!'
114 exit 1
115fi
116
117if [ ! -d "${pwdhome}" ]
118then
cdd66111 119 echo "${pwdhome} is set in ${SYSCONFDIR}/passwd as your home directory"
3c0ef626 120 echo 'but it is not a valid directory. Cannot create user identity files.'
121 exit 1
122fi
123
124# If home is the root dir, set home to empty string to avoid error messages
125# in subsequent parts of that script.
126if [ "X${pwdhome}" = "X/" ]
127then
128 # But first raise a warning!
cdd66111 129 echo "Your home directory in ${SYSCONFDIR}/passwd is set to root (/). This is not recommended!"
3c0ef626 130 if request "Would you like to proceed anyway?"
131 then
132 pwdhome=''
133 else
134 exit 1
135 fi
136fi
137
cdd66111 138if [ -d "${pwdhome}" -a $_nt -gt 0 -a -n "`chmod -c g-w,o-w "${pwdhome}"`" ]
139then
140 echo
141 echo 'WARNING: group and other have been revoked write permission to your home'
142 echo " directory ${pwdhome}."
143 echo ' This is required by OpenSSH to allow public key authentication using'
144 echo ' the key files stored in your .ssh subdirectory.'
145 echo ' Revert this change ONLY if you know what you are doing!'
146 echo
147fi
148
3c0ef626 149if [ -e "${pwdhome}/.ssh" -a ! -d "${pwdhome}/.ssh" ]
150then
151 echo "${pwdhome}/.ssh is existant but not a directory. Cannot create user identity files."
152 exit 1
153fi
154
155if [ ! -e "${pwdhome}/.ssh" ]
156then
157 mkdir "${pwdhome}/.ssh"
158 if [ ! -e "${pwdhome}/.ssh" ]
159 then
160 echo "Creating users ${pwdhome}/.ssh directory failed"
161 exit 1
162 fi
163fi
164
cdd66111 165if [ $_nt -gt 0 ]
166then
167 _user="system"
168 if [ $_nt2003 -gt 0 ]
169 then
170 grep -q '^sshd_server:' ${SYSCONFDIR}/passwd && _user="sshd_server"
171 fi
172 if ! setfacl -m "u::rwx,u:${_user}:r--,g::---,o::---" "${pwdhome}/.ssh"
173 then
174 echo "${pwdhome}/.ssh couldn't be given the correct permissions."
175 echo "Please try to solve this problem first."
176 exit 1
177 fi
178fi
179
3c0ef626 180if [ ! -f "${pwdhome}/.ssh/identity" ]
181then
182 if request "Shall I create an SSH1 RSA identity file for you?"
183 then
184 echo "Generating ${pwdhome}/.ssh/identity"
185 if [ "${with_passphrase}" = "yes" ]
186 then
187 ssh-keygen -t rsa1 -N "${passphrase}" -f "${pwdhome}/.ssh/identity" > /dev/null
188 else
189 ssh-keygen -t rsa1 -f "${pwdhome}/.ssh/identity" > /dev/null
190 fi
191 if request "Do you want to use this identity to login to this machine?"
192 then
193 echo "Adding to ${pwdhome}/.ssh/authorized_keys"
194 cat "${pwdhome}/.ssh/identity.pub" >> "${pwdhome}/.ssh/authorized_keys"
195 fi
196 fi
197fi
198
199if [ ! -f "${pwdhome}/.ssh/id_rsa" ]
200then
2c06c99b 201 if request "Shall I create an SSH2 RSA identity file for you?"
3c0ef626 202 then
203 echo "Generating ${pwdhome}/.ssh/id_rsa"
204 if [ "${with_passphrase}" = "yes" ]
205 then
206 ssh-keygen -t rsa -N "${passphrase}" -f "${pwdhome}/.ssh/id_rsa" > /dev/null
207 else
208 ssh-keygen -t rsa -f "${pwdhome}/.ssh/id_rsa" > /dev/null
209 fi
210 if request "Do you want to use this identity to login to this machine?"
211 then
0fff78ff 212 echo "Adding to ${pwdhome}/.ssh/authorized_keys"
213 cat "${pwdhome}/.ssh/id_rsa.pub" >> "${pwdhome}/.ssh/authorized_keys"
3c0ef626 214 fi
215 fi
216fi
217
218if [ ! -f "${pwdhome}/.ssh/id_dsa" ]
219then
2c06c99b 220 if request "Shall I create an SSH2 DSA identity file for you?"
3c0ef626 221 then
222 echo "Generating ${pwdhome}/.ssh/id_dsa"
223 if [ "${with_passphrase}" = "yes" ]
224 then
225 ssh-keygen -t dsa -N "${passphrase}" -f "${pwdhome}/.ssh/id_dsa" > /dev/null
226 else
227 ssh-keygen -t dsa -f "${pwdhome}/.ssh/id_dsa" > /dev/null
228 fi
229 if request "Do you want to use this identity to login to this machine?"
230 then
0fff78ff 231 echo "Adding to ${pwdhome}/.ssh/authorized_keys"
232 cat "${pwdhome}/.ssh/id_dsa.pub" >> "${pwdhome}/.ssh/authorized_keys"
3c0ef626 233 fi
234 fi
235fi
236
cdd66111 237if [ $_nt -gt 0 -a -e "${pwdhome}/.ssh/authorized_keys" ]
238then
239 if ! setfacl -m "u::rw-,u:${_user}:r--,g::---,o::---" "${pwdhome}/.ssh/authorized_keys"
240 then
241 echo
242 echo "WARNING: Setting correct permissions to ${pwdhome}/.ssh/authorized_keys"
243 echo "failed. Please care for the correct permissions. The minimum requirement"
244 echo "is, the owner and ${_user} both need read permissions."
245 echo
246 fi
247fi
248
3c0ef626 249echo
250echo "Configuration finished. Have fun!"
This page took 0.085248 seconds and 5 git commands to generate.