계정을 비활성화하지 않고 사용자 로그인 비활성화


87

adduser명령을 사용하여 "bogus"라는 사용자를 작성한다고 가정 해 봅시다 . 계정을 비활성화하지 않고이 사용자가 유효한 로그인 옵션이되지 않도록하려면 어떻게해야합니까? 요컨대, 계정을 통해 액세스 할 수 su - bogus있기를 원하지만 일반 로그인 프롬프트를 통해 액세스 할 수는 없습니다.

주변을 검색하면 해당 사용자의 비밀번호를 비활성화해야하지만 passwd -d bogus도움이되지는 않습니다. 사실 암호를 입력하지 않아도 가짜에 로그인 할 수 있기 때문에 상황이 악화되었습니다.

주어진 계정에 대해 정기적 인 로그인을 비활성화하는 방법이 있습니까?

참고 : 분명히하기 위해 gdm과 같은 그래픽 로그인 화면의 메뉴 옵션에서 사용자를 제거하는 방법을 알고 있지만 이러한 방법은 실제로 로그인을 비활성화하지 않고 계정을 숨 깁니다. 텍스트 모드가 포함 된 일반 로그인을 완전히 비활성화하는 방법을 찾고 있습니다.


2
귀하 -d는 비밀번호를 삭제하는 플래그입니다. 그것은 그것을 비활성화하는 것과 다릅니다 (잠금으로 참조, 차드의 답변 참조).
Caleb

1
unix.stackexchange.com/questions/7690/… 또한이 기능 을 완전히 비활성화하고 싶을 수도 있습니다. 이 우분투 질문 질문을 참조하십시오 : askubuntu.com/questions/282806/how-to-enable- 또는 -disable
Simon Woodside

답변:


102
passwd -l user

당신이 원하는 것입니다.

사용자 계정이 잠 깁니다. 그러나 당신은 여전히 ​​할 수 있습니다

su - user

그러나 당신은 su - user루트로해야합니다.

또는 !사용자의 비밀번호 앞에 a 를 붙여서 동일한 작업을 수행 할 수 있습니다 /etc/shadow(이 모든 passwd -l것이 뒤에서 이루어짐). 그리고 passwd -u이것을 취소 할 것입니다.


27
passwd -l옵션을 사용하면 사용자가 다른 인증 토큰 (예 : SSH 키)을 사용하여 로그인 할 수 있음을 알아야합니다.
pl1nk

2
이것을 피하는 방법에 대한 권장 솔루션에 대한 아래 답변을 참조하십시오 .
Jörg Gottschlich

2
우분투 16.04에서는 작동하지 않습니다. 만료 날짜가 변경되어 더 이상 su-user를 허용하지 않습니다.
멀린

1
--disabled-password옵션 과 동일 adduser합니까? 없는 사용자를 작성 하는가 --disabled-password다음 실행 passwd -l실행하는 것과 같은 결과를 달성 해당 사용자에 adduser--disabled-password처음에를?
haridsv

39

의 맨 페이지에 passwd(1)대해 말합니다 passwd -l:

이렇게해도 계정이 비활성화되지는 않습니다. 사용자는 여전히 다른 인증 토큰 (예 : SSH 키)을 사용하여 로그인 할 수 있습니다. 계정을 비활성화하려면 관리자는 usermod --expiredate 1 (계정 만료 날짜를 1970 년 1 월 2 일로 설정)을 사용해야합니다.

그래서

usermod --expiredate 1 [LOGIN]

사용자가 더 이상 사용할 수없는 계정을 비활성화하는 올바른 방법 인 것 같습니다 (예 : 회사를 떠났기 때문에).


4
CentOs 6.3에서 사용자 연결을 passwd -l차단 하지만 그렇지 않습니다! sshusermod --expiredate 1
fduff

1
CentOS 7.4에서는 passwd -l더 이상 ssh사용자의 연결을 usermod --expiredate 1 user차단하지 않으며 차단합니다. 당 man passwd당신은 또한 사용할 수있는 chage -E 0 user사용자를 차단. 신청 후 usermod또는 chage할 수 있음sudo su user
user12345

usermod --expiredate 0 [LOGIN]작동하지만 만료 날짜는 1970 년 1 월 1 일로 설정하고 1은 1970 년 1 월 2 일로 설정합니다.
slm

"만료가없는 계정 또는 1970 년 1 월 1 일의 만료로 해석되므로 값 0을 사용하면 안됩니다."
요하네스

28

사용자가 로그인 할 수 없도록하는 두 가지 방법이 있습니다.

  1. 당신은 편집하여 사용자를 잠글 수 있습니다 /etc/passwd
  2. 스위치로 passwd명령을 직접 발행하여-l

두 번째 경우 사용자는 다른 인증 토큰 (예 : SSH 키)을 사용하여 로그인 할 수 있습니다.

방법 # 1

  1. nologin이있는 위치를 찾으십시오. / bin / nologin 또는 / bin / sbin / nologin
  2. 터미널을 열고 루트로 로그인하십시오
  3. 유형 vi /etc/passwd

이제 passwd파일을 눌러 파일 Ins을 편집합니다.

nologin옵션으로 아래 행을 변경하십시오 ( /bin/bash사용자가 로그인 할 수 있음을 의미).

root:x:0:0:root:/root:/bin/bash

이에. nologin사용자가 로그인 할 수 없음을 의미합니다.

root:x:0:0:root:/root:/bin/nologin

(또는 / bin / sbin / nologin 사용)

  1. vi를 닫습니다 Esc :wq

방법 # 2

사용자를 잠 그려면 passwd -l username

사용자를 잠금 해제하려면 passwd -u username


1
우분투 14.04 시스템에서 /usr/sbin/nologin대신에 찾았습니다 /bin/nologin.
Dennis Williamson

7

/etc/passwd파일 을 약간 변경 해야하는 매우 쉬운 작업 입니다.

단순히 당신은 일반적으로 디폴트로 쉘을 변경해야 /bin/bash즉이 쉘로 변경하여 로그인 할 수 있습니다 /bin/nologin또는 /bin/false. 구식 /bin/nologin이므로 변경하는 것이 좋습니다 /bin/false.


4

/bin/false쉘로 설정/etc/passwd


18
쉘을로 설정하면 /bin/falsesu를 사용하여 해당 사용자로 작동하지 않습니다. 또한을 사용 /bin/false하면 오류가 발생하지 않았으며 잘못되었다는 다른 힌트도 생성되지 않습니다. su가 사용자로 쉘을 얻는 데 사용되지 않도록하려는 경우 쉘을 변경 /sbin/nologin하여 오류를 생성해야합니다.
HedgeMage

8
아니,이 su여전히 사용자를 위해 가능한 /bin/false포탄 passwd- 단지 옵션을 사용 --shell: su - --shell /bin/sh bogus.
Matej Kovac

1
/usr/sbin/nologin와 같은 효과가 /bin/false있지만 유용한 정보 메시지도 표시합니다.
Rörd

0

passwd -l user명령을 사용하여 사용자를 잠그면 파일 !!에 " "가 표시 /etc/shadow됩니다. 그러나 여전히 루트 계정에서 사용자 셸로 전환 할 수는 있지만 다른 일반 사용자 로그인 셸에서는 사용자 계정으로 전환 할 수 없습니다.

우리는 또한 제공하여 계정을 비활성화 할 수 있습니다 /bin/nologin/bin/false에에 /etc/passwd파일. 따라서 사용자가 로그인하지 못할 수 있습니다.


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