사용자에게 UID=0 GID=0을 제공하여 사용자에게 루트 권한을 부여하는 데 문제가 있습니까?

사용자에게 UID=0 GID=0을 제공하여 사용자에게 루트 권한을 부여하는 데 문제가 있습니까?

친구와 나는 전체 시스템 내에서 각각 특정 작업을 전담하는 여러 가상 머신을 관리하고 있습니다. 컴퓨터에 로그인하는 유일한 시간은 관리 작업을 수행해야 할 때뿐이기 때문에 일반적으로 컴퓨터를 관리해야 할 때 루트로 로그인합니다. 우리가 실행하는 모든 명령은 일반적으로 sudo 명령이기 때문에 일반적으로 sudo를 사용하지 않습니다.

우리는 별도의 .bash_history를 제공하고 다른 컴퓨터가 마지막으로 로그인한 시간 등을 확인하기 위해 이러한 컴퓨터에서 계정을 별도로 유지하려고 합니다. 이를 위해서는 전체 루트 권한을 가진 두 개의 계정이 필요합니다.

한 가지 방법은 일반 사용자 계정을 루트와 동일한 UID=0 GID=0으로 변경하는 것입니다. 문제는 동일한 UID 및 GID(특히 루트와 동일)를 가진 여러 사용자 계정을 갖는 데 따른 위험(예: 예상치 못한 또는 명백하지 않은 효과)이 있습니까?

추신: 슈퍼유저에게 이 질문을 했지만 회전초 배지만 얻었으므로 여기에서 시도해 보겠습니다.

답변1

중요한 것은 올바른 ID와 GID를 갖는 것이므로 (대부분의) 작업을 "루트"로 수행할 수 있습니다. 그러나 두 새 계정을 모두 루트로 갖는 것은 귀하와 귀하의 친구를 구별하기를 원하기 때문에 작동하지 않습니다. 운영/로그인.

종종 시스템이나 기타 소프트웨어는 혼란스러워서 한 사용자에게 다른 사용자의 이름, 완전히 다른 사용자 또는 루트 이름을 표시합니다. (예를 들어, 세 명의 사용자가 동일한 ID/GID를 가지고 있다면 시스템은 로그인을 하고 있는데 왜 다른 로그인이 있다고 말하는지 궁금할 수도 있습니다.

sudo 그룹에 속한 일반 계정을 사용하고 sudo su언급한 대로 일반 루트로 입력하는 남용을 피하기 위해 일부 규칙에 따라 sudo를 사용하는 것이 좋습니다. 모든 루트 명령을 sudo 명령으로 사용하면 사소한 불편함을 무시할 수 있다는 이점이 있습니다. , 귀하는 이 작업을 수행할 수 있는 올바른 사용자로 로그인되어 있습니다.

보안 관점에서 루트 사용자는 일반적으로 시스템이 동일한 ID를 가진 다른 사용자에게 부과할 수 없는 다양한 제한 사항을 갖습니다. 좋은 예는 sshd가 기본적으로 원격 루트 로그인을 허용하지 않는다는 것입니다. 다른 사람들도 있을 것입니다.

지금까지. 유닉스의 많은 것들은 역사적으로 루트의 id/gid가 0이라고 가정하여 구축되었습니다. 비전통적인 방식으로 이 문제를 해결하려고 하면 몇 가지 놀라운 일이 발생할 수 있습니다.

바라보다sudoers 목록에 자신을 어떻게 추가하나요?그리고비밀번호를 묻지 않고 루트로 특정 프로그램을 어떻게 실행할 수 있나요?

답변2

누구세요아니요오직"일반 사용자 계정에 UID=0, GID=0을 지정하세요.". 두 개의 추가 루트 계정을 생성(또는 변환)합니다. UID=0(및 GID=0)은 루트 계정을 정의합니다.

모든 시스템은 여러 개의 루트 계정을 가질 수 있으며,모두루트 계정. 시스템에는 이라는 계정이 필요하지 않습니다 root. 루트 계정의 이름은 무엇이든 가질 수 있습니다.

어떤 방식으로든 루트와 구별할 수 없습니다( getent passwd로그인, 홈 디렉토리 및 쉘과 같은 가능한 필드 제외 - 그러나 로그인/ssh/기타 항목이 해당 필드를 얻는 방법/시기에 따라 100% 보장되지는 않습니다).뿌리.

이 작업을 수행하는 데는 많은 "문제"가 있습니다. 거의 모든 것은 이러한 계정에서 실행되는 모든 것이 루트로 실행된다는 사실에서 비롯됩니다.

이것은나쁜아이디어. 이렇게 하지 마십시오. 대신 사용하십시오 sudo.

그건 그렇고, freebsd 시스템에는 일반적으로 root이라는 두 번째 계정이 있습니다. 일반적으로 cthulhu 쉘( 또는 cthulhu 쉘)이 아닌 (또는 또는 또는 무엇이든) 쉘로 toor사용합니다 . 이는 루트를 다른 사람과 공유하기 위해 수행된 것이 아니며 실제로 이름이 지정된 계정의 셸을 변경하지 않고도 선호하는 셸을 루트로 사용하는 편의를 위해 수행되었습니다 (이는 작지만 확실히 가정을 깨뜨릴 수 있는 일입니다). 루트) 쉘은 )입니다. tcsh/csh는 실제로 끔찍하고 정신을 파괴하는 괴물이므로 사용해서는 안 되지만 일단 루트 액세스 권한을 얻으면 들어가기가 매우 쉽습니다./bin/shbashkshzshcshtcshrootcshexec bashsu


마지막으로, 예를 들어 별도의 기록 파일을 원한다면 다음과 같이 sudo -i편집 하고 추가하세요.~root/.bashrc

HISTFILE="~/.bash_history.${SUDO_USER:-root}"

이는 루트가 로그인했는지(예: 콘솔에서 또는 를 통해 ssh) 또는 누군가 가 루트로 로그인했는지에 따라 sudo다른 HISTFILE을 설정 합니다.

해당 쉘(및 생성될 수 있는 모든 하위 쉘)에서 HISTFILE을 변경할 수 없도록 하려면 바로 뒤에 다음을 추가하십시오.

readonly HISTFILE

관련 정보