我们有脚本文件 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
以下是有关文件权限和这两个用户的默认Shell的详细信息。 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
用户身份运行它。