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)
効果的に実行すると、growisofs
sudoerはファイルシステム上のすべてのファイルに対する読み取り権限を与えられます。これは、成長isofsが環境変数を解析してmkisofs実行可能イメージへの代替パスを決定するというMKISOFS
事実によってさらに悪化します。これは、実行されるとsudo(8)
、growisofsがsudoerに高い権限で選択したプログラムを実行する権限を効果的に付与することを意味します。何らかの理由で上記の内容が依然として許容可能であると考え、結果に喜んで直面することを望む場合は、実際のsudo(8)
バイナリを取得するために次のラッパースクリプトを所定の位置で実行することを検討してくださいgrowisofs
。#!/bin/ksh unset SUDO_COMMAND export MKISOFS=/path/to/trusted/mkisofs exec growisofs "$@"
しかし、上記の「解決方法」に提案されている代替案は、実際に
growisofs
set-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
個人のデスクトップシステムでは役に立ちません。