명령을 실행하는 데 "sudo" 권한이 필요한지 확인하는 방법은 무엇입니까?

명령을 실행하는 데 "sudo" 권한이 필요한지 확인하는 방법은 무엇입니까?

특정 파일을 읽거나 쓸 수 있는지 쉽게 확인할 수 있는 방법이 있습니까? 아니면 이를 수행하려면 "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/fileor [ -r /path/to/file ]또는 입니다 [[ -r /path/to/file ]]. 바라보다단일 또는 이중 괄호 사용 - bash어떻게 다른지 알아보세요. is_writable사용 -w.

파일에 액세스할 수 없다는 것은 "sudo가 필요함"을 나타내는 좋은 지표가 아닙니다. 루트 대신 다른 사용자나 그룹으로 실행해야 할 수도 있습니다. 특정 시스템에서 루트 액세스 권한을 얻는 방법은 실행하는 것이 아니라 sudo다른 메커니즘( su, calife, ...) 을 실행하는 것일 수 있습니다 . 알려진 구성을 사용하여 알려진 시스템의 파일에 대한 액세스를 테스트해도 괜찮습니다. 이를 수행하는 스크립트를 배포하는 경우 이는 신뢰할 수 있는 테스트가 아닌 경험적 테스트일 뿐이라는 점을 기억하고 사용자가 결정을 쉽게 무시할 수 있도록 하십시오.

파일이 읽기 가능하다고 테스트한다고 해서 실제로 파일을 읽을 수 있다는 의미는 아닙니다. 파일의 권한이 동시에 변경되었을 수 있습니다. 때로는 파일 권한이 말하는 것과 액세스 확인이 실제로 수행하는 것 사이에 불일치가 있습니다. 즉, 로컬 파일 시스템이 이해하지 못하는 이국적인 속성을 가진 원격 파일 시스템, SELinux와 같은 보안 프레임워크 등이 있습니다.

관련 정보