래퍼와 함께 sudo를 사용하는 "표준" 방법이 있나요?

래퍼와 함께 sudo를 사용하는 "표준" 방법이 있나요?

예를 들어, my 의 출력을 얻으려면 를 dmesg사용해야 합니다 sudo dmesg.

이제 출력을 모니터링하고 싶다고 가정해 보겠습니다 . watch또는 을 사용하여 watch -n 1 sudo dmesg입력 할 수 있습니다 sudo watch -n 1 dmesg. 그들은 모두 같은 것을 출력합니다.

내 질문은 다음과 같습니다

  1. sudo다른 순서로 사용하면 다른 결과가 나오는 예가 있습니까 ?

  2. 이러한 상황에 대한 "표준" 또는 공식 표기법이 있습니까? 전체 래퍼 앞에 래핑 해야 합니까 , 아니면 높은 권한이 필요한 명령 sudo에 넣어야 합니까 ?sudo

답변1

파이프가 아닌 래퍼를 사용하고 있습니다. 래퍼는 해당 권한을 전달합니다.

이 경우 순전히 보안상의 이유로 다음을 사용하십시오.

sudo watch dmesg

바꾸다

watch sudo dmesg

이렇게 하면 sudo인증을 한 번만 실행하면 됩니다. 그렇지 않으면 sudo매초마다 한 번씩 인증을 지속적으로 새로 고칩니다 . 귀하가 자리를 떠났을 때 누군가 나타나서 귀하의 명령을 받으면 해당 명령을 Enter 키를 누른 후 시간이 얼마나 지났는지에 관계없이 즉시 다른 작업을 ^C수행할 수 있습니다 .sudo

일반적으로 권한 상승이 필요한 모든 명령에는 다음이 필요합니다 sudo.

sudo command1 | sudo command2

래퍼의 경우 프로세스를 승격하면 해당 프로세스에서 생성된 모든 새 프로세스가 승격됩니다. 유일한 예외는 루트가 아닌 다른 사용자로 자동으로 실행된다는 것입니다. 예를 들어 자체 사용자로 실행되는 서비스입니다.

여러 명령이 서로 파이프로 연결되어 있고 모두 권한 상승이 필요한 경우 명령이 상승된 bash 하위 셸에 래핑되어 있는 것을 보는 것이 일반적입니다.

sudo bash -c "command1 | command2"

관련 정보