왜 '!로 sudo로 루트 쉘을 시작할 수 있습니까? '그 그림자 항목에?


9
$cat /etc/passwd |grep -i root
root:x:0:0:root:/root:/bin/bash

$sudo cat /etc/shadow |grep -i root
root:!:17179:0:99999:7:::

섀도 파일의 두 번째 필드에서 !루트 사용자는 로그인 할 수 없지만 왜 루트 사용자로 로그인 할 수 sudo su있습니까?

su root또는 로 루트 사용자에 로그인 할 수없는 이유는 무엇 su -입니까?


1
"섀도 파일의 두 번째 필드에서!는 루트 사용자가 로그인 할 수 없음을 의미합니다 . " 아니요, 그렇지 않습니다. 어디서 들었어?
궤도에서 가벼움 레이스

@LightnessRacesinOrbit, 무슨 뜻인가요?
George Udosen

@George : muru는 그의 답변에서 매뉴얼을 인용하고 자세히 설명했습니다. 설명서를 읽어야합니다!
궤도에서 가벼움 레이스

답변:


15

!에서 shadow항목의 암호화 된 패스워드 필드 수단은 암호가에 대해 인증 수 없음. 보낸 사람 man shadow:

If the password field contains some string that is not a valid
result of crypt(3), for instance ! or *, the user will not be able
to use a unix password to log in (but the user may log in the
system by other means).

매뉴얼 에서 알 수 있듯이 루트로 로그인 할 수 없다는 의미 는 아닙니다 . 루트 계정의 비밀번호를 사용하여 루트로 로그인 할 수 없음을 의미합니다. 계정이 잠겨 있어도 SSH 키를 사용하여 SSH를 통해 루트로 로그인 할 수 있습니다 (예 : SSH를 구성한 경우).

sudo일반적으로 루트가 아닌 비밀번호로 인증 합니다 . 이 중 하나를 설정하여 변경할 수있다 targetpw, rootpw또는 runaspw에서를 sudoers. 이러한 옵션 중 하나를 설정하고 암호가 잠겨있을 때 암호를 사용하려고 하면 실패 합니다.


좋아요, 암호로 sudo를 사용하여 활성 사용자이거나 사용자를 잠글 수 있습니다.
Sinoosh

1
@Sinoosh는 다른 제한이 없다고 가정합니다. 예
muru

4

이제 그에 따라 명령을 살펴 보자.

  1. sudo su:

    • sudosu루트 권한으로 명령 (대체 사용자)을 실행 하므로, /etc/shadowsays 또는 root:!:17179:0:99999:7:::have 명령이 여전히 루트 권한으로 명령을 실행합니다.
  2. su -또는 su root:

    • 이것은 실제로 전환 받는 루트 사용자 로부터 /etc/shadow파일 때문에 작업을 이러한 명령을하지 않습니다 사용하여 로그인 할 수 없습니다. 작동하려면 루트 계정 에 암호를 제공하여 잠금을 해제해야합니다.

요약:

su -0r 은 rootsu root 사용자로 전환되어 존재하지 않으므로 권한이없는 switch 명령 을 실행 하므로이 경우 그룹 에 있으면 이동합니다 . 이 경우 실제로 루트로 로그인하지 않고 루트로 작동하므로 루트로 작동합니다.sudo surootsudo

출처 : 'su-'와 'su root'의 차이점은 무엇입니까?


감사 sudo su합니다. 섀도 파일에 패스 필드가 표시되지 않습니까?
Sinoosh

1
@Sinoosh는 sudo su잘못된 실행하는 방법 sudo sh또는 sudo bash.
Bakuriu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.