Cygwin / bash의 유사 Sudo


0

sudo 자체가 아니라 sudo 명령이 작동하도록 허용하는 방법이 필요 합니다 .

sudo 줄에는 다음과 같은 추가 인수가 있습니다.

sudo -u user bash -c 'uptime'

위의 링크에서 bash를 사용하면 출력을 얻습니다.

/usr/bin/sudo: line 3: -u: command not found

어쨌든 주위에 있습니까? 아마도 -c 대신 따옴표에서 실행되도록하십시오.

답변:


1

전송 된 명령이 항상 정확하게

sudo -u user command...

그러면 가짜 sudo 스크립트는 처음 두 가지 인수를 버릴 수 있습니다.

#!/bin/bash
shift 2
exec "$@"

그렇지 않으면 약간의 인수 파싱을 수행해야합니다.

#!/bin/bash
while getopts :u: opt
do
  # normally you'd process options and arguments here,
  # but in this case just ignore them
done
shift $((OPTIND-1))  # throw out processed options and arguments
exec "$@"

getopts더 이상 없을 때까지 명령 행 옵션 및 인수를 읽고 리턴합니다. man bash명령 행 인수를 처리하는 방법에 대한 자세한 내용을 보려면 bash (1) ( ) 에서 읽을 수 있습니다 .


회선은 원격으로 전송되며 해당 형식으로되어 있습니다. 그들은에서 실행 사용자는이 경우에 중요하지, 그냥 실행하기 위해 휴식이 필요
마커스 휴즈

알 겠어. 업데이트되었습니다.
Andrew Schulman

0

이것은 내가 babun에서 Ansible을 실행하기 위해 sudo에 사용한 것입니다.

#!/bin/bash
count=0

for var in "$@"
  do
    (( count++ ))
  done

shift $count
exec "$@"

아마도 당신은 $#계산에 사용할 수 있습니다 . # 위치 매개 변수의 수를 10 진수로 확장합니다.
Hastur
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.