도전
파일의 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