![사용자가 셸에서 디렉터리를 검색하고 에코할 수 있는 권한이 있는 모든 디렉터리를 찾습니다.](https://linux55.com/image/30421/%EC%82%AC%EC%9A%A9%EC%9E%90%EA%B0%80%20%EC%85%B8%EC%97%90%EC%84%9C%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EA%B2%80%EC%83%89%ED%95%98%EA%B3%A0%20%EC%97%90%EC%BD%94%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EA%B6%8C%ED%95%9C%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EB%AA%A8%EB%93%A0%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EC%B0%BE%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
사용자가 검색(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