서로 다른 UNIX 계정이 사용자 이름을 공유하지만 별도의 비밀번호를 가질 수 있습니까?

서로 다른 UNIX 계정이 사용자 이름을 공유하지만 별도의 비밀번호를 가질 수 있습니까?

UNIX 시스템에서는 각 개별 사용자 계정에 고유한 사용자 이름이 있습니다. 따라서 비밀번호는 고유하지 않습니다. 모든 사용자는 정확히 동일한 비밀번호를 가질 수 있습니다.

나는 그 반대를하고 싶다. 하나의 사용자 이름을 원하지만 해당 로그인에 여러 개의 비밀번호를 갖고 싶습니다. 비밀번호에 따라 다른 계정(다른 UID 사용)에 로그인하거나 다른 홈 디렉터리를 가질 수 있습니다.

목표는 동일한 사용자 이름을 공유하는 두 개의 독립된 엔터티를 갖는 것이지만 해당 파일은 독립적입니다. 이 경우 서로 다른 UID 간의 파일 권한은 덜 중요합니다.

이것이나 비슷한 것을 구현하는 방법에 대한 아이디어가 있습니까? /etc/shadow 또는 PAM이 남용되고 있습니까?

이게 PAM 모듈을 작성하면 가능한 일인가요? (저는 그런 일을 해본 적이 없습니다. 아주, 아주 어렵나요?)

답변1

나는 이것이 가능하다고 믿지 않습니다. /etc/passwd사용자 이름은 같지만 UID가 다른 두 개의 항목이 있을 수 있지만 시스템은 두 번째 항목을 무시할 수 있습니다(또는 어떤 방식으로든 오작동할 수 있음). /etc/passwd말하자면 이러한 파일은 손상된 것으로 간주됩니다.

시스템에 로그인하면 먼저 사용자 이름을 입력하라는 메시지가 표시됩니다. 이 작업을 완료하면 비밀번호를 입력하라는 메시지가 표시되고 해당 사용자 이름의 계정 비밀번호와 일치하는지 확인됩니다. 비밀번호를 입력하면 시스템은 귀하가 액세스하려는 계정을 이미 식별한 것입니다.

원하는 동작을 얻기 위해 시스템의 다양한 부분을 수정할 수 있을 것 같지만, 사용자를 인증하고 권한을 부여하는 모든 것(콘솔 로그인, su, ssh 및 기타 방법)을 포함하여 소프트웨어의 여러 다른 부분을 교체해야 합니다. )이 활성화되었습니다). 어떤 실수라도 큰 보안 허점을 초래할 수 있습니다.

편집하다:의견에 따르면 PAM이 이를 수행하는 방법일 수 있습니다. 나는 자세히 설명할 만큼 PAM에 익숙하지 않습니다. (이것은 여전히 ​​매우 나쁜 생각입니다.)

답변2

확실히 하기 위해 API 문서를 다시 확인하지는 않았지만 아마도 PAM을 사용하여 이 작업을 수행하는 방법을 찾을 수 있을 것입니다. 그다지 어렵지 않을 수도 있습니다. 이를 수행하기 위해 기존 PAM 모듈을 사용할 수도 있습니다.

당신이해야 할 일이 아닙니다. 기본적으로 이름이 하나의 사용자 ID에만 매핑된다고 가정하는 것들이 많이 있습니다. 예를 들어 getpwnamC 라이브러리에서. 나는 유지 관리해야 하는 어떤 시스템에서도 이 작업을 수행하고 싶지 않습니다. 임의의 파손이 표준이 될 것으로 예상합니다.

게다가 이것은 귀하/친구의 목표를 달성하는 데 실제로 도움이 되지 않습니다. 첫째, PC에 물리적으로 접근할 수 있으면 루트를 얻는 것이 쉽습니다. 둘째, 실제로는 누구도 속이지 않습니다. 분명히 모든 것이 손실됩니다.

답변3

내 생각에는 두 개 이상의 PAM 인증 백엔드로 이중 로그인을 수행할 수 있다고 생각합니다. 예를 들어, LDAP 및 일반 passwd/shadow 사용자 로그인을 사용하는 경우 첫 번째 방법으로 비밀번호 입력이 여러 번 실패하면 PAM은 두 번째 방법으로 대체됩니다.

적어도 그것은 동일한 설정으로 몇 년 전에 내가 겪었던 것입니다.

이것이 다른 userID가 사용된다는 의미인지는 말할 수 없지만 LDAP가 동일한 사용자 이름을 다른 userID에 매핑할 수 있으므로 그럴 수도 있습니다.

하지만 어쨌든 이는 컴퓨터에 로그인할 때마다 로그인 실패를 생성해야 함을 의미합니다(제 기억이 맞다면 2~3번). 그래서 해킹하는 것이 그리 편하지 않습니다.

그러나 시스템이 기본 백엔드의 모든 것을 검색하여 가짜 로그인을 반환하므로 위에서 언급한 다른 문제와 동일한 문제가 발생합니다.

답변4

이론적으로는 가능하지만 일반적으로 이는 나쁜 생각입니다. 이는 이에 대해 기성 프로그램을 찾을 수 없는 이유를 설명합니다.

공개적으로 표시되는 동일한 신원을 가진 별도의 계정을 요청하고 있습니다. 별도의 계정이기 때문에 실제 신원도 다릅니다. 이런 방식으로 표현하면 (권한과 로그에 개인 ID를 사용하는 것이) 현명할 수 있습니다. 일반 사용자 인증 수준에는 존재하는 것이 아무것도 생각나지 않습니다.

그러나 나는 이것이 한 사용자가 자신이 공유 계정을 사용하고 있다고 믿을 수 있는 귀하의 목표를 충족한다고 생각하지 않습니다. 사용자 이름이 동일한 것처럼 가장하는 것보다 더 많은 작업을 수행해야 합니다. 파일 공유(파일을 삭제한 다음 여전히 사용하고 있음을 알게 되면 픽스쳐가 작동 중임), 로그인 시간 등을 위조해야 합니다. 이 시점에서 다른 사용자 이름을 사용할 수 있습니다.

따라서 자신을 위한 계정과 사용하는 척하는 또 다른 공유 계정을 만드십시오. 더 나은 분리를 위해 별도의 가상 머신에 이러한 계정을 생성합니다(예:LXC).

관련 정보