su world가 왜 실행 가능한가?


20

여러 사용자가 원격으로 로그인 한 헤드리스 서버가 있습니다. 다른 사용자는 sudoers 파일에 없으므로 root를 통해 루트를 얻을 수 없습니다 sudo. 그러나 권한에 대한 권한 su-rwsr-xr-x있기 때문에 루트 암호를 무차별 적으로 시도하는 것을 막을 수는 없습니다.

사용자가 루트 암호를 알고 있으면 어쨌든 시스템을 손상시킬 수 있다고 주장 할 수는 있지만 이것이 사실이라고 생각하지 않습니다. OpenSSH는 PermitRootLogin no및 로 구성되며 PasswordAuthentication no다른 사용자는 서버에 실제로 액세스 할 수 없습니다. 내가 알 수있는 한, 세계 실행 권한 /usr/bin/su은 사용자가 내 서버에서 루트를 얻으려고 시도하는 유일한 길입니다.

그것이 유용하지 않다는 점에서 나에게 수수께끼가되는 것은 무엇입니까? su필요하지 않고 직접 실행할 수 sudo su있지만 불편한 것은 아닙니다.

내가 뭔가를 간과하고 있습니까? su역사적인 이유로 세상 은 그곳에서 허가를 받습니까? 아직 발생하지 않은 해당 권한을 제거하는 데 단점이 있습니까?


9
"이것은 sudo su를 수행 할 필요없이 직접 su를 실행할 수있게 해주지 만 불편한 것은 아니다." -옵션이 sudo설치 되지 않은 시스템은 어떻습니까? 나는 그것이 매우 큰 불편이라고 말하고 싶다;)
marcelm

1
항상 / bin / su에 대한 액세스를 제한 할 수 있지만 / usr / bin / pkexec에 대해서도 동일한 작업을 수행해야합니다.
jpa

6
이 질문의 동기를 이해하지 못하는 것 같습니다. su가 왜 월드 실행 파일이어야하는지 궁금해하는 것 같지만 대안의 요점은 무엇입니까? 즉, su가 루트 (?)로만 실행 가능하다면 무엇을 사용할 수 있다고 생각 했습니까?
David Z

1
@DavidZ 사실, 그것은 루트에 실제로 유용합니다! 사용자를 빠르게 전환 할 수 있습니다.
발은

1
@val 네, 맞습니다. 루트가 su를 사용할 수 있다는 사실은 의심의 여지가 없습니다. (다시 읽었을 때, 나의 이전 의견이 어떻게 다른 것을 제안하는지 알 수 있지만, 그것은 내가 의도 한 것이 아닙니다.) 나는 그들이이 질문을하기 전에 Altay_H가 이것에 대해 어떻게 생각했는지 궁금합니다.
David Z

답변:


39

ilkkachu의 대답 에서 누락 된 한 가지 점은 루트로 올리는 것이 하나의 특정 용도라는 것입니다 su. su의 일반적인 목적은 다른 사용자의 로그인 계정으로 새 쉘을 여는 것입니다. 다른 사용자 일 수도 있고 root가장 자주있을 수도 있지만 로컬 시스템이 인증 할 수있는 모든 ID su를 가정 하는 데 사용될 수 있습니다 .

예를 들어, user로 로그인 한 상태에서 보고되었지만 jim문제 mike를 재현 할 수없는 문제를 조사하고 싶은 경우로 로그인 하여 문제를 mike일으키는 명령을 실행할 수 있습니다.

