From 8714868fe12f15afc02ee84379b544774df35c15 Mon Sep 17 00:00:00 2001 From: Daniel Kahn Gillmor Date: Thu, 31 Jul 2008 20:42:49 -0400 Subject: initial pass at monkeysphere-server diagnostics (lots more to fill in!) --- debian/changelog | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'debian/changelog') diff --git a/debian/changelog b/debian/changelog index 71ef1a8..fcf87f1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +monkeysphere (0.7-) UNRELEASED; urgency=low + + * Added monkeysphere-server diagnostics subcommand. + + -- Daniel Kahn Gillmor Thu, 31 Jul 2008 19:27:45 -0400 + monkeysphere (0.6-1) experimental; urgency=low [ Jameson Graef Rollins ] -- cgit v1.2.3 From 273eea44383e2f9e1621e0d6d8de429ffb624a6e Mon Sep 17 00:00:00 2001 From: Daniel Kahn Gillmor Date: Thu, 31 Jul 2008 20:49:18 -0400 Subject: fixed busted debian/changelog --- debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'debian/changelog') diff --git a/debian/changelog b/debian/changelog index fcf87f1..c81d844 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -monkeysphere (0.7-) UNRELEASED; urgency=low +monkeysphere (0.7-1) UNRELEASED; urgency=low * Added monkeysphere-server diagnostics subcommand. -- cgit v1.2.3 From ce1111775aa0e23680932508c2b31e8091ff8beb Mon Sep 17 00:00:00 2001 From: Jameson Graef Rollins Date: Sat, 2 Aug 2008 16:41:46 -0700 Subject: Fix how file modification check is done, and fix accidental extraneous output. --- debian/changelog | 6 +++++- doc/george/changelog | 7 +++++-- src/common | 14 +++++++++++--- 3 files changed, 21 insertions(+), 6 deletions(-) (limited to 'debian/changelog') diff --git a/debian/changelog b/debian/changelog index c81d844..8bfd387 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,12 @@ monkeysphere (0.7-1) UNRELEASED; urgency=low + [ Daniel Kahn Gillmor ] * Added monkeysphere-server diagnostics subcommand. - -- Daniel Kahn Gillmor Thu, 31 Jul 2008 19:27:45 -0400 + [ Jameson Graef Rollins ] + * fix how check for file modification is done. + + -- Jameson Graef Rollins Sat, 02 Aug 2008 16:41:20 -0700 monkeysphere (0.6-1) experimental; urgency=low diff --git a/doc/george/changelog b/doc/george/changelog index 770a265..45834d6 100644 --- a/doc/george/changelog +++ b/doc/george/changelog @@ -19,8 +19,11 @@ * created ~webmaster/ikiwiki.setup * ikiwiki --setup ikiwiki.setup * linked post-receive to new post-commit hook in monkeysphere.git - * changed default keyserver to be pgp.mit.edu (subkeys.pgp.net blows) - + * changed default keyserver to be pgp.mit.edu (subkeys.pgp.net + blows) + * updated /etc/skel with ssh and monkeysphere stuff + * made authorzied_user_ids file for webmaster and ran + "monkeysphere-server u webmaster". 2008-06-23 - dkg * added monkeysphere apt repository to /etc/apt/sources.list diff --git a/src/common b/src/common index e281de4..ba7df73 100644 --- a/src/common +++ b/src/common @@ -498,6 +498,7 @@ update_known_hosts() { local nHosts local nHostsOK local nHostsBAD + local fileCheck local host # the number of hosts specified on command line @@ -512,6 +513,9 @@ update_known_hosts() { # create a lockfile on known_hosts lockfile-create "$KNOWN_HOSTS" + # note pre update file checksum + fileCheck=$(md5sum "$KNOWN_HOSTS") + for host ; do # process the host process_host_known_hosts "$host" @@ -533,7 +537,7 @@ update_known_hosts() { lockfile-remove "$KNOWN_HOSTS" # note if the known_hosts file was updated - if [ "$nHostsOK" -gt 0 -o "$nHostsBAD" -gt 0 ] ; then + if [ "$(md5sum "$KNOWN_HOSTS")" != "$fileCheck" ] ; then log "known_hosts file updated." fi @@ -634,6 +638,7 @@ update_authorized_keys() { local nIDs local nIDsOK local nIDsBAD + local fileCheck # the number of ids specified on command line nIDs="$#" @@ -647,6 +652,9 @@ update_authorized_keys() { # create a lockfile on authorized_keys lockfile-create "$AUTHORIZED_KEYS" + # note pre update file checksum + fileCheck=$(md5sum "$AUTHORIZED_KEYS") + for userID ; do # process the user ID, change return code if key not found for # user ID @@ -670,7 +678,7 @@ update_authorized_keys() { lockfile-remove "$AUTHORIZED_KEYS" # note if the authorized_keys file was updated - if [ "$nIDsOK" -gt 0 -o "$nIDsBAD" -gt 0 ] ; then + if [ "$(md5sum "$AUTHORIZED_KEYS")" != "$fileCheck" ] ; then log "authorized_keys file updated." fi @@ -700,7 +708,7 @@ process_authorized_user_ids() { log "processing authorized_user_ids file..." - if ! meat "$authorizedUserIDs" ; then + if ! meat "$authorizedUserIDs" > /dev/null ; then log "no user IDs to process." return fi -- cgit v1.2.3 From 8e1439bc18f8203d71c1237a25c21374ca17c38c Mon Sep 17 00:00:00 2001 From: Jameson Graef Rollins Date: Sun, 3 Aug 2008 00:10:28 -0700 Subject: rework out user id processing is done to provide better diagnostic output. --- debian/changelog | 4 +++- src/common | 56 +++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 40 insertions(+), 20 deletions(-) (limited to 'debian/changelog') diff --git a/debian/changelog b/debian/changelog index 8bfd387..3e7abb8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,8 +5,10 @@ monkeysphere (0.7-1) UNRELEASED; urgency=low [ Jameson Graef Rollins ] * fix how check for file modification is done. + * rework out user id processing is done to provide more verbose log + output. - -- Jameson Graef Rollins Sat, 02 Aug 2008 16:41:20 -0700 + -- Jameson Graef Rollins Sun, 03 Aug 2008 00:00:06 -0700 monkeysphere (0.6-1) experimental; urgency=low diff --git a/src/common b/src/common index ba7df73..f5bb3bb 100644 --- a/src/common +++ b/src/common @@ -314,7 +314,7 @@ process_user_id() { # if the gpg query return code is not 0, return 1 if [ "$?" -ne 0 ] ; then - log " - key not found." + log " no primary keys found." return 1 fi @@ -377,10 +377,19 @@ process_user_id() { # output a line for the primary key # 0 = ok, 1 = bad if [ "$keyOK" -a "$uidOK" -a "$lastKeyOK" ] ; then - log " * acceptable key found." - echo "0:${fingerprint}" + log " * acceptable primary key." + if [ -z "$sshKey" ] ; then + log " ! primary key could not be translated." + else + echo "0:${sshKey}" + fi else - echo "1:${fingerprint}" + log " - unacceptable primary key." + if [ -z "$sshKey" ] ; then + log " ! primary key could not be translated." + else + echo "1:${sshKey}" + fi fi ;; 'sub') # sub keys @@ -404,18 +413,29 @@ process_user_id() { 'fpr') # key fingerprint fingerprint="$uidfpr" + sshKey=$(gpg2ssh "$fingerprint") + # if the last key was the pub key, skip if [ "$lastKey" = pub ] ; then continue fi - - # output a line for the last subkey + + # output a line for the primary key # 0 = ok, 1 = bad if [ "$keyOK" -a "$uidOK" -a "$lastKeyOK" ] ; then - log " * acceptable key found." - echo "0:${fingerprint}" + log " * acceptable sub key." + if [ -z "$sshKey" ] ; then + log " ! sub key could not be translated." + else + echo "0:${sshKey}" + fi else - echo "1:${fingerprint}" + log " - unacceptable sub key." + if [ -z "$sshKey" ] ; then + log " ! sub key could not be translated." + else + echo "1:${sshKey}" + fi fi ;; esac @@ -429,28 +449,27 @@ process_host_known_hosts() { local nKeys local nKeysOK local ok - local keyid + local sshKey local tmpfile host="$1" - log "processing host: $host" + log "processing: $host" userID="ssh://${host}" nKeys=0 nKeysOK=0 + IFS=$'\n' for line in $(process_user_id "ssh://${host}") ; do # note that key was found nKeys=$((nKeys+1)) ok=$(echo "$line" | cut -d: -f1) - keyid=$(echo "$line" | cut -d: -f2) + sshKey=$(echo "$line" | cut -d: -f2) - sshKey=$(gpg2ssh "$keyid") if [ -z "$sshKey" ] ; then - log " ! key could not be translated." continue fi @@ -582,25 +601,24 @@ process_uid_authorized_keys() { local nKeys local nKeysOK local ok - local keyid + local sshKey userID="$1" - log "processing user ID: $userID" + log "processing: $userID" nKeys=0 nKeysOK=0 + IFS=$'\n' for line in $(process_user_id "$userID") ; do # note that key was found nKeys=$((nKeys+1)) ok=$(echo "$line" | cut -d: -f1) - keyid=$(echo "$line" | cut -d: -f2) + sshKey=$(echo "$line" | cut -d: -f2) - sshKey=$(gpg2ssh "$keyid") if [ -z "$sshKey" ] ; then - log " ! key could not be translated." continue fi -- cgit v1.2.3 From dbbd1bd42f084dfe780f18875c6f36eb6d4f33b1 Mon Sep 17 00:00:00 2001 From: Jameson Graef Rollins Date: Sun, 3 Aug 2008 00:55:19 -0700 Subject: - Fixed bug in monkeysphere update-authorized_keys subcommand that had been preventing disallowed user ids from being properly removed from authorized_keys file. - Fixed file md5sum checking. --- debian/changelog | 4 ++- man/man1/monkeysphere.1 | 23 +++++++-------- src/common | 75 +++++++++++++++++++------------------------------ 3 files changed, 44 insertions(+), 58 deletions(-) (limited to 'debian/changelog') diff --git a/debian/changelog b/debian/changelog index 3e7abb8..b03e0e4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,8 +7,10 @@ monkeysphere (0.7-1) UNRELEASED; urgency=low * fix how check for file modification is done. * rework out user id processing is done to provide more verbose log output. + * fix bug in monkeysphpere update-authorized_keys subcommand where + disallowed keys failed to be remove from authorized_keys file. - -- Jameson Graef Rollins Sun, 03 Aug 2008 00:00:06 -0700 + -- Jameson Graef Rollins Sun, 03 Aug 2008 00:55:05 -0700 monkeysphere (0.6-1) experimental; urgency=low diff --git a/man/man1/monkeysphere.1 b/man/man1/monkeysphere.1 index 1d1c0e5..43e3fd5 100644 --- a/man/man1/monkeysphere.1 +++ b/man/man1/monkeysphere.1 @@ -37,17 +37,18 @@ if matching keys were found but none were acceptable. `k' may be used in place of `update-known_hosts'. .TP .B update-authorized_keys -Update the authorized_keys file. For each user ID in the user's -authorized_user_ids file, gpg will be queried for keys associated with -that user ID, optionally querying a keyserver. If an acceptable key -is found (see KEY ACCEPTABILITY in monkeysphere(5)), the key is added -to the user's authorized_keys file. If a key is found but is -unacceptable for the user ID, any matching keys are removed from the -user's authorized_keys file. If no gpg key is found for the user ID, -nothing is done. This subcommand will exit with a status of 0 if at -least one acceptable key was found for a user ID, 1 if no matching -keys were found at all, and 2 if matching keys were found but none -were acceptable. `a' may be used in place of +Update the authorized_keys file. First all monkeysphere keys are +cleared from the authorized_keys file. Then, for each user ID in the +user's authorized_user_ids file, gpg will be queried for keys +associated with that user ID, optionally querying a keyserver. If an +acceptable key is found (see KEY ACCEPTABILITY in monkeysphere(5)), +the key is added to the user's authorized_keys file. If a key is +found but is unacceptable for the user ID, any matching keys are +removed from the user's authorized_keys file. If no gpg key is found +for the user ID, nothing is done. This subcommand will exit with a +status of 0 if at least one acceptable key was found for a user ID, 1 +if no matching keys were found at all, and 2 if matching keys were +found but none were acceptable. `a' may be used in place of `update-authorized_keys'. .TP .B gen-subkey KEYID diff --git a/src/common b/src/common index f5bb3bb..3966705 100644 --- a/src/common +++ b/src/common @@ -83,6 +83,10 @@ remove_line() { return 1 fi + if [ ! -e "$file" ] ; then + return 1 + fi + # if the string is in the file... if grep -q -F "$string" "$file" 2> /dev/null ; then # remove the line with the string, and return 0 @@ -94,6 +98,24 @@ remove_line() { fi } +# remove all lines with MonkeySphere strings in file +remove_monkeysphere_lines() { + local file + + file="$1" + + if [ -z "$file" ] ; then + return 1 + fi + + if [ ! -e "$file" ] ; then + return 1 + fi + + egrep -v '^MonkeySphere[[:digit:]]{4}(-[[:digit:]]{2}){2}T[[:digit:]]{2}(:[[:digit:]]{2}){2}$' \ + "$file" | sponge "$file" +} + # translate ssh-style path variables %h and %u translate_ssh_variables() { local uname @@ -533,7 +555,7 @@ update_known_hosts() { lockfile-create "$KNOWN_HOSTS" # note pre update file checksum - fileCheck=$(md5sum "$KNOWN_HOSTS") + fileCheck="$(cat "$KNOWN_HOSTS" | md5sum)" for host ; do # process the host @@ -556,7 +578,7 @@ update_known_hosts() { lockfile-remove "$KNOWN_HOSTS" # note if the known_hosts file was updated - if [ "$(md5sum "$KNOWN_HOSTS")" != "$fileCheck" ] ; then + if [ "$(cat "$KNOWN_HOSTS" | md5sum)" != "$fileCheck" ] ; then log "known_hosts file updated." fi @@ -671,7 +693,10 @@ update_authorized_keys() { lockfile-create "$AUTHORIZED_KEYS" # note pre update file checksum - fileCheck=$(md5sum "$AUTHORIZED_KEYS") + fileCheck="$(cat "$AUTHORIZED_KEYS" | md5sum)" + + # remove any monkeysphere lines from authorized_keys file + remove_monkeysphere_lines "$AUTHORIZED_KEYS" for userID ; do # process the user ID, change return code if key not found for @@ -696,7 +721,7 @@ update_authorized_keys() { lockfile-remove "$AUTHORIZED_KEYS" # note if the authorized_keys file was updated - if [ "$(md5sum "$AUTHORIZED_KEYS")" != "$fileCheck" ] ; then + if [ "$(cat "$AUTHORIZED_KEYS" | md5sum)" != "$fileCheck" ] ; then log "authorized_keys file updated." fi @@ -742,45 +767,3 @@ process_authorized_user_ids() { update_authorized_keys "${userIDs[@]}" } - -# EXPERIMENTAL (unused) process userids found in authorized_keys file -# go through line-by-line, extract monkeysphere userids from comment -# fields, and process each userid -# NOT WORKING -process_authorized_keys() { - local authorizedKeys - local userID - local returnCode - - # default return code is 0, and is set to 1 if a key for a user - # is not found - returnCode=0 - - authorizedKeys="$1" - - # take all the monkeysphere userids from the authorized_keys file - # comment field (third field) that starts with "MonkeySphere uid:" - # FIXME: needs to handle authorized_keys options (field 0) - meat "$authorizedKeys" | \ - while read -r options keytype key comment ; do - # if the comment field is empty, assume the third field was - # the comment - if [ -z "$comment" ] ; then - comment="$key" - fi - - if echo "$comment" | egrep -v -q '^MonkeySphere[[:digit:]]{4}(-[[:digit:]]{2}){2}T[[:digit:]]{2}(:[[:digit:]]{2}){2}' ; then - continue - fi - userID=$(echo "$comment" | awk "{ print $2 }") - if [ -z "$userID" ] ; then - continue - fi - - # process the userid - log "processing userid: '$userID'" - process_user_id "$userID" > /dev/null || returnCode=1 - done - - return "$returnCode" -} -- cgit v1.2.3 From f6045145671c3adae0b573c075e4703d6a361c4a Mon Sep 17 00:00:00 2001 From: Daniel Kahn Gillmor Date: Mon, 4 Aug 2008 10:50:48 -0400 Subject: transitioning package to git source format. --- debian/changelog | 3 ++- debian/control | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'debian/changelog') diff --git a/debian/changelog b/debian/changelog index b03e0e4..e686d7c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ monkeysphere (0.7-1) UNRELEASED; urgency=low [ Daniel Kahn Gillmor ] * Added monkeysphere-server diagnostics subcommand. + * rebuilding package from git repo [ Jameson Graef Rollins ] * fix how check for file modification is done. @@ -10,7 +11,7 @@ monkeysphere (0.7-1) UNRELEASED; urgency=low * fix bug in monkeysphpere update-authorized_keys subcommand where disallowed keys failed to be remove from authorized_keys file. - -- Jameson Graef Rollins Sun, 03 Aug 2008 00:55:05 -0700 + -- Daniel Kahn Gillmor Mon, 04 Aug 2008 10:47:41 -0400 monkeysphere (0.6-1) experimental; urgency=low diff --git a/debian/control b/debian/control index 3b2d5d0..7b5115d 100644 --- a/debian/control +++ b/debian/control @@ -8,6 +8,7 @@ Standards-Version: 3.8.0.1 Homepage: http://monkeysphere.info/ Vcs-Git: http://lair.fifthhorseman.net/~dkg/git/monkeysphere.git Dm-Upload-Allowed: yes +Format: 3.0 (git) Package: monkeysphere Architecture: any -- cgit v1.2.3 From be55c00db6f950311f9a517cbb079cd86dae4b1f Mon Sep 17 00:00:00 2001 From: Daniel Kahn Gillmor Date: Mon, 4 Aug 2008 11:02:20 -0400 Subject: tidy up debian/changelog in preparation for 0.7-1 release. --- debian/changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'debian/changelog') diff --git a/debian/changelog b/debian/changelog index e686d7c..9c51e91 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,8 @@ -monkeysphere (0.7-1) UNRELEASED; urgency=low +monkeysphere (0.7-1) experimental; urgency=low [ Daniel Kahn Gillmor ] * Added monkeysphere-server diagnostics subcommand. - * rebuilding package from git repo + * rebuilding package using Format: 3.0 (git) [ Jameson Graef Rollins ] * fix how check for file modification is done. -- cgit v1.2.3