나에게 다음과 같은 일이 일어났습니다.
$ sudo su - superman
Sorry, user clarkkent is not allowed to execute '/bin/su - superman' as root in krypton101.
그러나 다음은 정상적으로 작동합니다.
$ sudo su superman
사용자가 어떤 작업을 하도록 허용하지만 수행하지 않도록 하는 것이 언제 sudo su
유용한가요 sudo su -
? 이 설정을 어떻게 설정/해제하나요? 나는 읽었다이 페이지그러나 이것은 도움이 되지 않습니다.
자세한 내용은:
- 저는 관리자가 아닙니다.
- 액세스할 수 없습니다.
/etc/sudoers
- 배포판은 Centos 7입니다.
답변1
via 에서 허용하는 명령을 지정할 때 sudo
기본적으로 두 가지 간단한 옵션이 있습니다.
- 특정 명령을 허용어느매개변수 또는
- 특정 명령을 허용정확하게 지정하세요매개변수 세트만 해당됩니다.
따라서 파일에 두 개의 항목이 허용 sudo su - superman
되고 필수입니다 . 관리자가 이 중 하나만 제공한 것 같습니다.sudo su superman
sudoers
실제로 파일 sudoers
구문에서는 관리자가 와일드카드 또는 정규식 제한 옵션을 사용하여 특정 명령을 지정할 수 없습니다. 이러한 사양은 남용하기가 너무 쉽기 때문입니다. 앤드류가 말했듯이,죄송합니다보다 더 안전방법은 여기에 있습니다.
하지만 원래 사용자가 실행을 허용 sudo su superman
해야 한다는 점에 유의하세요.sudo
su superman
루트 사용자로. 실제로 ID 전환은 한 번이 아닌 두 번 이루어집니다. 먼저 원래 사용자에서 루트 by 로 sudo
, 그런 다음 루트에서 superman
by 로 전환됩니다 su
. 파일의 사양은 다음과 같습니다 sudoers
.
original_user ALL=(root) su superman
반면에 sudoers
사용자가 명령 사용법에 너무 집중하지 않는 경우 구문은 사용자가 특정 사용자로서 모든 명령을 실행할 수 있도록 하는 더 쉬운 방법을 제공합니다 su
.
sudoers 사양이 다음과 같이 작성된 경우:
original_user ALL=(superman) ALL
그런 다음 사용자는 sudo -u superman -s
다음을 사용하여 가까운(그러나 부정확할 수 있는) 동등한 결과를 얻을 수 있습니다.sudo su superman
그리고 sudo -u superman -i
도달하다정밀한.sudo su - superman
왜 사람들은 생성자를 고수하는 대신 그것을 사용하지 않습니까 sudo su -
?!의 이전 버전 -i
에는 이 옵션이 없기 때문입니다.sudo
2000년 이후에 나왔기 때문에 지금은 쓸모가 없는 이 sudo su -
구조를 여전히 권장하는 오래된 문헌이 많이 있습니다. 물론 예전 유닉스 사용자나 관리자들은 머슬메모리를 갖고 있을 수도 있기 때문에 아무 생각 없이 사용하기도 한다.
답변2
이 질문에 답하기: 사용자가 sudo su 대신 sudo su를 수행하도록 허용하는 것이 언제 유용합니까?
su
하이픈 뒤와 앞사용자 이름현재 사용자가 사용자 이름의 환경을 상속받을 수 있도록 su에 지시합니다. 을 텐데크라켄의환경에는 실행할 수 있도록 필요한 환경 변수가 설정되어 있습니다.슈퍼맨, 실행할 필요가 없습니다 sudo su - superman
.
이를 허용하지 않는 정당한 "이유"는 시스템 관리자가 이것이 보안 위험을 초래한다고 sudo su - superman
믿기 때문일 수 있습니다 . sudo su - superman
이는 sudo su -
사용자 이름을 지정하지 않으면 다음으로 로그인하라는 메시지가 표시되기 때문입니다.뿌리사용자 여러분, 이것은 아마도 시스템 관리자가 피하려고 하는 것일 것입니다. 실제로 하이픈을 추가하면 이러한 위험이 발생하는지 확실하지 않지만 보안에 있어서는 그럴 것 같습니다.죄송합니다보다 더 안전.
이 설정을 어떻게 설정/해제하나요?
구성은 /etc/sudoers
파일에 정의됩니다.