sudoでGromisofsを実行するには?

sudoでGromisofsを実行するには?

growisofsを実行しようとするたびに、sudo常に次のエラー メッセージが表示されます。

$ sudo -i growisofs
:-( growisofs is being executed under sudo, aborting!
    See NOTES paragraph in growisofs manual page for further details.
$ sudo -s growisofs

:-( growisofs is being executed under sudo, aborting!
    See NOTES paragraph in growisofs manual page for further details.

これにより、sudo su -後続の作業を実行する必要がありましたgrowisofs

$ sudo su - -c growisofs
growisofs: previous "session" device is not specified, do use -M or -Z option

-or-

$ sudo su -
# growisofs ...

これを行わずにこれを実行する他の方法はありますかsu -

背景

growisofsこの動作は、高い権限でファイルシステムにアクセスするのを防ぐためにツールに組み込まれています。

抜粋

ノート

実行するとsudo(8) growisofs起動が拒否されます。その理由は次のとおりです。もちろん、ISO9660レイアウトをgrowisofs即座に作成して間接的にDVDメディアに書き込むデータセットにアクセスするか、事前に作成された画像に書き込むmkisofsデータセットに直接アクセスする必要があります。以下でsudo(8)効果的に実行すると、growisofssudoerはファイルシステム上のすべてのファイルに対する読み取り権限を与えられます。これは、成長isofsが環境変数を解析してmkisofs実行可能イメージへの代替パスを決定するというMKISOFS事実によってさらに悪化します。これは、実行されるとsudo(8)、growisofsがsudoerに高い権限で選択したプログラムを実行する権限を効果的に付与することを意味します。何らかの理由で上記の内容が依然として許容可能であると考え、結果に喜んで直面することを望む場合は、実際のsudo(8)バイナリを取得するために次のラッパースクリプトを所定の位置で実行することを検討してくださいgrowisofs

       #!/bin/ksh
       unset SUDO_COMMAND
       export MKISOFS=/path/to/trusted/mkisofs
       exec growisofs "$@"

しかし、上記の「解決方法」に提案されている代替案は、実際にgrowisofsset-root-uidをインストールすることです。この場合、データへのアクセスやmkisofsデータへの不正アクセスを防ぐために、実行前に権限が削除されます。

答え1

これがすることは、環境変数をgrowisofs探してSUDO_COMMANDそれが見つかったら中断することです。効果があるのは環境を浄化するsudo su -からです。su -

フルシェルを取得せずに次のことができます。

sudo env -i growisofs

のように環境が消去されますsu -。唯一の違いは、完全に空の環境ではなく、基本変数su -/etc/profileおよびその他など)も元の場所に戻すことです。env -i

より正確な解決策は次のとおりです。

sudo env -u SUDO_COMMAND growisofs

これはさらに環境を保護しますSUDO_COMMAND

答え2

chmod u+s /usr/bin/growisofs solves this problem.

しかし、これは提供されたセキュリティを崩す「間違ったアプローチ」の良い例ですsudo。 SetUIDはgrowisofs慎重な構成よりも深刻なセキュリティ問題を引き起こし、sudo個人のデスクトップシステムでは役に立ちません。

関連情報