당신의 맥 시스템 폴더 이해하기

시스템 폴더는 사용자가 접근하도록 설계되지 않은 폴더입니다. 이들은 애플리케이션과 운영 체제가 실행될 수 있도록 지원하고 자원을 제공합니다. 이러한 폴더는 사용자가 애플리케이션과 프로그램을 통해 호스트를 조작할 수 있도록 해주는 계층입니다. 일부는 숨겨져 있고, 일부는 그렇지 않지만 거의 모든 폴더는 사용자에게 어떤 식으로든 접근할 수 있습니다.
하지만 각 시스템 폴더는 어떤 용도로 사용될까요? “bin”은 무엇이며, 어떻게 컴퓨터에 도움이 될까요? 아래에서 가장 많이 언급되는 시스템 폴더를 살펴보겠습니다.
당신의 맥에서 “ /System” 폴더 자체는 그리 많은 내용을 포함하고 있지 않습니다. 우리는 다른 더 깊은 시스템 폴더로 넘어가기 전에 그 내용을 먼저 살펴보겠습니다.
참고: 시스템 폴더와 파일을 추가, 삭제하거나 수정하지 마십시오. 안전하게 탐색할 수는 있지만, 파일을 추가, 삭제 또는 수정하거나 폴더 자체를 변경하는 것은 예측할 수 없는 결과를 초래할 수 있으며, 때로는 시스템에 치명적인 영향을 줄 수 있습니다. 실험을 해야 한다면 진행하기 전에 당신의 맥의 부팅 가능한 클론을 만들어 두십시오.
라이브러리 폴더: /System/Library 및 ~/Library

라이브러리 폴더는 사용자와 가장 가까운 곳에 있습니다. 이들은 애플리케이션에 의해 생성되며, 애플리케이션은 운영 중 파일을 추가, 삭제 및 수정합니다. 솔직히 말해, 여기에서의 조직 프로세스는 다소 혼란스러울 수 있습니다. 애플리케이션은 라이브러리에 파일을 배치할 때 기본적으로 자유롭게 행동할 수 잇지만, 대부분은 꽤 비슷한 프로세스를 따릅니다.
사용자 라이브러리 폴더(“ ~/Library”에 위치)와 시스템 라이브러리 폴더(“/System/Library”에 위치) 모두에서 다양한 파일과 폴더를 찾을 수 있습니다. 이러한 파일은 설정, 애플리케이션 데이터베이스, 메타데이터, 플러그인, 저장된 애플리케이션 상태, 시스템 프로필, 쿠키 등을 저장합니다.
애플리케이션 지원

“~/Library/Application Support” 폴더는 가장 빈번하게 접근되는 라이브러리 폴더입니다. 여기에서 애플리케이션은 작동에 필요한 파일을 저장합니다. 사용자 데이터 폴더와는 별도로, 이러한 파일은 오염이나 수정을 피하기 위해 분리될 수 있습니다.
사용자가 이 폴더에 접근하는 이유는 기본 설정에 의해 지원되지 않는 방식으로 프로그램의 작동 방식을 변경하거나 종류의 캐시 또는 데이터베이스 오류를 수정하기 위해서입니다. 프로그램의 애플리케이션 지원 폴더를 제거하는 것은 프로그램을 기본 상태로 재설정하고 깔끔한 시작을 강제하는 좋은 방법입니다. 그리고 애플리케이션을 해킹하고 싶다면, 곧 그 프로그램의 애플리케이션 지원 폴더에서 발견할 것입니다.
/System/Library와 ~/Library의 차이점은 무엇인가요?
macOS에는 왜 두 개의 라이브러리 폴더가 필요할까요? 시스템 라이브러리는 모든 사용자를 위해 시스템 전반적인 요구를 위해 사용됩니다. 모든 사용자가 접근할 수 있습니다. 반면 사용자 라이브러리는 특정 사용자만 접근할 수 있습니다.
유닉스 폴더: /bin, /sbin, /usr, /var, /private

macOS는 유닉스 커널 위에 구축됩니다. 이는 많은 기본 기능이 유닉스 기능에 기반하고 있다는 것을 의미합니다. 따라서 더 높은 수준의 macOS 시스템 폴더 외에도 유닉스 폴더를 찾을 수 있습니다. 이러한 폴더는 보편적으로 숨겨져 있으므로 투어를 따르기 위해 숨겨진 파일을 표시해야 합니다.
홈 디렉토리에서 몇 개의 유닉스 폴더를 찾을 수 있습니다. 가장 주목할 만한 것은 “/bin” 및 “/sbin”, “/usr”, “/var”, 그리고 “/private”입니다.

