#!/bin/sh # # Copyright (c) International Business Machines Corp., 2003, 2005 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See # the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # # # # FILE : ftp # # PURPOSE: Tests to see if ftp rejects a 'root' login attempt. # # SETUP: The program `/usr/bin/expect' MUST be installed. # # HISTORY: # 03/04/03 Jerone Young (jeroney@us.ibm.com) # 09/21/05 Kris Wilson (krisw@us.ibm.com) Check if vsftpd is on system. setup() { TEST_USER=root tvar=${MACHTYPE%-*} tvar=${tvar#*-} if [ $tvar = "redhat" -o $tvar = "redhat-linux" ]; then ftpusers="/etc/vsftpd/ftpusers" else ftpusers="/etc/ftpusers" fi echo "Verifying test user $TEST_USER is in ${ftpusers} database..." FTPUSERS=$(awk "/$TEST_USER/" ${ftpusers}) if [ -z "$FTPUSERS" ] ; then tst_brkm TBROK "$TEST_USER not found in $ftpusers exiting 0 ..." fi } do_test() { FAIL_230="==> TEST : FAIL (ftp allowed login attempt)" PASS_530="==> TEST : PASS (ftp rejected login attempt)" echo "Ftp should reject $TEST_USER from loging in successfully" expect -c " spawn ftp $RHOST sleep 1 expect -re \": \" send \"$TEST_USER\r\" expect -re \"Password:\" send \"$TEST_USER_PASSWD\r\" expect { # 230 - Login successful \"230\" {send_user \"$FAIL_230\n\";exit 1} # 530 - Login failed \"530\" {send_user \"$PASS_530\n\";exit 0} } expect \"ftp> \" send \"quit\r\" " } TCID="ftp04" TST_TOTAL=1 . test.sh . ftp_setup setup do_setup do_test if [ $? -ne 0 ]; then tst_resm TFAIL "Test $TCID FAIL" else tst_resm TPASS "Test $TCID PASS" fi tst_exit