리눅스에서 Run0을 사용하는 방법
Run0은 Systemd 기반 Linux 배포판을 위한 새롭고 혁신적인 권한 상승 프로그램입니다. sudo 및 doas와 같은 기존 에스컬레이션 앱에 대한 가볍고 “구성 없는” 대안을 제공합니다. 여기에서는 Linux 시스템에 대한 명령을 에스컬레이션하기 위해 Run0을 사용하는 기본 사항을 보여드립니다.
그 전에, Run0이 무엇이고 sudo와 어떻게 다른지 알아보는 것이 좋습니다.
다른 사용자로 프로그램을 실행하는 방법
권한 상승 앱의 가장 일반적인 용도 중 하나는 루트 사용자로 명령을 실행하는 것입니다. 이와 관련하여 Run0에서 루트 사용자를 탭하려면 실행하려는 명령 앞에 run0을 추가해야 합니다. 예를 들어, 다음은 루트로만 액세스할 수 있는 디렉토리에 새 폴더를 만듭니다.
이렇게 하면 CLI 비밀번호 프롬프트나 현재 사용자의 비밀번호를 묻는 작은 GUI 창이 나타납니다.
sudo 및 doas와 유사하게 Run0도 명령을 실행할 때 루트가 아닌 사용자로 전환할 수 있습니다. 이렇게 하려면 플래그를 추가한 --user
다음 명령을 실행하려는 사용자 이름을 추가합니다.
전환하려는 사용자의 비밀번호를 입력한 후 을 누르세요 Enter.
다른 사용자의 셸로 전환하는 방법
권한 상승 앱의 또 다른 핵심 부분은 사용자를 루트 셸로 떨어뜨릴 수 있는 기능입니다. 이를 통해 루트 사용자로서 시스템과 상호 작용하고 CLI에서 더 복잡한 명령을 실행할 수 있습니다.
Run0에서는 추가 인수 없이 프로그램을 실행하여 이 작업을 수행할 수 있습니다.
--user
루트로 프로그램을 실행하는 것과 마찬가지로 플래그와 함께 Run0을 사용하여 특정 사용자로 셸 세션을 시작할 수도 있습니다 .
게다가, run0을 사용하면 루트가 아닌 사용자를 위한 임시 그룹 권한으로 셸 세션을 만들 수 있습니다. 이는 루트로 떨어지지 않고 특정 사용자 및 그룹 뒤에 잠긴 폴더에 액세스하려는 경우에 유용합니다.
예를 들어, 다음 명령은 “alice” 사용자에게 “www-data” 그룹에 대한 임시 액세스 권한을 부여합니다.
--chdir
새 셸 세션으로 이동할 때 디렉토리를 강제로 변경하려면 플래그를 사용할 수도 있습니다 .
현재 Run0 세션을 사용자 지정하는 방법
Run0의 가장 큰 판매 포인트는 슈퍼유저 동작을 처리하기 위해 setuid(SUID)를 사용하지 않는다는 것입니다. 대신, 루트로 명령을 실행하기 위해 격리된 가상 TTY를 만드는 systemd-run에 의존합니다.
이 접근 방식의 한 가지 결과는 Systemd가 모든 Run0 셸을 서비스 관리자 아래에서 실행되는 개별 단위로 취급한다는 것입니다. 이를 통해 기존 권한 상승 앱과 달리 루트 셸 프로세스를 사용자 지정할 수 있습니다.
루트 셸에 라벨을 추가하려면 플래그 --unit
뒤에 사용하려는 이름을 입력하세요.
플래그를 추가하여 루트 셸에 사용자 정의 설명을 추가할 수도 있습니다 --description
.
다음을 사용하여 루트 셸의 사용자 정의 이름을 나열하여 세부 정보가 올바르게 적용되었는지 확인하세요 systemctl
.
기본적으로 Run0은 루트 셸 배경색을 빨간색으로 변경합니다. 이는 유용한 시각적 표시기이지만 시스템에서 밝은 테마를 사용하는 경우 산만해질 수 있습니다.
이를 변경하려면 --background
플래그 뒤에 40-49 사이의 값을 사용합니다.
마지막으로 루트 셸의 “niceness level”도 조정할 수 있습니다. 이것은 -20에서 19 사이의 값으로, 커널이 다른 프로세스보다 프로세스를 우선시할지 여부를 결정합니다.
루트 셸에 가장 높은 우선순위를 부여하려면 --nice
“-20” 값이 있는 플래그를 사용하세요.
Run0 세션을 함께 그룹화하는 방법
각 Linux 루트 셸을 사용자 정의할 수 있는 것 외에도 Run0을 사용하여 Systemd 슬라이스로 그룹화할 수도 있습니다. 이것은 나머지 시스템에 영향을 미치지 않고 머신이 프로세스에 대한 리소스 수요를 조정할 수 있게 해주는 특별한 구조입니다.
다른 슬라이스에 루트 셸을 만들려면 플래그 --slice
뒤에 이동하려는 슬라이스 이름을 입력하세요.
새 슬라이스 내에서 프로세스를 나열하여 새 세션이 실행 중인지 확인하세요.
플래그를 사용하여 Run0이 나온 슬라이스와 함께 새 슬라이스를 그룹화할 수도 있습니다 --slice-inherit
. 이는 쉘을 해당 슬라이스에 이미 그룹화했고 새 쉘을 추가하려는 경우에 유용합니다.
Run0을 사용하여 Systemd 컨테이너에서 명령을 실행하는 방법
Systemd-nspawn은 Docker와 유사한 가벼운 Linux 컨테이너를 만들고 관리할 수 있는 특수 프로그램입니다. Systemd 제품군의 일부이므로 Run0을 사용하여 호스트 머신에서 nspawn 컨테이너의 명령을 실행할 수도 있습니다.
시스템에서 사용 가능한 Systemd-nspawn 컨테이너를 나열하여 시작하세요.
컨테이너의 루트 디렉토리 내에 폴더를 만들려면 다음 명령을 실행하세요.
Run0를 사용하여 컨테이너의 루트 셸로 드롭하는 것도 가능합니다.
터미널 세션의 호스트 이름을 인쇄하여 이제 컨테이너 내부에서 실행 중인지 확인하세요.
Linux에서 루트 명령을 실행하고 관리하는 데 Run0을 사용하는 방법을 배우는 것은 권한 상승 앱에 관한 한 빙산의 일각에 불과합니다. su, sudo, sudo -s의 차이점을 살펴보면서 복잡한 세계에 깊이 빠져보세요.
이미지 출처: Xavier Cee via Unsplash . 모든 변경 사항과 스크린샷은 Ramces Red가 제공했습니다.
답글 남기기