Files

24 lines
1.4 KiB
Bash

F=/srv/lab/inner/f.txt
as() { runuser -u permtest -- "$@"; }
field() { awk -F: -v n="$1" '$1 == "permtest" {print $n}' /etc/shadow; }
task 1 "permtest can read f.txt; the blocking directory found"
need "/root/lab-answers/1 names the directory" '[ "$(answer 1 | sed "s|/*$||")" = /srv/lab ]'
need "permtest can read $F" 'as cat '$F' | grep -qx data'
need "others can't write to /srv/lab" '[ $(( 0$(stat -c %a /srv/lab) & 2 )) = 0 ]'
task 2 "permtest can write to f.txt; the limiting entry found"
need "/root/lab-answers/2 names the entry" 'answer 2 | grep -qw mask'
need "permtest still has its rw ACL entry" 'getfacl -p '$F' 2>/dev/null | grep -q "^user:permtest:rw"'
need "permtest can write to $F" 'as test -w '$F
need "others can't write to it" '[ "$(stat -c %A '$F' | cut -c9)" = - ]'
task 3 "old-report.txt deleted; the attribute found"
need "/root/lab-answers/3 names the attribute" 'answer 3 | grep -Eqw "immutable|i"'
need "/srv/lab/inner/old-report.txt is gone" '[ ! -e /srv/lab/inner/old-report.txt ]'
task 4 "permtest can log in again"
need "permtest's shell is bash" '[ "$(getent passwd permtest | cut -d: -f7)" = /bin/bash ] || [ "$(getent passwd permtest | cut -d: -f7)" = /usr/bin/bash ]'
need "its account never expires" '[ -z "$(field 8)" ] || [ "$(field 8)" = -1 ]'
need "su - permtest runs a command" 'su - permtest -c "echo le-ok" </dev/null | grep -q le-ok'