명령을 다른 이름으로 복사한다는 것은 무엇을 의미합니까?

명령을 다른 이름으로 복사한다는 것은 무엇을 의미합니까?

'!'에 대한 제한 연산자

ALL에서 "빼기"를 위해 "!" 연산자를 사용하는 것은 일반적으로 효과가 없습니다. 사용자는 원하는 명령을 다른 이름으로 복사한 다음 해당 명령을 실행하여 이 문제를 쉽게 피할 수 있습니다. 예를 들어:

빌 ALL = ALL, !SU, !SHELLS

Bill이 SU 또는 SHELLS에 나열된 명령을 실행하는 것을 실제로 막을 수 있는 방법은 없습니다. 왜냐하면 그는 단순히 명령을 다른 이름으로 복사하거나 편집기 또는 다른 프로그램의 셸 이스케이프를 사용할 수 있기 때문입니다. 따라서 그러한 제한은 기껏해야 권고 사항으로 간주되어야 합니다(그리고 정책에 의해 강화되어야 함).

일반적으로 사용자가 sudo ALL을 사용하는 경우 사용자 사양의 "!" 요소에 관계없이 루트 셸을 제공하는 자체 프로그램을 만드는 것(또는 자체적인 셸 복사본을 만드는 것)을 막을 수 없습니다.

무엇인가요

이 명령을 다른 이름으로 복사하면 됩니다.

의미는? 명령 별명입니까, 아니면 다른 것입니까?

답변1

명령은 일반적으로 (*) 파일이며, 파일은 다른 이름으로 복사될 수 있습니다.

예를 들어

$ cp /bin/ls /tmp/lslsls
$ % /tmp/lslsls -l /tmp/lslsls
-rwxr-xr-x  1 ilkkachu  wheel  187040 Dec  5 20:03 /tmp/lslsls

이제 루트가 아닌 다른 것을 sudo실행하도록 허용된 경우에도 ls계속 실행할 수 lslsls있으며 이제 완전히 동일한 내용을 갖게 됩니다. 원본 파일을 실행 가능(읽을 수 없음)으로만 만드는 것은 일반적으로 동일한 작업을 수행하는 다른 바이너리를 찾을 수 있기 때문에 별 도움이 되지 않습니다. (한번은 실행을 허용하지 않도록 sudo구성된 시스템 을 사용해야 했습니다 . 그러나 실행을 포함하여 다른 모든 것이 작동했기 때문에 그냥 zsh 설치를 고려했습니다.)/bin/sh/bin/bashapt-get

(*쉘 내장 및 함수는 예외입니다.)

매뉴얼 페이지에는 "편집기나 다른 프로그램에서 쉘 탈출" 사용에 대한 언급도 있습니다. 이는 vi 에서 또는 와 같은 명령을 사용하거나 :shell단순히 또는 (적어도 GNU AWK에서는)을 사용하는 것을 의미합니다. 이들 중 어느 것도 sudo에 의해 부과된 제한사항의 영향을 받지 않습니다.:!bashsudo perl -e 'exec "sh"'sudo awk 'BEGIN { system("sh") }'

관련 정보