사용자가 셸에서 디렉터리를 검색하고 에코할 수 있는 권한이 있는 모든 디렉터리를 찾습니다.

사용자가 셸에서 디렉터리를 검색하고 에코할 수 있는 권한이 있는 모든 디렉터리를 찾습니다.

사용자가 검색(command)에 액세스할 수 있는 모든 디렉터리를 찾아서 find해당 디렉터리를 셸에 표시해야 합니다. USER는 ksh에서 읽습니다.

예를 들어:

read user

find사용자가 디렉터리 내에서 작업 하려면 해당 디렉터리에 대한 "읽기 액세스" 및 "실행 액세스"가 있어야 한다는 것을 알고 있습니다 . r입력된 사용자의 모든 디렉터리와 액세스 권한을 확인해야 합니다 .x

답변1

정확한 코드를 제공하지는 않지만 이를 달성하기 위한 단계는 제공할 수 있습니다.

  • 디렉토리의 소유자를 찾으십시오. 이것이 user검색 중인 디렉토리와 일치하면 디렉토리의 소유자 권한을 확인하십시오. r+x(5)또는 이면 r+w+x(7)사용자는 해당 디렉토리 내에서 검색할 수 있고, 그렇지 않으면 검색할 수 없습니다.

  • 디렉토리의 소유자가 사용자와 일치하지 않는 경우, 디렉토리가 속한 그룹을 확인하여 입력된 내용이 user해당 그룹에 속하는지 확인하십시오. 사용자가 속한 경우. 디렉터리에 대한 그룹 권한을 확인하세요. r+x(5)또는 이면 r+w+x(7)사용자는 해당 디렉토리 내에서 검색할 수 있고, 그렇지 않으면 검색할 수 없습니다.

  • 입력한 내용이 user디렉터리가 속한 그룹에 속하지 않는 경우 해당 디렉터리의 다른 권한을 확인하세요. r+x(5)또는 이면 r+w+x(7)사용자는 해당 디렉토리 내에서 검색할 수 있고, 그렇지 않으면 검색할 수 없습니다.

위의 알고리즘이 원하는 작업을 수행할 것이라고 생각합니다.

편집하다:

방법 1:

find 명령을 사용하여 이 작업을 수행할 수 있습니다.

$ find / -maxdepth 1 -type d -perm -u=rx

이것은 사용자 권한 수준 1 내/최대의 모든 디렉토리를 찾습니다.적어도(읽기 + 실행).

방법 2:

$ stat <filename/directoryname>  | grep Access | head -1 | awk 'BEGIN{FS="[/)]"} {print $2}'  

그러면 rwx 표기법(예: drwxr-xr-x)에 대한 권한이 부여됩니다.

$ stat <filename/directoryname>  | grep Access | head -1 | awk 'BEGIN{FS="[(/]"} {print $2}'

그러면 755 표기법(예: 0755)으로 권한이 부여됩니다.

답변2

현재 질문을 잘 이해하지 못했습니다.

읽기 액세스 권한이 없는 디렉터리 내부에 읽기 액세스 권한이 있는 하위 디렉터리를 배치하는 것에 관심이 없다면 간단히 다음을 수행할 수 있습니다.

find . -type d -perm -u+r

특정 사용자에게 디렉터리에 대한 읽기 권한이 있는지 알고 싶다면 해당 사용자가 속한 그룹을 확인하세요.

groups $userID

그리고 다음을 수행하십시오:

find . -type d -group $groupID -perm -g+r

관련 정보