suまたはsudoを使用せずにroot権限でプログラムを実行する方法


8

root権限bash実行する必要があるが、通常のユーザーが呼び出す必要があるスクリプトがあります。

難しいのは、スクリプトがパスワードを要求してはならず、sudoersファイルを使用したくないということです。sudosuの使用を避けたい。

これは可能ですか?


回答:


9

bashスクリプトではなく通常のアプリケーションの場合は、その所有権をrootに与え、アプリケーションにsetuidビットを設定します。次に、実行時に、アプリケーションが実行されている有効なユーザーはrootです。ただし、セキュリティ上の理由により、これは多くのシステムでシェルスクリプトが禁止されています。unix.stackexchange.comのこの質問は、これを克服する方法を処理します。


いいですね、私はそのリンクを投稿していました。Hemantの答えは良い解決策です
Michael Mrozek

Rubyはシェルスクリプトとしてカウントされますか?
Stefan

1
@Stefanはい、実行されるのはスクリプト自体ではなく、Rubyインタープリターであり、それはsetuidではないため、インタープリターを介して実行されるものはすべて実行されます。setuidを使用するには実際のバイナリが必要です
Michael Mrozek

2
私はこれに反対票を投じたいと思いますが、残念ながら25の評判ポイントがありません。通常のユーザーがrootとしてbashスクリプトを実行できるようにすることは、何をしているのか正確にわかっていない限り(そして、それを行う方法を尋ねる必要がある場合は、しなくても)、非常に悪い考えです。OPが彼のスクリプトをここに投稿した場合、私はおそらくそれを悪用する少なくとも3つの方法を見つけるでしょう。ほとんどすべてのディストリビューションがこれを困難にする理由があります。
キム

Unixの主な原則の1つは、次のとおりです。「ユーザーに自分の足を撃つ機会を与える」:-)
fschmitt

1

sudoを使用します。を呼び出す必要がない場合はsudo /path/to/myscript、1行のラッパーを記述しますexec sudo /path/to/myscript "$@"シェルスクリプトでのsetuidの許可、特にsudoの使用に関するMaciej Piechotkaの回答、setuidプログラムに関する私のより一般的な説明を参照してください。


全体のアイデアは、使用する必要がないことsudoです。
Alexej Magura 2013年

@AlexejMagura Sudoが最も簡単なソリューションです。これをsudoなしで行うのは困難です(安全でないソリューションを受け入れる意思がある場合を除いて、その場合は全員にrootパスワードを与えることもできます)。
Gilles「SO-邪悪なことをやめなさい」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.