계정을 완전히 비활성화하려면 어떻게합니까?


48

계정을 완전히 비활성화하려면 어떻게합니까? passwd -l다른 사람이 비밀번호를 사용하여 계정에 로그인 할 수는 없지만 개인 / 공개 키를 통해 로그인 할 수 있습니다. 계정을 완전히 비활성화하려면 어떻게합니까? 빠른 수정으로 파일 이름을로 변경했습니다 authorized_keys_lockme. 다른 방법이 있습니까?


3
결국 다시 활성화 할 계획입니까? 시스템 잠금? 그렇지 않은 경우 계정을 삭제하면됩니다.
Ken

답변:


59

에 따른 올바른 방법 usermod(8)은 다음과 같습니다.

usermod --lock --expiredate 1970-01-02 <username>

(실제로 인수 --expiredate는 형식에서 현재 날짜 이전의 날짜 일 수 있습니다 YYYY-MM-DD.)


설명:

  • --lock사용자의 비밀번호를 잠급니다. 그러나 다른 방법 (예 : 공개 키)으로 로그인하는 것은 여전히 ​​가능합니다.

  • --expiredate YYYY-MM-DD지정된 날짜에 계정을 비활성화합니다. man shadow 51970-01-01 에 따르면 모호한 값이므로 사용해서는 안됩니다.

내 컴퓨터에서 이것을 테스트했습니다. 이 명령을 실행 한 후에는 비밀번호 또는 공개 키로 로그인 할 수 없습니다.


나중에 계정을 다시 활성화하려면 다음을 실행하십시오.

usermod --unlock --expiredate '' <username>

7
1970-01-01은 / etc / shadow expiration 필드를 0으로 설정하므로 사용하지 마십시오. shadow (5) 0 값은 만료되지 않은 계정 또는 만료 된 것으로 해석되므로 사용해서는 안됩니다. 1970 년 1 월 1 일 사용하십시오. usermod --lock --expiredate 1970-02-02 <username>
Marcus Maxwell

4
이 작업을 취소하는 방법을 제공 할 수 있다면 좋을 것입니다. 것 같은데 usermod --unlock --expiredate '' username그것을 할 것입니다.
Bob

3
@MarcusMaxwell의 글에 추가 :의 매뉴얼 페이지의 usermod말 :Note: if you wish to lock the account (not only access with a password), you should also set the EXPIRE_DATE to 1.
Zero3

1
--expiredate 1충분하지 않은가?
토마스 젠슨

그러나 sudo su username다른 계정을 사용하여 작동하는 것 같습니다.
xuhdev

10

비밀번호를 잠그고 쉘을로 변경하십시오 /bin/nologin.

sudo usermod --lock --shell /bin/nologin username

(또는 더 간결하게, sudo usermod -L -s /bin/nologin username.)


'쉘을 / bin / nologin으로 변경하는 방법'은 무엇입니까?

5
@mattdm 사용자가 여전히 실행할 명령을 지정할 수 있으므로 이것은 완전한 솔루션이 아닙니다. 예를 들어 ssh username@hostname /bin/bash기본 쉘에 관계없이 사용자에게 bash 프롬프트를 제공합니다.
phunehehe 2019

4
@phunehehe — 시도해 보셨습니까? "셸 / bin / nologin이 없기 때문에 [사용자 이름] 사용자는 허용되지 않습니다."라는 로그가 표시됩니다.
mattdm

2
내가 아는 한, 유효하지 않은 쉘 동작은 실제로 문서화되어 있지 않습니다. 다른 한편으로, 맨 페이지는 암호가 선행이라면 !! Linux에서 계정은 잠긴 것으로 취급되며 실제로 작동하지 않습니다. 따라서, 문서와 현실은 어쨌든 대략적인 일치 일뿐입니다. :)
mattdm

2
sudo chsh -s /bin/nologin/etc/passwd직접 편집 하는 것보다 낫습니다 . 또한 일부 시스템에서는 /sbin/nologin입니다.
Mikel

3