13:27:20 /home/jim> su -l mike
Password:(I type mike's password (or have him type it) and press Enter)
13:27:22 /home/mike> id
uid=1004(mike) gid=1004(mike) groups=1004(mike)
13:27:25 /home/mike> exit  # this leaves mike's login shell and returns to jim's
13:27:29 /home/jim> id
uid=1001(jim) gid=1001(jim) groups=1001(jim),0(wheel),5(operator),14(ftp),920(vboxusers)

-l옵션을 사용하면 su( man페이지 당) 전체 로그인을 시뮬레이션합니다 .

그러나 위 mike의 비밀번호에 대한 지식이 필요합니다 . sudo액세스 권한이 있으면 mike비밀번호 없이도 로그인 할 수 있습니다 .

13:27:37 /home/jim> sudo su -l mike
Password:(I type my own password, because this is sudo asking)
13:27:41 /home/mike>

요약하면, su실행 파일 에 대한 권한 이 표시되는 이유 su는 시스템의 모든 사용자가 사용할 수있는 범용 도구 이기 때문 입니다 .


1
그것은 많은 의미가 있습니다. 나는 사용 습관을 가지고 있기 때문에 그 이상으로 사용될 수있는 sudo것을 잊어 버렸습니다 . 그리고 sudoer가 아니라면 이것은 ssh 키를 변경하지 않고 사용자를 전환하는 유일한 방법 일 것입니다. 유스 케이스의 경우 이것이 권한을 제거하는 또 다른 이유이지만 월드 실행 권한이 기본적으로 설정되는 이유를 이해합니다. 감사! susudo -s
Altay_H

1
또 다른 요점은 sudo또한 다른 사용자의 신원을 추정하는 데 사용될 수 있다는 것 root입니다. 그것은 단순히 그 신원의 암호가 필요 없는 다른 신원 가정하는 것을 포함하여 누가 누가 무엇을 할 수 있는지에 대한 세밀한 통제를 허용 합니다.
chepner

혼동의 일부는 사람들 su이 "슈퍼 사용자"를 의미 한다고 생각 합니다. "슈퍼 사용자"는 사용자가 지정되지 않은 경우 (또는 루트가 명시 적으로 지정되어 있음) "사용자 전환"도 나타냅니다. su따라서이 두 번째 사용은 쉽게 잊혀집니다.
Monty Harder

20

역사적으로 (GNU가 아닌 유니 세스에서는) "wheel"이라는 그룹에 속해 있다면 적어도 수동으로 확인되지 않았습니다 su. GNU 버전은 su당시의 액세스 제어에 대한 RMS의 이념으로 인해이 기능을 재현하지 못했습니다.

Why GNU `su' does not support the `wheel' group
===============================================

   (This section is by Richard Stallman.)

   Sometimes a few of the users try to hold total power over all the
rest.  For example, in 1984, a few users at the MIT AI lab decided to
seize power by changing the operator password on the Twenex system and
keeping it secret from everyone else.  (I was able to thwart this coup
and give power back to the users by patching the kernel, but I wouldn't
know how to do that in Unix.)

   However, occasionally the rulers do tell someone.  Under the usual
`su' mechanism, once someone learns the root password who sympathizes
with the ordinary users, he or she can tell the rest.  The "wheel
group" feature would make this impossible, and thus cement the power of
the rulers.

   I'm on the side of the masses, not that of the rulers.  If you are
used to supporting the bosses and sysadmins in whatever they do, you
might find this idea strange at first.

Googling "wheel group rms"또는 이와 유사한 방법으로 문제에 대해 더 많이 찾을 수 있습니다.


3
이것이 유일한 정답입니다. 설정은 의도적이며 역사적이며 이것이 바로 그 이유입니다. 모든 기술적 인 blabla는 바로 blabla입니다. 현대 유닉스에서 "휠"그룹을 절대적으로 다시 소개 할 수 있습니다.

10

그러나 권한에 대한 권한 su-rwsr-xr-x있기 때문에 루트 암호를 무차별 적으로 시도하는 것을 막을 수는 없습니다.

예. 일반적인 Linux 시스템을 가정 할 때, pam_unix.so모듈은 인증 시도 실패를 ~ 2 초 지연 시키지만, 동시 시도를 중지 할 것이 없다고 생각합니다.

실패한 시도는 물론 기록됩니다 :

Aug 16 22:52:33 somehost su[17387]: FAILED su for root by ilkkachu

비밀번호를 모니터링하는 시스템이있는 경우 무차별 강제 비밀번호가 로그에 눈에 띄게 표시됩니다. 신뢰할 수없는 로컬 사용자가 있다면 아마도해야 할 것입니다. 신뢰할 수없는 로컬 사용자는 로컬 전용 권한 에스컬레이션 익스플로잇을 사용하려고 시도 할 수 있으며 원격 권한 에스컬레이션보다 훨씬 일반적입니다.

그것이 유용하지 않다는 점에서 나에게 수수께끼가되는 것은 무엇입니까?

물론 root암호를 알고 있다면 유용 합니다.

su필요하지 않고 직접 실행할 수 sudo su있지만 불편한 것은 아닙니다.

sudo su다소 중복됩니다. 다른 사용자로 프로그램을 실행할 수 있도록하기 위해 두 개의 프로그램을 사용할 필요가 없습니다. 하나는 충분합니다. 쉘을 실행 하려면 sudo -i또는 sudo -s(또는 sudo /bin/bash등)을 사용하십시오.

내가 뭔가를 내려다보고 있습니까? 역사적인 이유 때문에 세계가 su에 대한 허가를 집행합니까?

위 참조. 글쎄, 모든 시스템이 sudo대안으로 사용되는 것은 아니며, 당신이 그 역사적인 것을 고려하는지 확실하지 않습니다.

아직 발생하지 않은 해당 권한을 제거하는 데 단점이 있습니까?

내가 아는 한 실제로는 아닙니다. 내가 생각하는 일부 시스템이 한 su특정 그룹의 구성원 만 ( "그래서 설정 wheel")을 실행할 수 있습니다. 원하는 sudo경우 ( chown root.sudousers /usr/bin/sudo && chmod 4710 /usr/bin/sudo) 와 동일하게 수행 할 수 있습니다 .

또는 필요하지 않은 프로그램 중 하나 또는 둘 다를 제거 할 수 있습니다. 데비안에서는 패키지 su와 함께 제공 login되므로 패키지 전체를 제거하는 것은 좋지 않습니다. (그리고 페어링 login하고 su함께하는 것은 다소 역사적인 것처럼 보입니다.)


1
BSD 시스템을 사용하려면 사용자가 wheel그룹에 있어야합니다 su. 전혀 제공되지 않는 일부 BSD 시스템 (OpenBSD에서만 말할 수 있음)이 있습니다 sudo(타사 패키지입니다). OpenBSD는 doas의 기본 사항을 다시 구현 sudo하지만 새로운 시스템을 설치할 때 기본적으로 비활성화되어 있습니다.
Kusalananda

@Kusalananda 당신은 뿌리 wheel를 내려면 에만 있어야 su합니다. 그룹 su의 구성원 자격에 관계없이 모든 계정은 암호가있는 루트가 아닌 모든 계정에 연결할 수 있습니다 wheel.
Jim L.

'sudo su-'를 실행하여 사용자 계정의 오염 된 환경없이 루트 루트가 전체 루트 로그인인지 확인합니다. RHEL의 기본 sudoers에는 실행 가능한 많은 환경 변수 (예 : PS1)가 포함되어 있습니다.
jsbillings

@jsbillings, 흠, 알았어. 않습니다 su다음 환경을 취소? 데비안에서는 그렇게하지 않는 것 같습니다 ...
ilkkachu

"su-"는 내가 아는 모든 Linux에서 작동합니다. 대시를 조심하십시오.
jsbillings

7

이미 좋은 답변이 있지만 게시물에 언급되지 않은 부분이 있습니다.

내가 알 수있는 한, / usr / bin / su에 대한 세계 실행 권한은 사용자가 내 서버에서 루트를 얻으려고 시도하는 유일한 길입니다.

그것은 위험한 가정입니다. 루트에 대해 좋은 암호를 설정했다면, 대부분의 경우 커널이나 setuid 바이너리의 버그를 이용하여 권한 상승이 성공할 가능성이 훨씬 높습니다 (물론 setuid를 제거 할 수도 있습니다) 그에서 비트,하지만 passwdsetuid이고 당신은 높은 보안하려는 경우에도 사용자에게 그것을 제공하고 그들에게 자신의 암호를 변경할 수있는 옵션을 부정하는 것은) 그와 호환되지 않습니다해야합니다.


1

su는 모두 실행 가능해야 모든 사람이 실행할 수 있습니다. 많은 시스템에서 암호를 제공하여 다른 사용자로 변경하는 데 사용할 수 있습니다.

누군가가 루트 비밀번호를 무차별 공격하는 것에 대해 우려하는 경우 비활성화 할 수 있습니다. (해당 비밀번호가 일치하지 않도록 해시를 무효화하십시오)

나는 합의에 대해 알지 못하지만 자체적으로 보안 문제에 직접 루트로 로그인 할 수 있다고 생각합니다.


-2

다른 답변은 "su"를 사용하면 root 이외의 계정으로 로그인 할 수 있습니다.

"sudo su"에 대한 하나의 메모. 이를 통해 실제로 루트 암호를 몰라도 루트 계정에 로그인 할 수 있습니다. sudo를 실행하는 계정의 비밀번호를 알고 있어야하며 sudoers 파일에 해당 계정이 있어야합니다.


3
즉 여부에 달려 sudoers있다 targetpw또는 rootpw세트.
muru

1
이것은 su모두 실행 가능한 것과 관련이 없습니다 .
Kusalananda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.