파일에 쓰기 권한이 있는지 확인하는 간단한 스크립트가 있습니다. 그렇다면 사용자는 파일 끝에 일부 텍스트 데이터를 추가할 수 있습니다. 그렇지 않은 경우 해당 사용자는 쫓겨납니다.
나는 프로그래밍 지식을 이용한 쉘 스크립팅 학습 유튜브 시리즈를 따르고 있습니다. 특히 비디오 7.
스크립트는 다음과 같습니다.
echo -e "Enter file name: \c"
read filename
if [ -f $filename ]
then
if [ -w $filename ]
then
echo "Type some text data. To quit, press CTRL + d: "
cat >> $filename
else
echo "File has no write permissions"
fi
else
echo "$filename is not found"
fi
내 스크립트에서는 쓰기 권한이 없더라도 사용자가 제공된 파일에 추가할 수 있도록 허용합니다. -O
또는 같은 다른 플래그는 -s
예상대로 작동합니다. 여기에 문제가 있나요?
ls -l
사용 가능한 파일에서 실행:
-r--r--r-- 1 nobody nobody 0 Dec 6 12:25 Mane
-r-xr-xr-x 1 root root 165 Dec 6 12:06 Ramy.txt
-r--r--r-- 1 root root 0 Dec 6 12:24 Salah
디버깅을 켠 상태에서 스크립트를 실행하면 출력됩니다.
[root@Console2-4KMH2 scripts]# bash -x ./hello_FILE_TEST_OPERAT_APPEND_2_File.sh
+ echo -e 'Enter file name: \c'
Enter file name: + read filename
Salah
+ '[' -f Salah ']'
+ '[' -w Salah ']'
+ echo 'Type some text data. To quit, press CTRL + d: '
Type some text data. To quit, press CTRL + d:
+ cat
내 문제가 해결되었습니다. 내 멍청한 게시물에 대한 모든 편집에 감사드립니다. 댓글 섹션의 Stephen Harris는 내가 스크립트를 루트로 실행하고 있음을 확인하고 파일에 쓰기 권한이 없더라도 루트가 파일에 쓸 것이라는 점을 강조했습니다. sudo 사용자를 생성하고 스크립트를 다시 실행한 결과 예상대로 작동하는 것으로 확인되었습니다(쓰기 권한이 없으면 파일에 쓰지 않음).
답변1
내 질문에 대한 대답은 Stephen Harris의 의견 섹션에서 나왔습니다. 그는 내가 루트로 스크립트를 실행하면 쓰기 권한이 있는지 여부에 관계없이 스크립트가 모든 파일에 쓸 것이라는 사실을 발견했습니다.