1 #!/bin/bash 2 3 # Copyright 2013 Divya Kothari <divya.s.kothari (at] gmail.com> 4 # Copyright 2013 Robin Mittal <robinmittal.it (at] gmail.com> 5 6 [ -f testing.sh ] && . testing.sh 7 8 if [ "$(id -u)" -ne 0 ] 9 then 10 echo "$SHOWSKIP: useradd (not root)" 11 continue 2>/dev/null 12 exit 13 fi 14 15 # Redirecting all output to /dev/null for grep, adduser and deluser 16 arg="&>/dev/null" 17 18 #testing "name" "command" "result" "infile" "stdin" 19 20 # Default password for adding user is: 'password' 21 pass=`echo -ne 'password\npassword\n'` 22 23 user="toyTestUser" 24 testing "(text)" "useradd $user $arg || 25 grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] && 26 echo 'yes'" "yes\n" "" "$pass" 27 userdel -r $user $arg 28 29 user="toy1Test2User3" 30 testing "(alphanumeric)" "useradd $user $arg || 31 grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] && 32 echo 'yes'" "yes\n" "" "$pass" 33 userdel -r $user $arg 34 35 user="987654321" 36 testing "(numeric)" "useradd $user $arg || 37 grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] && 38 echo 'yes'" "yes\n" "" "$pass" 39 userdel -r $user $arg 40 41 user="toy.1Test-2User_3" 42 testing "(with ./-/_)" "useradd $user $arg || 43 grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] && 44 echo 'yes'" "yes\n" "" "$pass" 45 userdel -r $user $arg 46 47 # 70 characters long string; hereafter, we will use it as per our need. 48 user="abcdefghijklmnopqrstuvwxyz123456789abcdefghijklmnopqrstuvwxyz123456789" 49 testing "(long string)" "useradd $user $arg || 50 grep '^$user:' /etc/passwd $arg && [ -d /home/$user ] && 51 echo 'yes'" "yes\n" "" "$pass" 52 userdel -r $user $arg 53 54 user="toyTestUser" 55 testing "dir" "useradd -h $PWD/dir $user $arg || 56 grep '^$user:.*dir' /etc/passwd $arg && [ -d $PWD/dir ] && 57 echo 'yes'" "yes\n" "" "$pass" 58 userdel -r $user $arg 59 rm -rf $PWD/dir 60 61 gecos="aaa,bbb,ccc,ddd,eee" 62 testing "gecos" "useradd -g '$gecos' $user $arg || 63 grep '^$user:.*$gecos' /etc/passwd $arg && [ -d /home/$user ] && 64 echo 'yes'" "yes\n" "" "$pass" 65 userdel -r $user $arg 66 67 shl="/bin/sh" 68 testing "shell" "useradd -s $shl $user $arg || 69 grep '^$user:.*$shl$' /etc/passwd $arg && [ -d /home/$user ] && 70 echo 'yes'" "yes\n" "" "$pass" 71 userdel -r $user $arg 72 73 g_name="root" 74 g_id=`grep $g_name':.*:.*' /etc/group | cut -d : -f 3` 75 testing "group" "useradd -G $g_name $user $arg || 76 grep '^$user:.*:.*:$g_id:.*' /etc/passwd $arg && [ -d /home/$user ] && 77 echo 'yes'" "yes\n" "" "$pass" 78 userdel -r $user $arg 79 80 testing "(system user)" "useradd -S $user $arg || 81 grep '^$user:.*:.*:.*' /etc/passwd $arg && [ ! -e /home/$user ] && 82 echo 'yes'" "yes\n" "" "$pass" 83 userdel -r $user $arg 84 85 testing "-D" "useradd -D $user $arg || 86 grep '^$user:.*:.*:.*' /etc/passwd $arg && [ -d /home/$user ] && 87 echo 'yes'" "yes\n" "" "$pass" 88 userdel -r $user $arg 89 90 testing "-H" "useradd -H $user $arg || 91 grep '^$user:.*:.*:.*' /etc/passwd $arg && [ ! -e /home/$user ] && 92 echo 'yes'" "yes\n" "" "$pass" 93 userdel -r $user $arg 94 95 testing "dir and -H" "useradd -H -h $PWD/dir $user $arg || 96 grep '^$user:.*dir' /etc/passwd $arg && [ ! -e $PWD/dir ] && 97 echo 'yes'" "yes\n" "" "$pass" 98 userdel -r $user $arg 99 100 testing "-u" "useradd -u 49999 $user $arg || 101 grep '^$user:x:49999:.*' /etc/passwd $arg && [ -d /home/$user ] && 102 echo 'yes'" "yes\n" "" "$pass" 103 userdel -r $user $arg 104 105