summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/duplicate-ids1
-rwxr-xr-xbin/missing-expiration-date15
-rwxr-xr-xbin/no-password1
-rwxr-xr-xbin/uid-zero1
-rw-r--r--test/fixtures/shadow_with_missing_expiration_date2
-rw-r--r--test/missing-expiration-date_test.bats15
6 files changed, 30 insertions, 5 deletions
diff --git a/bin/duplicate-ids b/bin/duplicate-ids
index a1e2b39..841b895 100755
--- a/bin/duplicate-ids
+++ b/bin/duplicate-ids
@@ -1,5 +1,6 @@
#!/bin/bash
+cd "$(dirname "$0")/.."
FILE=${1:-'/etc/passwd'}
ids=$(grep -v -E '^#' "$FILE" | awk -F: '{ print $3 }' | sort -n | uniq -d)
diff --git a/bin/missing-expiration-date b/bin/missing-expiration-date
index 8a0c7fe..d0caa28 100755
--- a/bin/missing-expiration-date
+++ b/bin/missing-expiration-date
@@ -1,12 +1,17 @@
#!/bin/bash
-cd "..$(dirname $PWD)"
+cd "$(dirname "$0")/.."
+FILE=${1:-'/etc/shadow'}
+EXITSTATUS=0
-for i in `cat /etc/shadow`; do
- login=$(echo $i | cut -d: -f1)
- expiration=$(echo $i | cut -d: -f8)
+while read entry; do
+ login=$(echo $entry | cut -d: -f1)
+ expiration=$(echo $entry | cut -d: -f8)
if [ -z "$expiration" ]; then
echo $login: does not have an expiration date
+ let "EXITSTATUS++"
fi
-done
+done < "$FILE"
+
+exit $EXITSTATUS
diff --git a/bin/no-password b/bin/no-password
index 4705ddd..9e2c04d 100755
--- a/bin/no-password
+++ b/bin/no-password
@@ -1,5 +1,6 @@
#!/bin/bash
+cd "$(dirname "$0")/.."
FILE=${1:-'/etc/passwd'}
grep -E '^\w+::.*' "$FILE"
diff --git a/bin/uid-zero b/bin/uid-zero
index 64adac7..c4b854c 100755
--- a/bin/uid-zero
+++ b/bin/uid-zero
@@ -1,5 +1,6 @@
#!/bin/bash
+cd "$(dirname "$0")/.."
FILE=${1:-'/etc/passwd'}
cat "$FILE" | cut -d: -f1,3 | grep ':0'
diff --git a/test/fixtures/shadow_with_missing_expiration_date b/test/fixtures/shadow_with_missing_expiration_date
new file mode 100644
index 0000000..3ca4e2d
--- /dev/null
+++ b/test/fixtures/shadow_with_missing_expiration_date
@@ -0,0 +1,2 @@
+root:*:18169:0:99999:7:::
+bin:*:17995:0:99999:7:::
diff --git a/test/missing-expiration-date_test.bats b/test/missing-expiration-date_test.bats
index e69de29..60e60fa 100644
--- a/test/missing-expiration-date_test.bats
+++ b/test/missing-expiration-date_test.bats
@@ -0,0 +1,15 @@
+#!/usr/bin/env bats
+
+load test_helper
+
+@test "it finds users missing an expiration date" {
+ run ./bin/missing-expiration-date test/fixtures/shadow_with_missing_expiration_date
+
+ assert_failure $'root: does not have an expiration date\nbin: does not have an expiration date'
+}
+
+@test "it does not find users with a missing expiration date" {
+ run ./bin/missing-expiration-date test/fixtures/shadow
+
+ assert_success
+}