[FTZ] training9
드디어 이전부터 계속해서 얘기했던 리눅스의 권한에 대해 작성합니다. 권한에 대한 개념은 해킹에서 가장 핵심적인 부분이고 FTZ 워게임에서도 이 개념을 알아야만 문제를 해결할 수 있습니다.
권한permission
리눅스는 윈도우와 달리 한 서버에 여러 사용자가 접속하여 사용합니다. 사용자가 어떤 서버에 아이디를 갖고 있다면, 그 계정이 할당된 공간에 홈페이지를 만들거나, 파일을 업로드, 생성하는 등 여러 작업들을 할 수 있습니다. 이 때, 다른 사용자가 이 사용자의 파일에 접근하지 못 하도록 막을 수 있는 개념이 권한(Permission)입니다.
만약 권한이 없는 파일에 접근하려한다면 Permission Denied라는 에러메시지가 출력됩니다. 이처럼 리눅스는 각 사용자마다 특별한 권한을 부여하여, 그 권한의 범위를 넘어서지 않는 파일들만 제어할 수 있도록 설정되어 있습니다.
권한 분석
리눅스에는 유저, 그룹,, 아더, 루트, 총 4가지 종류의 사용자가 있습니다.
- 유저: 자신을 의미합니다.
- 그룹: 모든 유저는 하나 이상의 그룹에 속합니다. 임의로 그릅을 변경하지 않는 한 모든 유저는 자신의 유저명과 같은 이름의 그룹에 속합니다.
- 아더: 유저와 그룹을 제외한 다른 사람입니다.
- 루트: 절대적 권한을 갖고 있는 사용자입니다. 이 권한을 갖고 있는 유저는 어떤 권한에도 구속되지 않고 파일들을 제어할 수 있습니다. 이 권한을 얻기 위한 것이 바로 해킹입니다.
id
명령을 입력해 현재 자신의 정보를 분석해봅시다.
1 | [trainer9@ftz trainer9]$ id |
- uid: User ID의 약자입니다.
2009
라는 숫자는 지난 번에 살펴본 것처럼 컴퓨터가 이해할 수 있는 사용자 ID입니다. 이 명령으로trainer9
이라는 아이디가2009
인 것을 알 수 있습니다. - gid: Group ID의 약자입니다. 각 유저마다 gid를 갖고, 다른 사람을 자신의 gid를 가진 그룹에 포함시킬 수 있습니다. 일반적으로 uid는 gid와 항상 같습니다.
- groups: 현재 자신이 어떤 그룹에 속해 있는지 나타냅니다. 기본적으로 uid와 같은 그룹에 속합니다.
이제 파일의 권한정보를 분석해보겠습니다. 파일의 권한은 ls -al
명령이 출력하는 결과에서 확인할 수 있습니다.
1 | -rwxrwxrwx 1 trainer9 trainer10 5 10월 20 21:35 test1 |
training1에서 살펴봤듯, 가장 왼쪽의 첫 문자는 파일과 디렉토리를 구분하는 문자입니다. 이제는 나머지 부분들을 분석해봅시다. 복잡해보이는
rwxrwxrx
문자열을 자세히 보면 같은 문자열이 세 번씩 반복되는 것을 알 수 있습니다. 이 부분이 바로 권한 정보이면 rwx
가 각각 '유저 권한', '그룹 권한', ,'아더 권한'을 의미합니다. r, w, x는 순서대로 읽기권한(read), 쓰기권한(write), 실행권한(execute)을 의미합니다.
파일의 유저와 그룹은 각각 두 번째, 세 번째 영역입니다. 즉, 위의 test1
파일은 trainer9에게 rwx권한이 있고, trainer10에게도 rwx권한이 있고, 그 외의 유저에게도 rwx권한이 있다라는 것으로 분석할 수 있는 것입니다.
Tip: 파일과 디렉토리를 구분했듯이, 실행권한이 있는지 여부를 확인하여 실행파일인지 아닌지를 알 수 있습니다.
FTZ training9 정리글을 마칩니다.
[FTZ] training9