suidビットがシェルやPerlスクリプトに影響しないのはなぜですか? [コピー]

suidビットがシェルやPerlスクリプトに影響しないのはなぜですか? [コピー]

suidビットを使用した実験では、apt-get updatebashスクリプトで実行するスクリプトを作成し、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

本番システムでは、このような状況を避ける必要があります。

関連情報