summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>2008-09-13 13:26:39 -0400
committerDaniel Kahn Gillmor <dkg@fifthhorseman.net>2008-09-13 13:26:39 -0400
commit531e08b2394fb7935fdd128f52445e5191c8ca6b (patch)
treef5463960d2dfa3ee19b53145bc040981fd287faf
parentc34410402a7e49030666553c731c267e14e9a508 (diff)
replace stat with ls (sigh) and make su more portable.
-rw-r--r--debian/changelog6
-rw-r--r--src/common11
-rwxr-xr-xsrc/monkeysphere-server4
3 files changed, 12 insertions, 9 deletions
diff --git a/debian/changelog b/debian/changelog
index bf7c219..13872bf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,7 +4,11 @@ monkeysphere (0.16~pre-1) UNRELEASED; urgency=low
* replaced "#!/bin/bash" with "#!/usr/bin/env bash" for better
portability.
* fixed busted lockfile arrangement, where empty file was being locked
- * portability fixes for date, mktemp, hostname
+ * portability fixes in the way we use date, mktemp, hostname, su
+ * stop using stat, since the syntax appears to be totally unportable
+ * require GNU getopt, and test for getopt failures (look for getopt in
+ /usr/local/bin first, since that's where FreeBSD's GNU-compatible
+ getopt lives.
-- Daniel Kahn Gillmor <dkg@fifthhorseman.net> Thu, 11 Sep 2008 23:16:31 -0400
diff --git a/src/common b/src/common
index 48739d9..22ed1b1 100644
--- a/src/common
+++ b/src/common
@@ -399,9 +399,9 @@ check_key_file_permissions() {
local gAccess
local oAccess
- # function to check that an octal corresponds to writability
+ # function to check that the given permission corresponds to writability
is_write() {
- [ "$1" -eq 2 -o "$1" -eq 3 -o "$1" -eq 6 -o "$1" -eq 7 ]
+ [ "$1" = "w" ]
}
user="$1"
@@ -410,10 +410,9 @@ check_key_file_permissions() {
# return 0 is path does not exist
[ -e "$path" ] || return 0
- owner=$(stat --format '%U' "$path")
- access=$(stat --format '%a' "$path")
- gAccess=$(echo "$access" | cut -c2)
- oAccess=$(echo "$access" | cut -c3)
+ owner=$(ls -l "$path" | awk '{ print $3 }')
+ gAccess=$(ls -l "$path" | cut -c6)
+ oAccess=$(ls -l "$path" | cut -c9)
# check owner
if [ "$owner" != "$user" -a "$owner" != 'root' ] ; then
diff --git a/src/monkeysphere-server b/src/monkeysphere-server
index 111f777..6798fab 100755
--- a/src/monkeysphere-server
+++ b/src/monkeysphere-server
@@ -67,7 +67,7 @@ EOF
}
su_monkeysphere_user() {
- su --preserve-environment "$MONKEYSPHERE_USER" -- -c "$@"
+ su -m "$MONKEYSPHERE_USER" -c "$@"
}
# function to interact with the host gnupg keyring
@@ -642,7 +642,7 @@ diagnostics() {
if [ ! -s "${VARLIB}/ssh_host_rsa_key" ] ; then
echo "! The host key as prepared for SSH (${VARLIB}/ssh_host_rsa_key) is missing or empty."
else
- if [ $(stat -c '%a' "${VARLIB}/ssh_host_rsa_key") != 600 ] ; then
+ if [ $(ls -l "${VARLIB}/ssh_host_rsa_key" | cut -f1 -d\ ) != '-rw-------' ] ; then
echo "! Permissions seem wrong for ${VARLIB}/ssh_host_rsa_key -- should be 0600."
fi