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ページの方は対策版を公開しております
ので、そちらをご利用いただければと思います。
よろしくお願いします。