
사용자가 검색(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