AnsibleをCygWinで使っていた特に、何故かsudoが無いぞ。と怒られました。
そんな馬鹿なとリモートサーバを覗いてみるも、そもそもVagrant使っている段階でsudoないと使えないし。
っと小一時間プレイブックをこねくり回していたのですが、結果から言うとCygWinにsudoがないのが原因でした。
そもそもCygWinにパーミッションの概念がどこまであるのか疑問ですが、ググるとみんな苦労しているようで、解決法も様々あるようです。
自分が試したのは以下のサイトにあるやり方です。
Cygwin で sudo 的コマンドを使うための設定
/bin/sudoというファイルを作成し、以下の内容を張り付け、実行権限を付与します。
#!/bin/sh
function usage_exit() {
    cat << EOF >&2
Usage: $(basename $0) command
       $(basename $0) -e file
       $(basename $0) -v
EOF
    exit 1
}
edit_flg=0
while getopts :veh opt
do
    case $opt in
        v)
            exit 0
            ;;
        e)
            edit_flg=1
            ;;
        h)
            usage_exit
            ;;
        \?)
            usage_exit
            ;;
    esac
done
shift $(($OPTIND - 1))
if [ $edit_flg -eq 1 ]; then
    if [ $# -ne 1 ]; then
        usage_exit
    fi
    sudoedit "$1"
else
    if [ $# -eq 0 ]; then
        usage_exit
    fi
    quote_args=''
    for arg in "$@"
    do
        arg=$(printf '%q' "$arg")
        quote_args="$quote_args $arg"
    done
    quote_args=$(echo "$quote_args" | sed -e "s/\\\\'/'\"&\"'/g" -e 's/\\\\/&&/g')
    quote_pwd=$(printf '%q' "$PWD" | sed "s/\\\\'/'\"&\"'/g")
    cygstart --hide -w -a runas sh -l -c "'exec < /proc/$$/fd/0 > /proc/$$/fd/1 2> /proc/$$/fd/2; cd $quote_pwd; $quote_args'" &
    trap 'trap "" 1 2 3 15; sudo c:/Windows/system32/taskkill /pid $(ps -p $! | awk "NR==2 {print \$4}") /t > /dev/null 2>&1' 1 2 3 15
    wait $!
fi
 
Wikiページ公開しているものです。
返信削除このblogを書かれた時に公開していたスクリプトはWindows10で
動きませんでした。Wikiページの方は対策版を公開しております
ので、そちらをご利用いただければと思います。
よろしくお願いします。