| #!/bin/bash |
| |
| [ -f testing.sh ] && . testing.sh |
| |
| #testing "name" "command" "result" "infile" "stdin" |
| |
| if [ "$(id -u)" -ne 0 ] |
| then |
| echo "$SHOWSKIP: chattr (not root)" |
| continue 2>/dev/null |
| exit |
| fi |
| |
| # chattr - Testcases |
| |
| mkdir testattr |
| IN="cd testattr" |
| OUT="cd .." |
| _t="abcdefghijklmnopqrstuvwxyz" |
| |
| testing "[-/+]i FILE[write]" "$IN && echo "$_t" > testFile && |
| chattr +i testFile && lsattr testFile && echo "$_t" > testFile; |
| chattr -i testFile; rm -rf testFile; $OUT " "----i-------- testFile\n" "" "" |
| testing "[-/+]i FILE[re-write]" "$IN && echo "$_t" > testFile && |
| chattr +i testFile && echo \"$_t\" > testFile || chattr -i testFile && |
| echo \"$_t\" > testFile && lsattr testFile; rm -rf testFile; $OUT" \ |
| "------------- testFile\n" "" "" |
| testing "[-/+]i FILE[append]" "$IN && echo "$_t" > testFile && |
| chattr +i testFile && echo \"$_t\" >> testFile || lsattr testFile && |
| chattr -i testFile; rm -rf testFile; $OUT" "----i-------- testFile\n" "" "" |
| testing "[-/+]i FILE[move]" "$IN && echo "$_t" > testFile && |
| chattr +i testFile && mv testFile testFile1 || lsattr testFile && |
| chattr -i testFile; rm -rf testFile; $OUT" "----i-------- testFile\n" "" "" |
| testing "[-/+]i FILE[delete]" "$IN && echo "$_t" > testFile && |
| chattr +i testFile && rm -f testFile || lsattr testFile && |
| chattr -i testFile; rm -rf testFile; $OUT" "----i-------- testFile\n" "" "" |
| testing "[-/+]i FILE[read]" "$IN && echo "$_t" > testFile && |
| chattr +i testFile && cat testFile && lsattr testFile && |
| chattr -i testFile; rm -rf testFile; $OUT" "$_t\n----i-------- testFile\n" "" "" |
| testing "[-/+]a FILE[write]" "$IN && echo "$_t" > testFile && |
| chattr +a testFile && echo $_t > testFile || lsattr testFile && |
| chattr -a testFile; rm -rf testFile; $OUT" "-----a------- testFile\n" "" "" |
| testing "[-/+]a FILE[re-write]" "$IN && echo "$_t" > testFile && |
| chattr +a testFile && echo $_t > testFile || lsattr testFile && |
| chattr -a testFile && echo $_t > testFile && cat testFile && |
| lsattr testFile; rm -rf testFile; |
| $OUT" "-----a------- testFile\n$_t\n------------- testFile\n" "" "" |
| testing "[-/+]a FILE[append]" "$IN && echo "$_t" > testFile && |
| chattr +a testFile && echo $_t >> testFile && cat testFile && |
| lsattr testFile && chattr -a testFile; rm -rf testFile; $OUT" \ |
| "$_t\n$_t\n-----a------- testFile\n" "" "" |
| testing "[-/+]a FILE[move]" "$IN && echo "$_t" > testFile && |
| chattr +a testFile && mv testFile testFile1 || lsattr testFile && |
| chattr -a testFile; rm -rf testFile; $OUT" "-----a------- testFile\n" "" "" |
| testing "[-/+]a FILE[delete]" "$IN && echo "$_t" > testFile && |
| chattr +a testFile && rm -f testFile || lsattr testFile && |
| chattr -a testFile; rm -rf testFile; $OUT" "-----a------- testFile\n" "" "" |
| testing "[-/+]a FILE[read]" "$IN && echo "$_t" > testFile && |
| chattr +a testFile && cat testFile && lsattr testFile && chattr -a testFile; |
| rm -rf testFile; $OUT" "$_t\n-----a------- testFile\n" "" "" |
| |
| for attr in "A" "a" "c" "D" "d" "i" "j" "s" "S" "t" "T" "u" |
| do |
| testing "[-/+]$attr FILE" "$IN && echo "$_t" > testFile && |
| chattr +$attr testFile && cat testFile && chattr -$attr testFile && |
| lsattr testFile; rm -rf testFile; $OUT" "$_t\n------------- testFile\n" "" "" |
| done |
| |
| for attr in "A" "a" "c" "D" "d" "i" "j" "s" "S" "t" "T" "u" |
| do |
| testing "-$attr FILE" "$IN && echo "$_t" > testFile && chattr -$attr testFile && |
| cat testFile && lsattr testFile; rm -rf testFile; $OUT" "$_t\n------------- testFile\n" "" "" |
| done |
| |
| testing "[-/+]AacDdijsStTu FILE" "$IN && echo "$_t" > testFile && |
| chattr +AacDdijsStTu testFile && cat testFile && chattr -AacDdijsStTu testFile && |
| lsattr testFile; rm -rf testFile; $OUT" "$_t\n------------- testFile\n" "" "" |
| testing "[-/+]AacDdijsStTu(random) FILE" \ |
| "$IN && echo "$_t" > testFile && |
| chattr +AacDdijsStTu testFile && cat testFile && chattr -A testFile && |
| chattr -a testFile && chattr -c testFile && chattr -D testFile && |
| chattr -d testFile && chattr -i testFile && chattr -j testFile && |
| chattr -s testFile && chattr -S testFile && chattr -t testFile && |
| chattr -T testFile && chattr -u testFile && lsattr testFile && |
| chattr -AacDdijsStTu testFile; rm -rf testFile; $OUT" \ |
| "$_t\n------------- testFile\n" "" "" |
| testing "[-/+]AacDdijsStTu FILE*" "$IN && |
| echo "$_t" > testFile && echo "$_t" > testFile1 && |
| echo "$_t" > testFile2 && echo "$_t" > testFile3 && |
| echo "$_t" > testFile4 && echo "$_t" > testFile5 && |
| echo "$_t" > testFile6 && echo "$_t" > testFile7 && |
| echo "$_t" > testFile8 && echo "$_t" > testFile9 && |
| echo "$_t" > testFile10 && echo "$_t" > testFile11 && |
| chattr +AacDdijsStTu testFile* && |
| cat testFile9 && chattr -AacDdijsStTu testFile* && lsattr testFile*; rm -rf testFile*; $OUT" \ |
| "$_t\n------------- testFile\n------------- testFile1\n------------- testFile10\n------------- testFile11\n------------- testFile2\n------------- testFile3\n------------- testFile4\n------------- testFile5\n------------- testFile6\n------------- testFile7\n------------- testFile8\n------------- testFile9\n" "" "" |
| testing "[-/+]AacDdijsStTu(random) FILE*" \ |
| "$IN && echo "$_t" > testFile && |
| chattr +AacDdijsStTu testFile* && cat testFile && chattr -A testFile* && |
| chattr -a testFile* && chattr -c testFile* && chattr -D testFile* && |
| chattr -d testFile* && chattr -i testFile* && chattr -j testFile* && |
| chattr -s testFile* && chattr -S testFile* && chattr -t testFile* && |
| chattr -T testFile* && chattr -u testFile* && lsattr testFile; |
| rm -rf testFile; $OUT" \ |
| "$_t\n------------- testFile\n" "" "" |
| testing "[-/+]i FILE[write]" \ |
| "$IN && echo "$_t" > testFile && |
| chattr +i testFile && |
| echo \"$_t\" > testFile || lsattr testFile && chattr -i testFile; |
| rm -rf testFile; $OUT" "----i-------- testFile\n" "" "" |
| testing "[-/+]A FILE[write]" \ |
| "$IN && echo "$_t" > testFile && chattr +A testFile && |
| echo \"$_t\" > testFile && lsattr testFile && chattr -A testFile; |
| rm -rf testFile; $OUT" "-------A----- testFile\n" "" "" |
| testing "[-/+]s FILE[write]" \ |
| "$IN && echo "$_t" > testFile && chattr +s testFile && |
| echo \"$_t\" > testFile && lsattr testFile && chattr -s testFile |
| rm -rf testFile; $OUT" "s------------ testFile\n" "" "" |
| testing "-v version FILE[write]" \ |
| "$IN && echo "$_t" > testFile && |
| chattr -v 1234 testFile && echo \"$_t\" > testFile && |
| lsattr -v testFile; rm -rf testFile" \ |
| " 1234 ------------- testFile\n" "" "" |
| |
| _a="-------A-----" |
| testing "-R [-/+]a FILE" "$IN && touch aa && chattr -R +A aa && lsattr aa && |
| chattr -R -A aa; rm -rf aa; $OUT" "$_a aa\n" "" "" |
| testing "-R [-/+]a FILE.." "$IN && touch aa bb && |
| chattr -R +A aa bb && lsattr aa bb && |
| chattr -R -A aa bb; rm -rf aa bb; $OUT" "$_a aa\n$_a bb\n" "" "" |
| |
| # Clean up |
| rm -rf testattr |