여기 또 다른 간단한 방법이 있습니다. 사용자 계정 만료를 설정할 수 있습니다. 이렇게하면 계정의 비밀번호 기반 및 ssh 키 기반 로그인이 모두 방지되지만 비밀번호 는 건드리지 않습니다 .

계정을 잠 그려면

# chage -E 0 username

시스템에서 사용자 계정 'username'이 잠 깁니다. 사용자 계정을 다시 활성화하려면 다음을 수행하십시오.

계정을 잠금 해제하려면

# chage -E -1 username

사용자 계정 'username'은 시스템 에서 이전 과 동일한 비밀번호 로 다시 활성화됩니다 . 'chage'바이너리는 Red Hat Linux 의 shadow-utils 패키지 또는 Debian Linux 의 passwd 패키지의 일부입니다.


3

레 거트의 답변에 대해 언급 할 충분한 담당자가 없지만이 답변이 다른 사용 사례에 도움이되었다는 것을 공유하고 싶습니다.

1.) 해당 계정은 최종 사용자 계정이 아닌 응용 프로그램을 실행하는 로컬 서비스 계정입니다.

2.) 최종 사용자 sudo /bin/su <user>는 서비스 계정에 직접 로그인 할 수없는 감사 추적 요구 사항으로 인해 사용자가 스스로 ssh하고 사용자가되고 응용 프로그램을 관리합니다.

3) 서비스 계정은 유효한 쉘 (이 있어야 /bin/bash하지 /sbin/nologin엔터프라이즈 일정 플랫폼 (에이전트가 로컬 루트로 실행) 할 수 있어야하기 때문에,) su - <user>와이없는 su -s /bin/bash <user>전체 쉘가하는 능력을 원격으로 작업을 실행하는 데 필요한 여러 서버 및 데이터베이스를 포함하는 대규모 일괄 작업


So ...

passwd -l <user>
공개 키 인증이 PAM을 우회하고 직접 로그인을 허용하기 때문에 제약 조건을 충족하지 않습니다.

usermod -s /sbin/nologin <user>
엔터프라이즈 스케줄러를 위반하므로 제한 조건을 충족하지 않습니다.

usermod --lock --expiredate 1970-01-01 <user>
이것은 우리의 승자입니다. 원격 루트는 여전히 수 비활성화 로그인, 아직 su <user>통해 다른 사용자가 수, sudo필요에 따라서 적절하게 스케줄러 기능과 권한 최종 사용자 대상 서비스 계정이 될 수 있습니다.

솔루션 주셔서 감사합니다!


1

완전히 삭제하려면을 사용하십시오 userdel.

계정을 삭제하면 해당 파일의 사용자 ID가 여전히 어딘가에 파일 시스템에서 사용되며 새로운 사용자가 동일한 사용자 ID로 들어 오면 해당 파일의 소유권을 상속받을 위험이 있습니다.

삭제 된 사용자가 소유 한 파일의 소유자를 변경하려고합니다.

나중에 사용자를 다시 추가하려면 해당 행을 /etc/passwd(및 Solaris에서 /etc/shadow)와 같은 임시 파일에 저장하십시오 /etc/passwd_deleted.

다시 추가하면 동일한 사용자 ID와 동일한 비밀번호 (위의 파일 중 하나에서 암호화 됨)를 사용할 수 있습니다.

면책 조항 : UNIX를 스스로 배웠으므로 일시적으로 사용자를 비활성화하는 더 좋은 방법이 있다면 놀라지 않을 것입니다. 사실 나는 당신이 말하는 개인 / 공개 키가 무엇인지조차 모릅니다. 또한 find해당 소유자 사용자 ID로 파일을 찾는 데 사용할 수 있는 명령이 있다고 확신 합니다


1
기본적으로 비밀번호를 사용하지 않고 googleauthed_keys 또는이 eng.cam.ac.uk/help/jpmg/ssh/authorized_keys_howto.html을 읽으 십시오. publuc 키를 해당 파일에 넣고 ssh에 연결하면 자동으로 로그인됩니다 공개 키 중 하나가 현재 개인 키와 일치하는 경우

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.