특정 파일을 읽거나 쓸 수 있는지 쉽게 확인할 수 있는 방법이 있습니까? 아니면 이를 수행하려면 "sudo"를 사용해야 합니까? 불필요하게 sudo로 명령을 실행하면 파일이 루트 사용자를 소유자로 생성되므로 바람직하지 않습니다.
그것은 마치
is_readable /path/to/file
if [[ $? == 0 ]]; then
do_command /path/to/file;
else
sudo do_command /path/to/file;
fi
답변1
유틸리티 -w
스위치를 사용해 볼 수 있습니다 test
.
[ -w /path/to/file ] && do_command /path/to/file || sudo do_command /path/to/file
또는 긴 버전:
if [ -w /path/to/file ]; then
do_command /path/to/file
else
sudo do_command /path/to/file
fi
~에서맨페이지
-w FILE
FILE exists and write permission is granted
답변2
is_readable /path/to/file
철자는 test -r /path/to/file
or [ -r /path/to/file ]
또는 입니다 [[ -r /path/to/file ]]
. 바라보다단일 또는 이중 괄호 사용 - bash어떻게 다른지 알아보세요. is_writable
사용 -w
.
파일에 액세스할 수 없다는 것은 "sudo가 필요함"을 나타내는 좋은 지표가 아닙니다. 루트 대신 다른 사용자나 그룹으로 실행해야 할 수도 있습니다. 특정 시스템에서 루트 액세스 권한을 얻는 방법은 실행하는 것이 아니라 sudo
다른 메커니즘( su
, calife
, ...) 을 실행하는 것일 수 있습니다 . 알려진 구성을 사용하여 알려진 시스템의 파일에 대한 액세스를 테스트해도 괜찮습니다. 이를 수행하는 스크립트를 배포하는 경우 이는 신뢰할 수 있는 테스트가 아닌 경험적 테스트일 뿐이라는 점을 기억하고 사용자가 결정을 쉽게 무시할 수 있도록 하십시오.
파일이 읽기 가능하다고 테스트한다고 해서 실제로 파일을 읽을 수 있다는 의미는 아닙니다. 파일의 권한이 동시에 변경되었을 수 있습니다. 때로는 파일 권한이 말하는 것과 액세스 확인이 실제로 수행하는 것 사이에 불일치가 있습니다. 즉, 로컬 파일 시스템이 이해하지 못하는 이국적인 속성을 가진 원격 파일 시스템, SELinux와 같은 보안 프레임워크 등이 있습니다.