터미널 환경을 자주 사용하다 보면 sudo라는 명령어를 정말 많이 쓰게 된다. 이번 시간에는 sudo는 왜 강력하며, 어떤 한계가 있는지에 대해 알아본다.sudo?SuperUser DO의 약자로, 일반 사용자가 잠깐 동안 root(최고 관리자) 권한을 빌려서 명령을 실행할 수 있게 해주는 도구다.이전에 이렇게 많이 사용했다. vagrant 사용자라고 가정을 해보자.# 일반 사용자로는 실패$ cat /etc/shadowcat: /etc/shadow: Permission denied# sudo를 붙이면 성공$ sudo cat /etc/shadowroot:!:19000:0:99999:7:::... 왜 강력한 걸까?모든 파일 권한을 무시할 수 있다.모든 이라는 말에 딴지를 걸면… 어쩔 수 없지만, 대부분이라고 ..
Infra/Linux
1. 커널 수준에서의 root 권한 처리 메커니즘리눅스 커널은 파일에 접근할 때 해당 프로세스의 자격 증명(Credentials)을 확인한다. 일반 사용자는 파일의 아이노드(Inode)에 기록된 9비트 권한(rwxrwxrwx)을 기준으로 통제받지만, root는 다르다. CAP_DAC_OVERRIDE의 동작커널 내부에는 권한을 세분화한 Capability라는 체계가 존재한다.root(UID 0) 프로세스는 기본적으로 모든 Capability를 소유한다.그 중 CAP_DAC_OVERRIDE는 파일의 소유주나 권한 비트에 상관없이 읽기, 쓰기, 실행을 허용하는 핵심 권한이다.커널의 권한 확인 함수capability를 확인하여 CAP_DAC_OVERRIDE가 있으면 권한 부족을 무시SELinux/AppArmor..
금일 수업시간에 ../../../ … 무한히 반복되어 root 그 이상의 파일 시스템에 접근(?) 하려했을 때도 여전히 루트 디렉토리를 가리키는 현상을 보았습니다.이는 파일시스템의 근본적인 설계와 관련이 있는데 한번 알아보려고 합니다.inode파일시스템에서 모든 파일/디렉토리는 고유한 inode번호를 가집니다. inode에는 메타데이터(권한, 소유자, 크기, 데이터 블록 위치 등)가 저장되고, 파일명은 디렉토리 엔트리에 저장됩니다.자세한 inode 구조는 아래의 링크를 참고하면 좋을 거 같습니다.[UNIX] Inode, 디렉터리 [UNIX] Inode, 디렉터리리눅스와 디렉터리 리눅스의 파일 구분 리눅스에서는 파일을 일반 파일과 특수 파일, 디렉터리로 구분 디렉터리는 해당 디렉터리에 속한 파일을 관리하는..
