Procházet zdrojové kódy

Avoid any confusions with the admin user

Bob Mottram před 8 roky
rodič
revize
91ae203b8e
1 změnil soubory, kde provedl 90 přidání a 90 odebrání
  1. 90
    90
      src/freedombone-adduser

+ 90
- 90
src/freedombone-adduser Zobrazit soubor

@@ -48,26 +48,26 @@ do
48 48
     source $f
49 49
 done
50 50
 
51
-MY_USERNAME=$1
51
+ADD_USERNAME=$1
52 52
 SSH_PUBLIC_KEY="$2"
53 53
 GPG_KEYSERVER='hkp://keys.gnupg.net'
54 54
 SSH_PORT=2222
55 55
 COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
56 56
 DEFAULT_DOMAIN_NAME=
57 57
 
58
-if [ ! $MY_USERNAME ]; then
58
+if [ ! $ADD_USERNAME ]; then
59 59
     echo $'No username was given'
60 60
     exit 1
61 61
 fi
62 62
 
63
-if [ -d /home/$MY_USERNAME ]; then
64
-    echo $"The user $MY_USERNAME already exists"
63
+if [ -d /home/$ADD_USERNAME ]; then
64
+    echo $"The user $ADD_USERNAME already exists"
65 65
     exit 2
66 66
 fi
67 67
 
68 68
 if [ ! -f $COMPLETION_FILE ]; then
69 69
     echo $"$COMPLETION_FILE not found"
70
-    userdel -r $MY_USERNAME
70
+    userdel -r $ADD_USERNAME
71 71
     exit 3
72 72
 fi
73 73
 
@@ -75,10 +75,10 @@ fi
75 75
 MINIMUM_PASSWORD_LENGTH=$(cat /usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-passwords | grep 'MINIMUM_PASSWORD_LENGTH=' | head -n 1 | awk -F '=' '{print $2}')
76 76
 
77 77
 NEW_USER_PASSWORD="$(openssl rand -base64 30 | cut -c1-${MINIMUM_PASSWORD_LENGTH})"
78
-useradd -m -p "$NEW_USER_PASSWORD" -s /bin/bash $MY_USERNAME
79
-adduser $MY_USERNAME sasl
78
+useradd -m -p "$NEW_USER_PASSWORD" -s /bin/bash $ADD_USERNAME
79
+adduser $ADD_USERNAME sasl
80 80
 
81
-if [ ! -d /home/$MY_USERNAME ]; then
81
+if [ ! -d /home/$ADD_USERNAME ]; then
82 82
     echo $'Home directory was not created'
83 83
     exit 4
84 84
 fi
@@ -86,15 +86,15 @@ fi
86 86
 if [ "$SSH_PUBLIC_KEY" ]; then
