suidビットを使用した実験では、apt-get update
bashスクリプトで実行するスクリプトを作成し、suidビットを設定して実行するか、~/update
別の操作を実行しました。
apt-get update
これは何でも構いません。特権ソケットから受け取るプログラムの一部、書き込み/
またはルートで実行する必要がある他のプログラムなどがあります。ここでキャッチしないでくださいapt-get update
。
最初の試みはこれで失敗しましたが失敗しましたcan't get lock, are you root?
。理由は次のとおりです。setuid ビットは bash に影響を与えないようです。。
#!/bin/bash
apt-get update
だからシェルをバイパスしようとしましたが、同じ理由でそれも機能しませんでした。
#!/usr/bin/perl
system("apt-get", "update").
私の権限は正しいです(私の知る限り)。 - sudo chmod 4755 ~/update
。
私はsetuidを誤解しているのでしょうか、それとも単純な内容を見逃していますか?
答え1
suid bit
障害のあるスクリプトほとんどの場合LinuxとUNIXディストリビューションは複数のセキュリティホールを開いているからです。
しかし、基本的なコマンドとバイナリ実行可能ファイルはsuid bit
。
答え2
これがうまくいくためには、以下を試してください。
cp /bin/bash /bin/mybash
chmod 4755 /bin/mybash
スクリプト/bin/mybash
(最初の行)でshebangとして使用します。#!/bin/mybash
本番システムでは、このような状況を避ける必要があります。