사용자가 로그인하지 못하고 Linux에서 "su-user"를 허용하는 방법은 무엇입니까?


93

사용자가 " su - user " 를 사용하여 로그인하도록 허용 하지만 SSH를 사용하여 로그인하지 못하게하려면 어떻게합니까?

쉘을 설정하려고 시도했지만 시도 할 /bin/falsesu작동하지 않습니다.

로만 로그인을 허용하는 몇 가지 방법이 su있습니까?

SSH가가 AllowUser는 길입니까? (가는 길이면 어떻게해야합니까)

답변:


113

로그인이 허용 되지 않는 사용자 / 그룹이 몇 개인 경우 ssh 또는 DenyUsers / DenyGroups 를 통해 로그인 할 수있는 사용자 / 그룹이 몇 개인 경우 AllowUsers / AllowGroups를 사용할 수 있습니다 . 이것은 ssh를 통한 로그인 만 제한하며 다른 로그인 방법 (console, ftp, ...)도 여전히 가능합니다. 대부분의 ssh 설치를 위해이 옵션을 / etc / ssh / sshd_config 파일에 추가해야 합니다.

로그인 쉘을 / bin / false 로 설정 한 경우 사용할 수 있습니다 su -s /bin/bash user( / bin / bash 를 원하는 쉘로 대체 )


모두에게 감사합니다. 나는 내 질문에 2 + 이상 공짜를 기대하지 않았다 :) 나는 "su -s ..." 를 많이 좋아하고 콘솔 / ftp는 좋은 지적이다. 나는 "su -s"와 같은 것을 실제로 겪었다.
NoozNooz42

3
su-s 트릭은 금입니다. 아파치, 아무도 등의 권한을 테스트하는 데 필요한 시스템 계정에 항상 사용합니다. 일반적으로 su-user -s / bin / bash를 수행합니다. 선택적 인수-사용자가 사용자가 직접 로그인했을 것으로 예상되는 환경과 유사한 환경을 제공하는 데 사용될 수 있습니다.
dmourati

2
환경 변수 (예 : / etc / profile)를로드해야하는 경우 추가 대시를 전달하면 다음과 같이됩니다.su - -s /bin/bash user
Leons

13

여전히 su가 작동 하려면 su를 임시 쉘로 사용 sudo -u [username]하거나 전달할 수 있습니다 -s /bin/bash. 에 쉘이 없으면 둘 다 동일하게 수행됩니다 /etc/passwd.


7

계정에 비밀번호가없는 경우 ( passwd -d username ) 대화식으로 로그인 할 수 없습니다 (콘솔, SSH 등). 그것들이 유효한 쉘을 가지고 있다면, su 는 여전히 작동합니다. "대화식으로"참고하십시오. 누군가 계정에 SSH 키 쌍을 설정하기로 결정하면 작동합니다!


su에 유효한 쉘이 있어야합니까? 다른 사용자에게 소송을 제기 한 후에도 여전히 동일한 원본 쉘에 있다고 확신합니다 ... 실제로 다른 사용자로 로그인하지 않습니다 ... 그래서 쉘을 / dev / null로 설정하면 작동 할 수 있습니다 또한.
Brian Postow

그러나 여전히 유효한 쉘이 필요합니다 : [root @ localhost ~] # su daemon이 계정은 현재 사용할 수 없습니다. [root @ localhost ~] # su-daemon이 계정은 현재 사용할 수 없습니다. (RHEL 시스템, 데몬의 쉘은 / sbin / nologin입니다)
astrostl 2016 년

3

sshd_config에서 줄을 추가하십시오 DenyUser [username]

이렇게해도 사용자가 콘솔을 통해 로그인하는 것을 막을 수는 없습니다.


1
DenyUsers's'와 함께 있어야합니다 .
David G

2

위에서 언급 한 것 (사용자 비밀번호 비활성화 및 / 또는 설정 안함) 외에도 pam_access 모듈 (pam_access 및 access.conf의 man page 조회)을 사용하여 로그인 액세스를 제어 할 수 있습니다.


1

다른 사람들이 말했듯이;

DenyUser username또는 DenyGroup groupname으로는 sshd_configssh를 통해 키 쌍 / 암호 로그인을 방지합니다.

비록 일반적으로 AllowGroup ssh그 라인을 따라 비슷한 것을 수행하고 해당 그룹에 ssh 액세스가 필요한 사람들을 명시 적으로 추가합니다.

그런 다음 다른 사람의 말대로 할 수 있습니다 passwd -d username. 사용자 암호를 비워서 콘솔이나 다른 방법으로 로그인 할 수 없습니다. 또는 passwd -l username계정을 '잠그는' 것이 좋습니다 . ssh는 키를 사용하더라도 잠긴 계정에 대한 액세스를 거부 할 수는 있지만 긍정적이지 않습니다.


1
실제로 ssh를 사용하면 계정 비밀번호가 잠겨 있어도 키 인증을 사용하여 로그인 할 수 있습니다.
Richard Holloway

1

의견에서 언급했듯이 여전히 유효하지 않은 쉘을 가진 계정으로 소송을 제기 할 수 있다고 생각합니다. 따라서 사용자의 쉘을 / dev / null로 설정하거나 bin의 쉘이 무엇이든간에 여전히 해당 사용자에게 su 할 수 있어야하지만 어떤 식 으로든 로그인하려고하면 다시 종료됩니다 ...


1

!를 추가하여 / etc / shadow를 편집하십시오. 비밀번호 해시의 시작 부분까지.

username:!<hash>:#####:#:#####:#:::

새 설치를 보호 할 때 이것은 sudo를 설치 한 후 가장 먼저하는 일이므로 아무도 루트 사용자를 사용하여 시스템에 로그인하거나 ssh를 사용할 수 없으므로 sudo 사용자는 여전히 루트 사용자로 실행할 수 있습니다.



0

루트 계정에서 사용자를 su하고 다른 모든 액세스를 비활성화한다고 가정합니다.

이것을 사용하십시오 (루트로 실행) :

usermod -e 1 -L user

이렇게하면 다른 많은 답변에서 알 수 있듯이 비밀번호 로그인이 비활성화 되지만 계정도 만료됩니다 . SSH 키 등으로 만료 된 계정에 로그인 할 수 없습니다. su user계정이 만료되었다는 알림이 표시되지만 여전히을 (를 ) 수행 할 수 있습니다 .


0

어떤 메커니즘이 가장 적합한 지 아는 것은 요구 사항에 따라 다릅니다. 요구 사항을 알고 있으면 적절한 메커니즘을 선택할 수 있습니다. 위의 모든 답변은 일부 요구 사항에 유효합니다.

SSH 액세스 만 제한 하시겠습니까? 메일 또는 ssh 메소드에 액세스해야합니까? 루트에서만 액세스 할 수 있습니까?

su - userroot 이외의 사용자로 실행되는 경우 사용자의 비밀번호가 필요합니다. 그러나 sudo -u user -i사용자의 비밀번호는 필요하지 않습니다.

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