“/bin”과 “/sbin” 모두 바이너리를 보유합니다. “sbin”은 파일 시스템이 마운트되지 않아도 시스템을 부팅, 복원, 복구 및 수리하는 데 필요한 바이너리를 보유합니다. “/bin”은 본질적으로 모든 사용자가 사용할 수 있는 사용자 명령을 보유합니다. “bin”은 bin aries의 약자이고 “sbin”은 s ystem bin aries의 약자입니다.
macOS의 대부분의 파일 시스템 마운팅 바이너리는 “/sbin”에서 “/System/Library/Filesystems” 폴더의 macOS 파일 시스템 플러그인에 심볼릭 링크되어 있습니다.

“/usr”은 정상적인 시스템 운영 중에 사용되는 바이너리와 라이브러리를 포함하고 있습니다. 여기의 파일은 파일 시스템이 마운트된 후에 사용됩니다. “usr”은 “user” 또는 U nix S ystem R esources의 약자입니다.

“/var”은 시스템 운영 중에 작성된 파일을 포함하고 있으며, 캐시, 데이터 라이브러리 및 로그와 같은 파일입니다. Var는 var iable의 약자이며, 보통 핵심 수준의 시스템 애플리케이션만이 작성합니다. macOS에서는 “/var”가 “/private/var”에 심볼릭 링크되어 있습니다.

“/private”는 데몬 및 명령줄 도구 구성, 캐시, 변수, 가상 메모리 스왑 파일, 임시 파일 및 슬립 이미지를 포함합니다. “/etc”와 “/tmp”와 같은 일부 유닉스 시스템 폴더는 그 내용물을 위해 /private에 동일한 이름의 디렉토리에 심볼릭 링크되어 있습니다.
이 폴더의 내용에 대해 더 알고 싶다면, 맥의 유닉스 폴더에 대한 자세한 분류를 참고할 수 있습니다.
확장자

해킨토시를 만들었던 경험이 있다면 “System/Library/Extensions”를 들어봤을 것입니다. 일반적으로 “S/L/E”로 약칭되는 이 폴더는 macOS 커널의 기능을 확장하는 “kexts” 또는 커널 확장 프로그램을 포함하고 있습니다. kext를 추가하면 macOS 커널이 새로운 하드웨어와 소통할 수 있습니다. 윈도우를 사용해 본 적이 있다면, kext는 드라이버와 같습니다.
이 폴더의 내용을 수정하는 것은 복잡한 작업으로, 신중한 권한 관리가 필요합니다. macOS에서 kext를 추가하거나 제거하려면 반드시 올바르게 수행해야 합니다.
에이전트 및 데몬
데몬과 에이전트는 백그라운드에서 실행되어 사용자와의 상호 작용 없이 작업을 수행합니다. “데몬”이라는 독특한 이름은 맥스웰의 데몬에서 유래되었습니다.
데몬은 시스템 작업을 수행하며 루트로 실행되며, 에이전트는 현재 로그인한 사용자에 의해 실행됩니다. 글로벌 에이전트와 데몬은 모든 사용자를 대신해 접근하고 실행할 수 있지만, 사용자 에이전트는 그들의 라이브러리 파일 소유자만을 대신해 실행될 수 있습니다.
- “~/Library/LaunchAgents”는 로그인한 사용자를 대신해 실행되는 사용자 에이전트를 포함합니다.
- “/Library/LaunchAgents”는 로그인한 사용자를 대신해 실행되는 글로벌 에이전트를 포함합니다.
- “/System/Library/LaunchAgents”는 로그인한 사용자를 대신해 실행되는 시스템 에이전트를 포함합니다.
- “/Library/LaunchDaemons”는 루트에 의해 실행되는 글로벌 데몬을 포함합니다.
- “/System/Library/LaunchDaemons”는 루트에 의해 실행되는 시스템 데몬을 포함합니다.
명령줄 프로그램 launchctl을 사용하여 새로운 데몬을 생성하고 기존의 것을 구성할 수 있습니다.
결론
당신의 맥에는 숨겨져 있는 다른 비사용자 폴더가 있지만, 위에서 언급한 것이 가장 자주 접근되는 폴더입니다. 유닉스 파일 시스템의 구성 방식에 대해 더 알고 싶다면, 유닉스와 유사한 파일 및 디렉토리 배치에 대한 요구와 지침을 설명하는 파일 시스템 계층 표준을 확인해보십시오.