スクリプトファイルがありますファイルチェッカー.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
userを実行しaaa
てスクリプトを実行してファイルを見つけましたが、FileChecker.sh
userを使用してファイルを実行すると、www
スクリプトは入力ファイルを見つけて印刷できません[ERROR] elif Invalid input to FileChecker.sh
。
以下は、2人のユーザーのファイル権限とデフォルトシェルの詳細です。aaa
is/bin/ksh
とwww
itのデフォルトのシェルはです/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
?
ベストアンサー1
あなたが観察したのは、ユーザーが別のログインシェルを持っているという結果ではありません。
問題は、www
ユーザーに含まれているディレクトリに対する実行権限がないことです/tmp/lib
(したがって、ディレクトリ内のファイル属性をテストするためにディレクトリを参照できません)。
前任者。与えられた
$ namei -l /tmp/lib/my.properties
f: /tmp/lib/my.properties
drwxr-xr-x root root /
drwxrwxrwt root root tmp
drwxrw-r-- steeldriver steeldriver lib
-rwxr-xr-x steeldriver steeldriver my.properties
それから
$ sudo -u testuser ./FileChecker.sh /tmp/lib/my.properties /tmp/lib/my.ear
[ERROR] elif Invalid input to ./FileChecker.sh \n
しかし、
$ chmod o+x /tmp/lib
$ sudo -u testuser ./FileChecker.sh /tmp/lib/my.properties /tmp/lib/my.ear
In Else