답변:
그렇습니다. 아주 드물기는하지만 확실히 가능합니다.
기본 /etc/password
/etc/shadow
기반 인증 방법에 이러한 구성을 제공 할 수 없기 때문에 직접 구현하려고 시도하는 대신 가장 간단한 방법은 사용자에 대해 이미 여러 암호를 지원하는 백엔드에 인증을 위임하는 것입니다.
잘 알려진 것은 LDAP 이며 RFC4519userPassword
에 따라 속성이 여러 값을 갖습니다 .
'userPassword'속성에 여러 값이 필요한 예는 매월 사용자가 일부 자동 시스템에 의해 생성 된 다른 비밀번호를 사용해야하는 환경입니다. 기간의 마지막 날과 첫날과 같은 과도기 기간 동안 두 연속 기간 동안 두 개의 암호를 시스템에서 유효하게해야 할 수도 있습니다.
이 RFC에도 불구하고이 설정이 실제로 적용 되려면 대부분의 디렉토리 서버 구현에서 비밀번호 정책 구성을 변경해야합니다.
리눅스 측면에서 아무것도를 금지 그것을 할 (여기라는 이름의 계정이 testuser
모두 주어졌다 pass1
과 pass2
같은 userPassword
속성 값) :
$ uname -a
Linux lx-vb 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:16:28 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
$ grep VERSION /etc/os-release
VERSION="13.04, Raring Ringtail"
$ grep "^passwd" /etc/nsswitch.conf
passwd: files ldap
$ ldapsearch -LLL -h localhost -p 1389 -D "cn=directory manager" -w xxxxxxxx "uid=testuser" userPassword
dn: uid=testuser,ou=People,dc=example,dc=com
userPassword:: e1NTSEF9b2JWYXFDcjhNQmNJVXZXVHMzbE40SFlReStldC9XNFZ0NU4yRmc9PQ==
userPassword:: e1NTSEF9eDlnRGZ5b0NhKzNROTIzOTFha1NiR2VTMFJabjNKSWYyNkN3cUE9PQ==
$ grep testuser /etc/passwd
$ getent passwd testuser
testuser:*:12345:12345:ldap test user:/home/testuser:/bin/sh
$ sshpass -p pass1 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass2 ssh testuser@localhost id
uid=12345(testuser) gid=12345 groups=12345
$ sshpass -p pass3 ssh testuser@localhost id
Permission denied, please try again.
이러한 종류의 구성에 대한 기술 및 보안 관련 의미는 다음과 같습니다.
/etc/shadow
파일 에서 사용자에 대해 2 개의 항목을 만들려고 시도했지만 작동하지 않았습니다. 가장 먼저 입력 된 항목은 사용 된 비밀번호 항목입니다.
테스트 사용자를 작성했습니다.
$ useradd -d /home/newuser newuser
비밀번호를 "super123"으로 설정하십시오.
$ passwd newuser
/etc/shadow
파일을 수동으로 편집하고 두 번째 항목을 작성하십시오.
newuser:$6$....password #1...:15963:0:99999:7:::
newuser:$6$....password #2...:15963:0:99999:7:::
그런 다음 2 개의 비밀번호를 사용하여 계정으로 로그인하십시오.
su - newuser
첫 번째 항목은 /etc/shadow
사용되는 항목이며 두 번째 위치의 항목은 다음과 같이 뒤집 으면 작동하지 않습니다.
newuser:$6$....password #2...:15963:0:99999:7:::
newuser:$6$....password #1...:15963:0:99999:7:::
그런 다음 두 번째 비밀번호는 작동하고 첫 번째 비밀번호는 작동하지 않습니다.
이 접근 방식은 완전한 해킹입니다. 방금 사용 sudo
하려고 sudo
합니다. 부분적으로 존재하는 이유 입니다.
이 항목을 sudoers 파일 ( /etc/sudoers
)에 추가 하면 사용자 joe 권한으로 다음과 같은 작업을 수행 할 수 있습니다.
joe ALL=(yourusername) ALL
sudo
그렇게 할 수 ... +1
이 작업을 수행 할 수 있으면 아마해서는 안됩니다.
PAM 구성은 다소 복잡하며 인증 메커니즘에 대한 하나의 진실이 있습니다. 유한 한 올바른 구성 세트가 있지만 안전하지 않은 구성의 무한 세트가 있습니다. 이것은 당신이 일을 바꾸려고 노력하고 있고 당신이 무엇을하고 있는지 정확히 모른다면 일을 망치게 할 것이라는 것은 거의 확실합니다.
보안과 "특정 상황에서 편리"사이에서 선택하는 경우 전자를 선택하십시오.
동일한 계정에 대해 각각 비밀번호가있는 두 개의 다른 사용자 이름을 설정할 수 있습니다. 실행 vipw
편집에 /etc/passwd
수동으로, 관심있는 계정의 기존 행을 복제하고 이름을 변경 (그리고 경우 등 GECOS 필드 , 홈 디렉토리 및 쉘). vipw -s
에서 해당 사용자의 행을 실행 하고 복제하십시오 /etc/shadow
. 새 사용자 이름으로 로그인하고 실행하여 새 사용자 이름 passwd
의 비밀번호를 변경하십시오. 이제 동일한 계정에 대해 서로 다른 암호를 가진 두 개의 다른 사용자 이름이 있습니다 (사용자 ID는 계정을 결정하는 것입니다).
이것은 아마도 좋은 생각이 아닙니다. 수행하려는 작업에 따라 다른 접근 방식이 더 적합 할 수 있습니다.
다른 계정을 만들고 첫 번째 계정에 sudo를 사용하여 해당 계정으로 명령을 실행할 수있는 권한을 부여하십시오.
user1 ALL = (user2) ALL
sudo
user1이 user2로 명령을 실행할 수 있도록 설정했을 것입니다 . (sudo
루트로 명령을 실행하기위한 것이 아니라 모든 사용자로 명령을 실행할 수 있습니다.)