디렉토리 권한을 grep하여 쓰기 권한이 없는지 어떻게 확인합니까?

디렉토리 권한을 grep하여 쓰기 권한이 없는지 어떻게 확인합니까?

fsck부팅 파일 시스템이 읽기 전용인지 확인하고, 그렇다면 권한을 수정하고 재부팅하기 위해 실행되는 부팅 시 실행되는 스크립트를 작성하려고 합니다 .

ls포인트 1: 명령에서 권한 줄을 grep하는 방법을 알 수 없습니다 .

포인트 2: 명령이 이를 포함하지 않는 문자열을 반환하는지 확인하는 방법도 알 수 없습니다 w.

예를 들어, ls -l 명령은 다음과 유사한 줄을 반환합니다.

drwx-----+ 5 Admin staff 170 Oct 12 05:41 Documents

나는 단지 다음 문자열을 얻고 싶습니다 :

drwx-----+

그런 다음 쓰기 권한이 없는지 확인하십시오.

아래는 지금까지의 스크립트입니다.

#!/bin/bash

$DIR='home'

#If $DIR has only read permissions run loop
if [[ #point 1 = #point 2 ]] then
    #fix permissions on $DIR
    umount ${DIR}
    fsck
    reboot
fi

답변1

if ! [[ -w "$DIR" ]]; then
    # $DIR is not writeable
fi

이것이 적용될 것이다현재 사용자용하지만. 그것이 당신이 원하는 것인지 모르겠습니다.

편집: 권한 문자열을 정말로 추출해야 하는 경우 쉬운 방법은 stat를 사용하는 것입니다.

stat -c %A "$DIR"

다음과 유사한 것을 반환합니다.

-rwxr-xr-x

답변2

출력을 구문 분석하지 않음엘에스. 스크립팅 101.

man find
man findmnt

시스템이 다중 사용자 대상 또는 실행 수준에 도달한 경우 루트 파일 시스템은 읽기 전용으로 마운트되지 않습니다. 이는 읽기 전용으로 마운트된 루트 파일 시스템을 찾을 수 있는 유일한 사용자는 루트임을 의미합니다. 그리고 루트는 권한에 관계없이 어디에서나 쓸 수 있습니다. 따라서 루트 파일 시스템이 읽기 전용인지 확인하려면 간단히 파일을 터치해 보면 됩니다.

if touch /testfile ; then
# The root filesystem is read-write
  rm /testfile
else
# The root filesystem is read-only
# Do something about it
fi

그러나 이는 필수 사항이 아닙니다. 시스템이 루트 파일 시스템 읽기-쓰기를 마운트할 수 없는 경우 시스템은 단일 사용자 셸로 들어가야 합니다.

관련 정보