답변:
에 따른 올바른 방법 usermod(8)
은 다음과 같습니다.
usermod --lock --expiredate 1970-01-02 <username>
(실제로 인수 --expiredate
는 형식에서 현재 날짜 이전의 날짜 일 수 있습니다 YYYY-MM-DD
.)
설명:
--lock
사용자의 비밀번호를 잠급니다. 그러나 다른 방법 (예 : 공개 키)으로 로그인하는 것은 여전히 가능합니다.
--expiredate YYYY-MM-DD
지정된 날짜에 계정을 비활성화합니다. man shadow 5
1970-01-01 에 따르면 모호한 값이므로 사용해서는 안됩니다.
내 컴퓨터에서 이것을 테스트했습니다. 이 명령을 실행 한 후에는 비밀번호 또는 공개 키로 로그인 할 수 없습니다.
나중에 계정을 다시 활성화하려면 다음을 실행하십시오.
usermod --unlock --expiredate '' <username>
usermod --unlock --expiredate '' username
그것을 할 것입니다.
usermod
말 :Note: if you wish to lock the account (not only access with a password), you should also set the EXPIRE_DATE to 1.
--expiredate 1
충분하지 않은가?
sudo su username
다른 계정을 사용하여 작동하는 것 같습니다.
비밀번호를 잠그고 쉘을로 변경하십시오 /bin/nologin
.
sudo usermod --lock --shell /bin/nologin username
(또는 더 간결하게, sudo usermod -L -s /bin/nologin username
.)
ssh username@hostname /bin/bash
기본 쉘에 관계없이 사용자에게 bash 프롬프트를 제공합니다.
sudo chsh -s /bin/nologin
/etc/passwd
직접 편집 하는 것보다 낫습니다 . 또한 일부 시스템에서는 /sbin/nologin
입니다.
여기 또 다른 간단한 방법이 있습니다. 사용자 계정 만료를 설정할 수 있습니다. 이렇게하면 계정의 비밀번호 기반 및 ssh 키 기반 로그인이 모두 방지되지만 비밀번호 는 건드리지 않습니다 .
계정을 잠 그려면
# chage -E 0 username
시스템에서 사용자 계정 'username'이 잠 깁니다. 사용자 계정을 다시 활성화하려면 다음을 수행하십시오.
계정을 잠금 해제하려면
# chage -E -1 username
사용자 계정 'username'은 시스템 에서 이전 과 동일한 비밀번호 로 다시 활성화됩니다 . 'chage'바이너리는 Red Hat Linux 의 shadow-utils 패키지 또는 Debian Linux 의 passwd 패키지의 일부입니다.
레 거트의 답변에 대해 언급 할 충분한 담당자가 없지만이 답변이 다른 사용 사례에 도움이되었다는 것을 공유하고 싶습니다.
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
필요에 따라서 적절하게 스케줄러 기능과 권한 최종 사용자 대상 서비스 계정이 될 수 있습니다.
솔루션 주셔서 감사합니다!
완전히 삭제하려면을 사용하십시오 userdel
.
계정을 삭제하면 해당 파일의 사용자 ID가 여전히 어딘가에 파일 시스템에서 사용되며 새로운 사용자가 동일한 사용자 ID로 들어 오면 해당 파일의 소유권을 상속받을 위험이 있습니다.
삭제 된 사용자가 소유 한 파일의 소유자를 변경하려고합니다.
나중에 사용자를 다시 추가하려면 해당 행을 /etc/passwd
(및 Solaris에서 /etc/shadow
)와 같은 임시 파일에 저장하십시오 /etc/passwd_deleted
.
다시 추가하면 동일한 사용자 ID와 동일한 비밀번호 (위의 파일 중 하나에서 암호화 됨)를 사용할 수 있습니다.
면책 조항 : UNIX를 스스로 배웠으므로 일시적으로 사용자를 비활성화하는 더 좋은 방법이 있다면 놀라지 않을 것입니다. 사실 나는 당신이 말하는 개인 / 공개 키가 무엇인지조차 모릅니다. 또한 find
해당 소유자 사용자 ID로 파일을 찾는 데 사용할 수 있는 명령이 있다고 확신 합니다
ssh_config를 통해 시도한 사람이 있습니까? 아마도 이것이 http://www.techrepublic.com/blog/opensource/set-up-user-accounts-quickly-and-securely/86에 도움이 될 수 있습니다
또한 모든 로그인이 공개 키를 사용하도록 PasswordAuthentication도 no로 설정되어 있는지 확인하십시오.