관리 용으로 하나의 암호를 사용하고 시스템 로그인에 다른 암호를 사용하십시오 할 때 정상적인 사용을

로그인 할 때 정상적인 사용을 위한 암호와 시스템 관리 및 sudo 액세스를 위한 다른 암호를 사용자에게 어떻게 제공 할 수 있습니까? 한 명의 사용자가 두 개의 암호를 갖기를 원합니다.



답변

sudo 서비스에 대한 PAM (Pluggable Authentication Module) 설정을 재정 의하여이를 수행 할 수 있습니다. 이 작업은 컴퓨터에 큰 위험을 초래합니다. 명령이 수행하는 작업을 이해하지 않는 한 복사 및 붙여 넣기 만하지 말고 항상 루트 터미널을 개방 테스트 테스트 테스트로 유지하십시오! -로그 아웃하기 전에 돌아가서 수정해야 할 경우를 대비하여.

PAM의 작동 방식에 대한 정보를 읽어 보시면 그것이 깨졌을 때 어떻게해야하는지 알 수 있습니다. 또한 권한을 올바르게 설정하지 않으면 솔루션이 암호에 대한 테이블 공격을 해시하기 쉬울 수 있으므로 대부분의 사용자는 다른 각도에서이 문제에 접근하는 것이 좋습니다 (관리를 위해 별도의 사용자 계정 만들기).

계속 진행하기로 결정한 경우 새 PAM 모듈을 설치해야합니다. pam_pwdfile은 인증에 구식 / etc / passwd 유형 파일을 사용하므로 서비스마다 다른 암호를 사용하는 데 좋습니다. 계정 인식 기능을 제공하지 않으므로 시스템에없는 사용자의 사용자 이름 / 암호 쌍을 만들 수 있습니다. sudo에 사용하기 때문에, sudo가 계정이 일반적인 방식으로 존재하는지 확인하도록하므로 중요하지 않습니다.

sudo apt-get install libpam-pwdfile

또한 편리한 htpasswd 파일 편집기를 가져 오는 것이 좋습니다. Benjamin Schweizer는 파이썬으로 편리한 편집기를 만들었습니다. http://benjamin-schweizer.de/htpasswd_editor.html 에서 가져 와서 종속 항목을 설치하십시오.

sudo apt-get install python-newt

도구를 사용하여 htpasswd 형식 파일을 생성하십시오 sudo python htpasswd_editor sudo.passwd. sudo에 사용할 것과 동일한 사용자 이름을 사용하여 사용자 이름과 비밀번호를 입력하십시오 (사용할 각 사용자마다 하나씩). 안전한 곳으로 복사하십시오 (테스트 할 때 /etc/sudo.passwd에 넣으십시오) chmod 660 /etc/sudo.passwd. 일반 사용자가 읽을 수 없도록하십시오 : 루트.

파일을 루트가 소유하고 다른 사용자가 읽을 수없는 파일인지 확인하십시오. 파일에 해시 된 비밀번호가 포함되어 있기 때문에이 취약점은 다른 사용자가 읽거나 쓸 수 있으면 보안을 심각하게 손상시킵니다. 이런 이유로 보안을 유지해야하는 컴퓨터에서는이 방법을 권장하지 않습니다.

마지막으로 /etc/pam.d/sudo파일을 편집 하십시오. 다른 줄 위에 다음 줄을 추가하십시오 @include ....

auth    required    pam_pwdfile.so pwdfile /etc/sudo.passwd

마지막 인수를 생성 된 htpasswd 파일의 경로로 바꾸십시오. 다음 줄을 주석 처리 #@include common-auth하여 새 인증 방법을 사용하고 있는지 확인하십시오.

주의 사항/etc/pam.d/sudo루트 터미널에서 파일 을 편집해야합니다 . 테스트하지 않고 이것을 닫지 마십시오! 그렇게하면, 다시 로그인하지 못할 수 있으며 (무슨 내용이 있으면) 복구 디스크로 부팅하여 시스템을 복구해야합니다. 새 터미널을 열어서 로그 아웃하기 전에 테스트하고를 사용해보십시오 sudo. 더 이상 일반 로그인 비밀번호로는 작동하지 않지만 passwd 파일을 생성 할 때 사용한 새 비밀번호가 필요합니다. 파일을 업데이트하려면 유용한 도구를 다시 사용하십시오.


답변

원래 질문에 대한 훨씬 간단한 해결책이 있으며 내가 실행하는 방법입니다.

  • 관리자가 아닌 사용자 하나 만들기
  • 관리자 생성

항상 관리자가 아닌 사용자로 로그인하고 관리자가 아닌 사용자가 “관리자”를 수행해야 할 때마다 다음을 수행하십시오.

fab-user@fab-ux:/media/Data/Temp
$ su - fab-root
Password:
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc

예, 원하는 것은 아니지만 실제로 필요한 것입니다.


답변