87 87
     if [ ${#SSH_PUBLIC_KEY} -gt 5 ]; then
88 88
         if [ -f "$SSH_PUBLIC_KEY" ]; then
89
-            mkdir /home/$MY_USERNAME/.ssh
90
-            cp $SSH_PUBLIC_KEY /home/$MY_USERNAME/.ssh/authorized_keys
91
-            chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.ssh
89
+            mkdir /home/$ADD_USERNAME/.ssh
90
+            cp $SSH_PUBLIC_KEY /home/$ADD_USERNAME/.ssh/authorized_keys
91
+            chown -R $ADD_USERNAME:$ADD_USERNAME /home/$ADD_USERNAME/.ssh
92 92
             echo $'ssh public key installed'
93 93
         else
94 94
             if [[ "$SSH_PUBLIC_KEY" == "ssh-"* ]]; then
95
-                mkdir /home/$MY_USERNAME/.ssh
96
-                echo "$SSH_PUBLIC_KEY" > /home/$MY_USERNAME/.ssh/authorized_keys
97
-                chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.ssh
95
+                mkdir /home/$ADD_USERNAME/.ssh
96
+                echo "$SSH_PUBLIC_KEY" > /home/$ADD_USERNAME/.ssh/authorized_keys
97
+                chown -R $ADD_USERNAME:$ADD_USERNAME /home/$ADD_USERNAME/.ssh
98 98
                 echo $'ssh public key installed'
99 99
             else
100 100
                 echo $'The second parameter does not look like an ssh key'
@@ -104,102 +104,102 @@ if [ "$SSH_PUBLIC_KEY" ]; then
104 104
     fi
105 105
 fi
106 106
 
107
-if [ -d /home/$MY_USERNAME/Maildir ]; then
108
-    if grep -q "set from=" /home/$MY_USERNAME/.muttrc; then
109
-        sed -i "s|set from=.*|set from='$MY_USERNAME <$MY_USERNAME@$HOSTNAME>'|g" /home/$MY_USERNAME/.muttrc
107
+if [ -d /home/$ADD_USERNAME/Maildir ]; then
108
+    if grep -q "set from=" /home/$ADD_USERNAME/.muttrc; then
109
+        sed -i "s|set from=.*|set from='$ADD_USERNAME <$ADD_USERNAME@$HOSTNAME>'|g" /home/$ADD_USERNAME/.muttrc
110 110
     else
111
-        echo "set from='$MY_USERNAME <$MY_USERNAME@$HOSTNAME>'" >> /home/$MY_USERNAME/.muttrc
111
+        echo "set from='$ADD_USERNAME <$ADD_USERNAME@$HOSTNAME>'" >> /home/$ADD_USERNAME/.muttrc
112 112
     fi
113 113
 
114 114
     USERN='$USER@'
115
-    sed -i "s|$USERN|$MY_USERNAME@|g" /home/$MY_USERNAME/.procmailrc
115
+    sed -i "s|$USERN|$ADD_USERNAME@|g" /home/$ADD_USERNAME/.procmailrc
116 116
 fi
117 117
 
118 118
 # generate a gpg key
119
-echo "Making a GPG key for $MY_USERNAME@$HOSTNAME"
120
-mkdir /home/$MY_USERNAME/.gnupg
121
-echo "keyserver $GPG_KEYSERVER" >> /home/$MY_USERNAME/.gnupg/gpg.conf
122
-echo 'keyserver-options auto-key-retrieve' >> /home/$MY_USERNAME/.gnupg/gpg.conf
123
-echo '' >> /home/$MY_USERNAME/.gnupg/gpg.conf
124
-echo '# default preferences' >> /home/$MY_USERNAME/.gnupg/gpg.conf
125
-echo 'personal-digest-preferences SHA256' >> /home/$MY_USERNAME/.gnupg/gpg.conf
126
-echo 'cert-digest-algo SHA256' >> /home/$MY_USERNAME/.gnupg/gpg.conf
127
-echo 'default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed' >> /home/$MY_USERNAME/.gnupg/gpg.conf
128
-
129
-chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.gnupg
130
-chmod 700 /home/$MY_USERNAME/.gnupg
131
-chmod 600 /home/$MY_USERNAME/.gnupg/*
119
+echo "Making a GPG key for $ADD_USERNAME@$HOSTNAME"
120
+mkdir /home/$ADD_USERNAME/.gnupg
121
+echo "keyserver $GPG_KEYSERVER" >> /home/$ADD_USERNAME/.gnupg/gpg.conf
122
+echo 'keyserver-options auto-key-retrieve' >> /home/$ADD_USERNAME/.gnupg/gpg.conf
123
+echo '' >> /home/$ADD_USERNAME/.gnupg/gpg.conf
124
+echo '# default preferences' >> /home/$ADD_USERNAME/.gnupg/gpg.conf
125
+echo 'personal-digest-preferences SHA256' >> /home/$ADD_USERNAME/.gnupg/gpg.conf
126
+echo 'cert-digest-algo SHA256' >> /home/$ADD_USERNAME/.gnupg/gpg.conf
127
+echo 'default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed' >> /home/$ADD_USERNAME/.gnupg/gpg.conf
128
+
129
+chown -R $ADD_USERNAME:$ADD_USERNAME /home/$ADD_USERNAME/.gnupg
130
+chmod 700 /home/$ADD_USERNAME/.gnupg
131
+chmod 600 /home/$ADD_USERNAME/.gnupg/*
132 132
 
133 133
 # Generate a GPG key
134
-echo 'Key-Type: 1' > /home/$MY_USERNAME/gpg-genkey.conf
135
-echo 'Key-Length: 4096' >> /home/$MY_USERNAME/gpg-genkey.conf
136
-echo 'Subkey-Type: 1' >> /home/$MY_USERNAME/gpg-genkey.conf
137
-echo 'Subkey-Length: 4096' >> /home/$MY_USERNAME/gpg-genkey.conf
138
-echo "Name-Real:  $MY_USERNAME" >> /home/$MY_USERNAME/gpg-genkey.conf
139
-echo "Name-Email: $MY_USERNAME@$HOSTNAME" >> /home/$MY_USERNAME/gpg-genkey.conf
140
-echo 'Expire-Date: 0' >> /home/$MY_USERNAME/gpg-genkey.conf
141
-chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/gpg-genkey.conf
142
-su -c "gpg --batch --gen-key /home/$MY_USERNAME/gpg-genkey.conf" - $MY_USERNAME
143
-shred -zu /home/$MY_USERNAME/gpg-genkey.conf
144
-MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $MY_USERNAME@$HOSTNAME | grep 'pub '" - $MY_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
145
-MY_GPG_PUBLIC_KEY=/home/$MY_USERNAME/public_key.gpg
146
-su -c "gpg --output $MY_GPG_PUBLIC_KEY --armor --export $MY_GPG_PUBLIC_KEY_ID" - $MY_USERNAME
134
+echo 'Key-Type: 1' > /home/$ADD_USERNAME/gpg-genkey.conf
135
+echo 'Key-Length: 4096' >> /home/$ADD_USERNAME/gpg-genkey.conf
136
+echo 'Subkey-Type: 1' >> /home/$ADD_USERNAME/gpg-genkey.conf
137
+echo 'Subkey-Length: 4096' >> /home/$ADD_USERNAME/gpg-genkey.conf
138
+echo "Name-Real:  $ADD_USERNAME" >> /home/$ADD_USERNAME/gpg-genkey.conf
139
+echo "Name-Email: $ADD_USERNAME@$HOSTNAME" >> /home/$ADD_USERNAME/gpg-genkey.conf
140
+echo 'Expire-Date: 0' >> /home/$ADD_USERNAME/gpg-genkey.conf
141
+chown $ADD_USERNAME:$ADD_USERNAME /home/$ADD_USERNAME/gpg-genkey.conf
142
+su -c "gpg --batch --gen-key /home/$ADD_USERNAME/gpg-genkey.conf" - $ADD_USERNAME
143
+shred -zu /home/$ADD_USERNAME/gpg-genkey.conf
144
+MY_GPG_PUBLIC_KEY_ID=$(su -c "gpg --list-keys $ADD_USERNAME@$HOSTNAME | grep 'pub '" - $ADD_USERNAME | awk -F ' ' '{print $2}' | awk -F '/' '{print $2}')
145
+MY_GPG_PUBLIC_KEY=/home/$ADD_USERNAME/public_key.gpg
146
+su -c "gpg --output $MY_GPG_PUBLIC_KEY --armor --export $MY_GPG_PUBLIC_KEY_ID" - $ADD_USERNAME
147 147
 
148 148
 if [ ! -f $MY_GPG_PUBLIC_KEY ]; then
149
-    echo "GPG public key was not generated for $MY_USERNAME@$HOSTNAME $MY_GPG_PUBLIC_KEY_ID"
150
-    userdel -r $MY_USERNAME
149
+    echo "GPG public key was not generated for $ADD_USERNAME@$HOSTNAME $MY_GPG_PUBLIC_KEY_ID"
150
+    userdel -r $ADD_USERNAME
151 151
     exit 7
152 152
 fi
153 153
 
154 154
 # add a monkeysphere subkey
155 155
 #echo $'Adding monkeysphere subkey'
156
-#su -c "monkeysphere gen-subkey" - $MY_USERNAME
156
+#su -c "monkeysphere gen-subkey" - $ADD_USERNAME
157 157
 #echo $'Adding monkeysphere subkey to ssh-agent'
158
-#su -c "monkeysphere s" - $MY_USERNAME
158
+#su -c "monkeysphere s" - $ADD_USERNAME
159 159
 # add authorized GPG email address
160
-mkdir /home/$MY_USERNAME/.monkeysphere
161
-chmod 755 /home/$MY_USERNAME/.monkeysphere
162
-echo "$MY_USERNAME <$MY_USERNAME@$HOSTNAME>" > /home/$MY_USERNAME/.monkeysphere/authorized_user_ids
163
-chmod 644 /home/$MY_USERNAME/.monkeysphere/authorized_user_ids
164
-chown -R $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.monkeysphere
160
+mkdir /home/$ADD_USERNAME/.monkeysphere
161
+chmod 755 /home/$ADD_USERNAME/.monkeysphere
162
+echo "$ADD_USERNAME <$ADD_USERNAME@$HOSTNAME>" > /home/$ADD_USERNAME/.monkeysphere/authorized_user_ids
163
+chmod 644 /home/$ADD_USERNAME/.monkeysphere/authorized_user_ids
164
+chown -R $ADD_USERNAME:$ADD_USERNAME /home/$ADD_USERNAME/.monkeysphere
165 165
 echo $'Updating monkeysphere users'
166 166
 monkeysphere-authentication update-users
167 167
 
168
-if [ -f /home/$MY_USERNAME/.muttrc ]; then
168
+if [ -f /home/$ADD_USERNAME/.muttrc ]; then
169 169
     # encrypt outgoing mail to the "sent" folder
170
-    if ! grep -q "pgp_encrypt_only_command" /home/$MY_USERNAME/.muttrc; then
171
-        echo '' >> /home/$MY_USERNAME/.muttrc
172
-        echo $'# Encrypt items in the Sent folder' >> /home/$MY_USERNAME/.muttrc
173
-        echo "set pgp_encrypt_only_command=\"/usr/lib/mutt/pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0x$MY_GPG_PUBLIC_KEY_ID -- -r %r -- %f\"" >> /home/$MY_USERNAME/.muttrc
170
+    if ! grep -q "pgp_encrypt_only_command" /home/$ADD_USERNAME/.muttrc; then
171
+        echo '' >> /home/$ADD_USERNAME/.muttrc
172
+        echo $'# Encrypt items in the Sent folder' >> /home/$ADD_USERNAME/.muttrc
173
+        echo "set pgp_encrypt_only_command=\"/usr/lib/mutt/pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0x$MY_GPG_PUBLIC_KEY_ID -- -r %r -- %f\"" >> /home/$ADD_USERNAME/.muttrc
174 174
     else
175
-        sed -i "s|set pgp_encrypt_only_command.*|set pgp_encrypt_only_command=\"/usr/lib/mutt/pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0x$MY_GPG_PUBLIC_KEY_ID -- -r %r -- %f\"|g" /home/$MY_USERNAME/.muttrc
175
+        sed -i "s|set pgp_encrypt_only_command.*|set pgp_encrypt_only_command=\"/usr/lib/mutt/pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0x$MY_GPG_PUBLIC_KEY_ID -- -r %r -- %f\"|g" /home/$ADD_USERNAME/.muttrc
176 176
     fi
177 177
 
178
-    if ! grep -q "pgp_encrypt_sign_command" /home/$MY_USERNAME/.muttrc; then
179
-        echo "set pgp_encrypt_sign_command=\"/usr/lib/mutt/pgpewrap gpg %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0x$MY_GPG_PUBLIC_KEY_ID -- -r %r -- %f\"" >> /home/$MY_USERNAME/.muttrc
178
+    if ! grep -q "pgp_encrypt_sign_command" /home/$ADD_USERNAME/.muttrc; then
179
+        echo "set pgp_encrypt_sign_command=\"/usr/lib/mutt/pgpewrap gpg %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0x$MY_GPG_PUBLIC_KEY_ID -- -r %r -- %f\"" >> /home/$ADD_USERNAME/.muttrc
180 180
     else
181
-        sed -i "s|set pgp_encrypt_sign_command.*|set pgp_encrypt_sign_command=\"/usr/lib/mutt/pgpewrap gpg %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0x$MY_GPG_PUBLIC_KEY_ID -- -r %r -- %f\"|g" /home/$MY_USERNAME/.muttrc
181
+        sed -i "s|set pgp_encrypt_sign_command.*|set pgp_encrypt_sign_command=\"/usr/lib/mutt/pgpewrap gpg %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0x$MY_GPG_PUBLIC_KEY_ID -- -r %r -- %f\"|g" /home/$ADD_USERNAME/.muttrc
182 182
     fi
183 183
 fi
184 184
 
185
-if ! grep -q "Change your GPG password" /home/$MY_USERNAME/README; then
186
-    echo '' >> /home/$MY_USERNAME/README
187
-    echo '' >> /home/$MY_USERNAME/README
188
-    echo $'# Change your GPG password' >> /home/$MY_USERNAME/README
189
-    echo $"It's very important to add a password to your GPG key so that" >> /home/$MY_USERNAME/README
190
-    echo $"if anyone does get access to your email they still won't be able" >> /home/$MY_USERNAME/README
191
-    echo $'to read them without knowning the GPG password.' >> /home/$MY_USERNAME/README
192
-    echo $'You can change the it with:' >> /home/$MY_USERNAME/README
193
-    echo '' >> /home/$MY_USERNAME/README
194
-    echo "  gpg --edit-key $MY_GPG_PUBLIC_KEY_ID" >> /home/$MY_USERNAME/README
195
-    echo '  passwd' >> /home/$MY_USERNAME/README
196
-    echo '  save' >> /home/$MY_USERNAME/README
197
-    echo '  quit' >> /home/$MY_USERNAME/README
185
+if ! grep -q "Change your GPG password" /home/$ADD_USERNAME/README; then
186
+    echo '' >> /home/$ADD_USERNAME/README
187
+    echo '' >> /home/$ADD_USERNAME/README
188
+    echo $'# Change your GPG password' >> /home/$ADD_USERNAME/README
189
+    echo $"It's very important to add a password to your GPG key so that" >> /home/$ADD_USERNAME/README
190
+    echo $"if anyone does get access to your email they still won't be able" >> /home/$ADD_USERNAME/README
191
+    echo $'to read them without knowning the GPG password.' >> /home/$ADD_USERNAME/README
192
+    echo $'You can change the it with:' >> /home/$ADD_USERNAME/README
193
+    echo '' >> /home/$ADD_USERNAME/README
194
+    echo "  gpg --edit-key $MY_GPG_PUBLIC_KEY_ID" >> /home/$ADD_USERNAME/README
195
+    echo '  passwd' >> /home/$ADD_USERNAME/README
196
+    echo '  save' >> /home/$ADD_USERNAME/README
197
+    echo '  quit' >> /home/$ADD_USERNAME/README
198 198
 fi
199 199
 
200
-chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/README
201
-chown $MY_USERNAME:$MY_USERNAME $MY_GPG_PUBLIC_KEY
202
-chmod 600 /home/$MY_USERNAME/README
200
+chown $ADD_USERNAME:$ADD_USERNAME /home/$ADD_USERNAME/README
201
+chown $ADD_USERNAME:$ADD_USERNAME $MY_GPG_PUBLIC_KEY
202
+chmod 600 /home/$ADD_USERNAME/README
203 203
 
204 204
 echo $'Detecting installed apps...'
205 205
 detect_apps
@@ -209,37 +209,37 @@ do
209 209
     if [[ $(function_exists add_user_${app_name}) == "1" ]]; then
210 210
         echo $"Adding user to ${app_name}"
211 211
         app_load_variables ${app_name}
212
-        retval=$(add_user_${app_name} "$MY_USERNAME" "$NEW_USER_PASSWORD")
212
+        retval=$(add_user_${app_name} "$ADD_USERNAME" "$NEW_USER_PASSWORD")
213 213
         if [[ $retval != '0' ]]; then
214 214
             echo $"Failed with error code ${retval}"
215
-            ${PROJECT_NAME}-rmuser $MY_USERNAME
215
+            ${PROJECT_NAME}-rmuser $ADD_USERNAME
216 216
             exit 672392
217 217
         fi
218
-        if ! grep -q "${app_name}_${MY_USERNAME}" $APP_USERS_FILE; then
219
-            echo "${app_name}_${MY_USERNAME}" >> $APP_USERS_FILE
218
+        if ! grep -q "${app_name}_${ADD_USERNAME}" $APP_USERS_FILE; then
219
+            echo "${app_name}_${ADD_USERNAME}" >> $APP_USERS_FILE
220 220
         fi
221 221
     fi
222 222
 done
223 223
 
224 224
 if [ -f /etc/nginx/.htpasswd ]; then
225
-    if ! grep "${MY_USERNAME}:" /etc/nginx/.htpasswd; then
226
-        echo "$NEW_USER_PASSWORD" | htpasswd -i -s /etc/nginx/.htpasswd $MY_USERNAME
225
+    if ! grep "${ADD_USERNAME}:" /etc/nginx/.htpasswd; then
226
+        echo "$NEW_USER_PASSWORD" | htpasswd -i -s /etc/nginx/.htpasswd $ADD_USERNAME
227 227
     fi
228 228
 fi
229 229
 
230 230
 # add user menu on ssh login
231
-if ! grep -q 'control' /home/$MY_USERNAME/.bashrc; then
232
-    echo 'control' >> /home/$MY_USERNAME/.bashrc
231
+if ! grep -q 'control' /home/$ADD_USERNAME/.bashrc; then
232
+    echo 'control' >> /home/$ADD_USERNAME/.bashrc
233 233
 fi
234 234
 
235
-${PROJECT_NAME}-pass -u $MY_USERNAME -a login -p "$NEW_USER_PASSWORD"
235
+${PROJECT_NAME}-pass -u $ADD_USERNAME -a login -p "$NEW_USER_PASSWORD"
236 236
 clear
237
-echo $"New user $MY_USERNAME was created"
237
+echo $"New user $ADD_USERNAME was created"
238 238
 echo $"Their login password is $NEW_USER_PASSWORD"
239 239
 echo ''
240 240
 echo $"They can download their GPG keys with:"
241 241
 echo ''
242
-echo "    scp -P $SSH_PORT -r $MY_USERNAME@$HOSTNAME:/home/$MY_USERNAME/.gnupg ~/"
242
+echo "    scp -P $SSH_PORT -r $ADD_USERNAME@$HOSTNAME:/home/$ADD_USERNAME/.gnupg ~/"
243 243
 echo ''
244 244
 echo $"They should also run ${PROJECT_NAME}-client on their system to ensure"
245 245
 echo $'the best security.'