特にパスワードなしで次のコマンドを許可したいと思います。
sudo cfgutil --ecid "${Device_ECID}" install-application "${in_File_Name}"
ある通貨から次の通貨に変わりますDevice_ECID
。in_File_Name
いくつかの例を見つけましたが、ほとんどはその逆です。可変引数を完全に受け入れないか、すべての引数を受け入れます。
修正する:
公開直後にワイルドカードが見つかりました。以下は私にとって効果的でした。
%_developer ALL=(root) NOPASSWD: /usr/local/bin/cfgutil list-devices
%_developer ALL=(root) NOPASSWD: /usr/local/bin/cfgutil --ecid * install-application *
しかし、@marcus-müllerの答えで判断すると、ファイル名に実際のスペースがないので、これがまさにそのような場合だと思います。それで私がまた何かを逃しているのではないかと思います。
答え1
Sudoにはマルチワードコマンドラインを選択的に許可する機能がありますが、これはどこでも悪い考えです。。
しかし、私が知っている限り、可変プレースホルダはサポートされておらsudoers
ず、正直なところ、代替は簡単です。
代わりに、シェルスクリプトを作成し、ルートのみがそれを変更できることを確認してから、実行可能としてマークすることを強くお勧めします。スクリプトは2つのパラメータのみを受け入れ、cfgutil
必要に応じて呼び出されます。
#!/bin/sh
# Add string sanitation here if needed
cfgutil --ecid "$1" install-application "$2"
そしてそれを許可してくださいsudoers
。そうすることができ、sudo myscript argument1 argument2
動作します。