![스크립트를 실행하기 전에 루트만 스크립트를 편집할 수 있는지 확인하세요.](https://linux55.com/image/53545/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0%20%EC%A0%84%EC%97%90%20%EB%A3%A8%ED%8A%B8%EB%A7%8C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%ED%8E%B8%EC%A7%91%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EC%84%B8%EC%9A%94..png)
루트로 실행해야 하는 스크립트가 있습니다. 또한 소스 읽기를 사용하는 구성 파일도 있습니다.
source conf.sh
conf.sh
일반 사용자가 편집할 수 없어 루트 액세스 권한을 얻을 수 없는지 확인하고 싶습니다 .
파일의 소유자가 누구인지, 그룹과 다른 사람이 어떤 권한을 가지고 있는지 확인할 수 있습니다.
if [[ "$(stat -c "%a" conf.sh | egrep ".2.|.3.|.6.|.7.|..2|..3|..6|..7")" != "" ]] || [[ "$(stat -c "%u" conf.sh)" != "0" ]]; then
#don't execute the file"
fi
여기서 뭔가 빠졌나요? 모범 사례가 있습니까?
답변1
산술 평가를 사용하여 이 작업을 수행합니다.
if [[ $(stat -c '%u' conf.sh) -ne 0 -o \
$(( $(stat -c '%a' conf.sh) & 0044)) -ne 0 ]]; then
# file's owner is not root or file is writable by group or world
fi