여러 UNIX 사용자가 UID를 공유하면 어떤 부작용이 있습니까?

여러 UNIX 사용자가 UID를 공유하면 어떤 부작용이 있습니까?

이것시스템 응용 프로그램/그림자내 GNU/Linux 시스템의 패키지에는 useradd이전에 간과했던 옵션인 을 지원하는 명령이 포함되어 있습니다. --non-unique대학에서 집에 돌아올 때 편의를 위해 원래 사용자 이름(집에서 임의의 이름)에 대한 새 사용자 이름을 만들었습니다.

useradd --non-unique -u 1001 \
     --no-create-home --home-dir /home/casualname \
     -g 1001 -G `id casualname -G | tr ' ' ,` universityUsername

이를 통해 ~/.ssh/config 별칭을 생성하거나 -l 옵션을 지정하지 않고도 loginuniversityUsername을 사용하여 캠퍼스에서 로그인할 수 있습니다 ssh. 로그인 후 whoami캐주얼네임으로 신고해주세요. 이는 Casualname이 /etc/passwd 파일의 상단에 더 가깝게 보이기 때문입니다.

이러한 별칭이 얼마나 널리 지원되는지, 그리고 이를 사용하는 데 단점이 있는지 알고 싶습니다. 또한 사용자가 /etc/passwd에서 항목을 재정렬할 수 없는 시스템에서 기본 사용자 별칭을 프록시 별칭($USER가 설정된 값)으로 선택하는 방법이 있습니까?

답변1

여러 사용자가 동일한 UID를 사용할 수 없습니다. UID가 동일하면 동일한 사용자입니다.

당신이 가지고 있는 것은 동일한 사용자에 대한 사용자 데이터베이스의 여러 항목입니다. 이것은 내가 본 모든 UNIX 변형에서 가능합니다. 사용자 이름은 어떤 항목이 사용되는지, 따라서 로그인 시 어떤 비밀번호, 홈 디렉터리 및 쉘이 적용되는지를 결정합니다. 첫 번째 항목은 사용자 데이터베이스의 ID 기반 조회가 반환할 내용을 결정합니다. 일부 애플리케이션은 이름(사용할 수 있음 $USER)으로 사용자 데이터베이스를 조회하고 다른 애플리케이션은 UID를 사용하는 경우 첫 번째 항목을 가져오며 이에 대해 수행할 수 있는 작업은 없습니다.

귀여운 설정이지만 귀엽지만 대부분 쓸모없는 것 중 하나입니다. 이는 특이한 일입니다. 관리자 동료가 있어도 이에 대해 감사하지 않을 것입니다. 많은 애플리케이션이 이러한 상황을 처리하지 않고 제대로 수행되지 않을 수 있습니다(예: $LOGNAME일부 기능에 따라 다른 데이터가 사용되는 결과가 발생함). 로그인한 사용자 이름에 따라 다름). 또한 오류가 발생하기 쉽습니다. 두 번째 항목을 생성하려면 루트 액세스 권한이 필요하며 두 항목을 내부 또는 외부에서 편집해야 한다는 것을 기억해야 합니다 passwd( 예를 들어 루트 액세스가 필요한 shadow일반 호출과 달리 비밀번호 변경 ). passwd정당한 이유가 있는 경우에만 이 작업을 수행해야 합니다.

원하는 것이 동일한 SSH 사용자 이름을 사용하는 것이라면 다른 사람들이 수행한 작업은 다음과 같습니다.별칭.ssh/config. 이것이 그들의 목적입니다. 설정이 더 간단하고, 더 많은 권한이 필요하지 않으며, 특이하고 잠재적으로 혼란스러울 수 있는 구성을 설정하지 않습니다.

동일한 사용자에 대해 여러 항목을 유용하게 사용하는 것 중 하나는 문제가 발생할 때 사용자를 구출하는 것입니다. 예를 들어 toor한 계정(레거시 이름)의 셸은 시스템 복구에만 사용되는 정적으로 연결된 바이너리입니다.

답변2

실제 별칭이 아니므로 사용하지 않는 것이 좋습니다. Kerberos와 같은 일부 프로그램은 UID가 아닌 이름으로 사용자를 식별합니다.

예를 들어 다음이 작동할 수 있습니다.

kinit universityUsername

단, 다음의 경우에는 그 효과가 보장되지 않습니다.

kinit casualname

프로그램이 실제로 UID를 사용하는지 아니면 사용자 이름을 사용하는지 알지 못하면 자신과 사용 중인 프로그램을 혼동할 수 있으므로 이는 모범 사례가 아닙니다.

답변3

root나는 다른 로그인 셸(및 홈 디렉터리)을 지정할 수 있도록 사용자에 대해 이와 같은 별칭을 사용합니다 . 그래서 내 zoot사용자는 root이지만다루기 힘든로그인 셸로서 홈 디렉터리를 홈 디렉터리로 사용하므로 zoot모든 셸 구성( ~/.z*별칭 파일 등)을 가져올 수 있습니다. 매우 편리합니다. 즉, 어떤 방식으로든 설정을 수정할 필요가 없으며 root다른 관리자가 있다면 좋을 것입니다.

내가 알아차린 유일한 부작용은 를 사용하는 경우 rkhunter실제로 그 일을 한 사람이 자신임을 알려야 한다는 것입니다.

/etc/rkhunter.conf
UID0_ACCOUNTS=zoot

답변4

저는 LDAP에 대해 인증하는 서버에서 이 설정을 사용합니다. 일부 중요한(관리자) 사용자도 로컬 계정을 가지고 있으므로 LDAP 또는 네트워크 문제가 있어도 우리는 잠기지 않습니다. 동일한 uid를 사용한다는 것은 모든 표준 설정을 즉시 사용할 수 있음을 의미합니다.

또한 $USER 변수의 동작도 확인했습니다. 이것은 아마도 glibc의 버그일 것입니다.

일반적으로 말하면, 이 경우 로그인하는 사용자 이름이 무엇이든 "되어야" 합니다. 사용자 ID에서 사용자 이름을 찾는 것은 잘못된 동작입니다.

주목해야 할 또 다른 중요한 측면(이미 다루었지만 다른 독자들에게 강조하고 싶습니다): 그룹 구성원은 사용자 ID가 아닌 이름으로 결정됩니다. 이는 귀하의 시나리오에서 Universityusername을 일반 사용자와 동일한 모든 그룹에 추가해야 함을 의미합니다.

관련 정보