도전
파일의 UNIX 권한 및 해당 소유권 (사용자 ID 및 그룹 ID)의 기호 표기법을 나타내는 문자열이 제공되면 지정된 사용자 A에게 파일 읽기 / 쓰기 / 실행 권한이 있는지 여부를 결정 하십시오.
관련 .
UNIX 시스템의 권한
UNIX에서 모든 파일에는 사용자 및 파일이 속한 그룹을 포함하여 세 가지 권한 클래스 ( user , group 및 other )와 소유권이 있습니다.
기호 표기법은 10 자로 구성됩니다. 첫 번째 캐릭터는이 도전에서 중요하지 않습니다. 나머지 9 개의 문자는 사용자, 그룹 및 기타 클래스의 권한을 나타내는 3 개의 3 자 세트로 구성됩니다. 각 세트의 문자는 읽기 / 쓰기 / 실행이 허용되는지 여부를 나타냅니다. 허용되는 경우 r, w또는 x입니다. 그렇지 않으면 -입니다.
참고 하여 setuid , setgid를 및 스티키 비트가 각 세트의 제 특성을 변경할 수 s, S, t또는 T. 간단한 규칙은 다음과 같습니다. 문자가 소문자이면 권한이 설정됩니다. 그렇지 않으면 그렇지 않습니다.
(권한의 기호 표기법에 대한 자세한 내용은 여기 를 참조 하십시오 .)
모든 사용자는 자신의 사용자 ID를 가지며 모든 그룹은 그룹 ID를 갖습니다. 모든 ID는 음이 아닌 정수입니다. 사용자는 하나 이상의 그룹에 속합니다. 사용자 A가 파일에 액세스하려는 경우 시스템은 다음과 같이 사용 권한을 확인합니다.
파일이 user에 속하는 경우 사용자 클래스
A의 권한을 확인하십시오 .파일이에 속해
A있지만A파일이 속한 그룹에 속하는 경우 그룹 클래스 의 권한을 확인하십시오 .그렇지 않으면 다른 클래스 의 권한을 확인하십시오 .
그러나 한 가지 예외가 있습니다. 사용자 ID가 0 (수퍼 유저) 인 경우 어떤 작업을 수행 할 권한이 있습니다 !
명세서
- 프로그램 / 기능은 합리적인 형식의 입력으로 이것을 가져와야합니다.
- 기호 표기법의 권한 .
- 파일이 속한 사용자 ID 및 그룹 ID.
- 의 사용자 ID
A및A속한 그룹 ID 목록입니다 . - 액세스 유형. 읽기, 쓰기 및 실행에 세 가지 다른 한 자리 또는 한 문자 값을 사용할 수 있습니다.
A파일에 액세스 할 수있는 권한이 있으면 정확한 값을, 그렇지 않으면 거짓 값을 반환 / 출력합니다 .- 표기법의 첫 문자는 항상
-(일반 파일) 이라고 가정 할 수 있습니다 . - 이것은 code-golf 이므로 가장 짧은 바이트 수가 이깁니다!
테스트 사례
형식은 [permissions, user ID of file, group ID of file, user ID of A, group IDs of A, type(r/w/x)]입니다.
[-rwx------, 13, 15, 13, [15, 24], r]: True # user
[-rwxr-xr-x, 13, 24, 24, [15, 24], w]: False # group
[-rwxr-Sr-T, 13, 15, 24, [15, 35], x]: False # group
[-rwsr-xr-t, 13, 15, 24, [24, 35], x]: True # others
[----------, 13, 15, 0, [0, 1, 2], r]: True # superuser
[----------, 13, 15, 1, [0, 1, 2], r]: False # others
[----rwxrwx, 13, 15, 13, [15, 24], r]: False # user