Linux에서 동일한 UID 및 GID, 특히 UID 및 GID 0을 사용하여 여러 사용자를 생성할 수 있습니까?

Linux에서 동일한 UID 및 GID, 특히 UID 및 GID 0을 사용하여 여러 사용자를 생성할 수 있습니까?

이것ArchWiki - 스냅샷 페이지백업을 수행하기 위해 원격으로 로그인하는 사용자를 생성하는 방법으로 uid및 설정을 사용하여 gid여러 사용자를 생성하는 방법이 언급되어 있습니다.0

백업 서버 취약점으로 인한 잠재적 피해를 완화하기 위해 할 수 있는 한 가지는 클라이언트 시스템에 대체 사용자를 만드는 것입니다.UID그리고지드0으로 설정하되 scponly와 같은 더 제한적인 쉘을 사용하십시오.

내 생각에는 이러한 계정에 사용자의 읽기-쓰기 실행 권한을 부여하는 것이 목적이지만, root로그인 셸이 제한된 권한을 부여하는 경우에만 가능합니다.

이는 계정이 동일 gid하고 uid계정 이름으로 구별되고 동일하며 gid동일한 uid액세스 권한을 부여한다는 의미입니까?

답변1

운영 체제에 대한 권한과 관련하여 모든 권한은 이름이 아닌 UID 및 GID와 관련됩니다. 따라서 누군가의 UID가 0(기존 Unix 모델에서)인 경우 해당 사용자는 루트이며 로그인에 사용된 이름에 관계없이 자신과 관련된 모든 권한을 갖습니다.

그러나 원격으로 로그인하는 경우 동일한 ID에 대해 여러 사용자 이름을 가질 수 있으며 각 사용자에게 다른 쉘을 제공할 수 있습니다. 전통적인 Unix passwd 및 Shadow 데이터베이스는 쉘 및 기타 정보를 사용자 이름으로 저장하기 때문에 예를 들어 UID 0에 대체 사용자 이름을 지정하면 toor(일부 시스템의 일반적인 해결 방법) 해당 사용자의 쉘이 데이터베이스에 나열되고 암호가 참조됩니다. 액세스 권한과 사용할 셸을 결정합니다. 로그인에 성공한 후 OpenSSH 또는 로그인 프로세스는 사용자 및 그룹을 지정된 ID로 변경하고 지정된 쉘을 실행합니다.

일단 로그인하면 프로세스는 여전히 루트 권한을 가지지만 실행 중인 셸에서는 제한된 프로그램 집합에만 액세스를 허용할 수 있습니다. 쉘이 실제로 제한되어 있고 다른 액세스가 허용되지 않는다고 가정하면 액세스가 이 방식으로 제한될 수 있습니다. 그러나 버그 등으로 인해 셸이 손상되면 루트 권한으로 실행할 수 있습니다.

답변2

주로 로그인 중에 사용자 이름을 고려해야 하는 여러 가지 상황이 있습니다. 사용자 이름은 사용자 항목을 결정합니다(예를 들어) 뿐만 /etc/passwd아니라 보조 그룹(예를 들어에서 /etc/group).

여러 사용자가 특정 uid 및/또는 기본 gid를 공유할 수 있지만 여전히 다른 쉘과 보조 그룹을 가질 수 있습니다. 주어진 세션에 대해 uid와 gid를 정의했다면 일반적으로 이것이 중요합니다. 프로세스에는 사용자 이름과 그룹 이름이 아닌 uid와 gid가 있습니다. 권한은 이름이 아닌 ID로 결정됩니다.

과거에는 시스템에 여러 개의 ID 0 계정이 있는 것이 일반적이었습니다. 하나는 일반 셸이고 다른 하나는 정적으로 연결된 복구 셸입니다. ID 0 계정을 백업하고 어떤 파일이든 복사할 수 있다는 것은 (당신이 언급한 것처럼) 전례가 없는 일이 아닙니다. 두 가지 사용 사례 모두 점점 더 드물어지고 있습니다. 직접 루트 로그인은 일반적이지 않으며 시스템 복원에는 정적 셸이 필요하지 않으며 풀 기반 백업 시스템은 데몬 프로세스에 의존하는 경우가 많습니다.

관련 정보