У нас есть файл сценария FileChecker.sh , где он проверяет, существует файл или нет
Файл FileChecker.sh:
#!/bin/ksh
FILE=$1
FILE2=$2
if [[ "$FILE" == "" || "$FILE2" == "" ]] ; then
echo "[ERROR] if Invalid input to $0 \n"
elif [[ ! -f $FILE|| ! -f $FILE2 ]] ; then
echo "[ERROR] elif Invalid input to $0 \n"
else
echo "In Else"
fi
Мы вошли как пользователь aaa
. Запускаем скрипт следующим образом:
[aaa@servername cfg]$ ./FileChecker.sh /tmp/lib/my.properties /tmp/lib/my.ear
и мы передаем имена файлов с указанием местоположения в качестве входных данных для сценария, и права доступа 755
для входных файлов.
мы запустили FileChecker.sh
с пользователем aaa
, и скрипт был выполнен, и он нашел файл, но когда мы выполним файл FileChecker.sh
с пользователем www
, тогда скрипт не сможет найти входные файлы и напечатал [ERROR] elif Invalid input to FileChecker.sh
.
Вот как я запускаю скрипт как www
/mycompany/bin/suexec -u www /tmp/cfg/FileChecker.sh /tmp/lib/my.properties /tmp/lib/my.ear
Ниже приведены сведения о правах доступа к файлам и командной консоли по умолчанию для обоих пользователей. Оболочка по умолчанию для aaa
равна /bin/ksh
, а для www
это /bin/bash
.
[aaa@servername lib]$ cd /tmp/lib
[aaa@servername lib]$ ls -lrt
-rwxr-xr-x 1 aaa aaagroup 175 Apr 16 11:12 my.properties
-rwxr-xr-x 1 aaa aaagroup 14354727 Apr 16 11:12 my.ear
[aaa@servername lib]$ cat /etc/passwd | grep aaa
aaa:x:129822:602:aaa, env.xyz Hostgroup, Id, F, Num:/home/aaa:/bin/ksh
[aaa@servername lib]$ cat /etc/passwd | grep www
www:x:13113:602:www, Hostgroup, Id, F, Num:/home/www:/bin/bash
Как мне заставить его работать, запустив www
пользователя.