sudo 명령을 실행하고 같은 줄에 비밀번호를 지정하십시오.

sudo 명령을 실행하고 같은 줄에 비밀번호를 지정하십시오.

나는 이런 일을하고 싶다 :

sudo -p password rm /a/file

비밀번호와 사용자를 같은 줄에 넣을 수 있나요?

내 sudo 버전은1.8.9p5

답변1

sudo비밀번호를 지정하는 옵션은 없지만 다음과 같이 명령줄에서 인증할 수 있습니다.

echo password | sudo -u root --stdin

그렇지 않으면

echo password | sudo -S

추천sudo 매뉴얼 페이지:

-S,--stdin
표준 오류에 프롬프트를 작성하고 터미널 장치를 사용하는 대신 표준 입력에서 비밀번호를 읽습니다. 비밀번호 뒤에는 개행 문자가 와야 합니다.

그리고

-u사용자,--user= 사용자
기본 대상 사용자(일반적으로 루트)가 아닌 사용자로 명령을 실행합니다. 사용자는 사용자 이름이거나 앞에 "#" 문자가 붙은 숫자 사용자 ID(UID)일 수 있습니다(예: #0은 UID 0을 의미함). 명령을 UID로 실행할 때 많은 쉘에서는 '#'을 백슬래시('\')로 이스케이프해야 합니다. 일부 보안 정책은 UID를 비밀번호 데이터베이스에 나열된 것으로 제한할 수 있습니다. sudoers 정책은 targetpw 옵션이 설정되지 않은 한 비밀번호 데이터베이스에 없는 UID를 허용합니다. 다른 보안 정책에서는 이를 지원하지 않을 수 있습니다.

하지만 sudo오랫동안 개발이 진행되어 왔습니다. 버전 확인:

-V,--version
sudo보안 정책 플러그인 및 I/O 플러그인의 버전 문자열과 함께 버전 문자열을 인쇄합니다 . 호출 사용자가 이미 루트인 경우 이 -V옵션은 빌드 시 구성에 전달된 매개변수를 표시 sudo하고 플러그인은 기본 옵션과 같은 더 자세한 정보를 표시할 수 있습니다.

긴 옵션에 대한 지원이 추가되었습니다.2013년.

인증 외에도 몇 가지 sudo사항이 필요합니다.하다, 명령과 같은. 나는 종종 다음을 수행하여 제대로 작동하는지 확인합니다.

sudo id

이것은 표시되어야합니다뿌리다음과 같은 사용자

uid=0(root) gid=0(root) groups=0(root)

답변2

OP가 이를 원하는 타당한 이유가 있을 수 있지만 일반적으로 이는 나쁜 생각입니다(비밀번호는 ps 등으로 읽을 수 있음). 따라서 저는 보다 안전한 대안을 제안하고 싶습니다.

sudo를 사용하여 비밀번호를 입력하지 않고 일부 명령을 실행하려는 경우 더 나은 해결책은 사용자가 비밀번호 없이 명령을 실행할 수 있도록 허용하는 것입니다.

sudoers 파일을 열고 sudo visudo다음 줄을 추가합니다(분명히 시작 부분의 사용자 이름과 끝 부분의 명령을 바꿉니다).

alice ALL = NOPASSWD: /full/path/to/command

여기에 더 많은 설명이 있습니다:https://askubuntu.com/a/39294

답변3

대부분의 경우 비밀번호를 파이프하는 대신 sudo를 유지하고 싶지 않습니다.자격 증명이 새로 고쳐졌습니다.:

refreshPermissions () {
    local pid="${1}"

    while kill -0 "${pid}" 2> /dev/null; do
        sudo -v
        sleep 10
    done
}

sudo -v
refreshPermissions "$$" &

그래서 만약에주문하다프로그램에 루트 액세스가 필요합니다. 다음을 수행하세요.

sudo [command]

그리고 비밀번호를 묻지 않습니다.

관련 정보