私はローカルサーバで管理タスクを実行する方法を、ルート権限が必要なアクションを持つほとんどのスクリプトとして探しています。私が最もセキュリティの影響でこれらのスクリプトを実行するにはどうすればよいサーバ側のスクリプトがrootで実行されるか、PHPで実行可能なインタラクティブな方法です
¿
私はいくつかのサンプルスクリプトを送信します?
#!/bin/bash
if [ $1 == '-h' ];
then
echo +-------+-------+-------+-------+-------+-------+-------+-------+-------+
echo + Instrucciones +
echo +-------+-------+-------+-------+-------+-------+-------+-------+-------+
echo Para ejecutar el script hay que hacer cd hasta /var/www/scripts/server ..
echo ejecutar ----> bash crearhosts $dominio $dominio $dominio $status
echo Se pueden poner tantos dominios como se quiera sin extensión salvo el último parámetro que ha de ser el tipo de site con los siguientes valores validos:
echo localzone1
echo localzone2
echo localzone3
echo +------------ejemplo-------------+
echo bash domain domain domain localzone
echo +-------+-------+-------+-------+-------+-------+-------+-------+-------+
echo + fin +
echo +-------+-------+-------+-------+-------+-------+-------+-------+-------+
else
#+-------+-------+-------+-------+-------+-------+-------+-------+-------+
#+ Variables +
#+-------+-------+-------+-------+-------+-------+-------+-------+-------+
params=$*
array=$(echo $params | sed 's/ /;/g')
IFS=";"
set -- $array
sites=($array)
base="/var/www"
#+-------+-------+-------+-------+-------+-------+-------+-------+-------+
#+ funciones +
#+-------+-------+-------+-------+-------+-------+-------+-------+-------+
function hostconf(){
case $status in
aracne)
cp /var/www/vhosts/template.ethings.com.conf /var/www/vhosts/$domain-aracne.ethings.com.conf
grep -Rl -e 'ethings/template' /var/www/vhosts/$domain-aracne.ethings.com.conf | xargs sed -i 's:domain/template:domain/'$domain'-aracne:g'
grep -Rl -e 'template' /var/www/vhosts/$domain-domain.com.conf | xargs sed -i 's/template/'$domain'-aracne/g'
mkdir $base/$status/${directorios[0]}-aracne ; mkdir $base/$status/${directorios[0]}-dominio/${directorios[1]} ; mkdir $base/$status/${directorios[0]}-dominio/${directorios[2]}
echo +---------------------------------------------------------------------------------------------------------------------------------------------+
echo "+----------------------No OLVIDE AÑADIR EL DOMINIO "$domain"-domain.com para la ip xxx.xxx.xxx.xxx en su archivo hosts"
echo +----------------------------------------------------------------!!!!!!!!!!!!!!!!!!!!---------------------------------------------------------+;;
static)
cp /var/www/vhosts/template.ethings.com.conf /var/www/vhosts/$domain.ethings.static.com.conf
grep -Rl -e 'ethings/template' /var/www/vhosts/$domain.ethings.static.com.conf | xargs sed -i 's:ethings/template:ethings/static-webs/'$domain':g'
grep -Rl -e 'template.ethings' /var/www/vhosts/$domain.ethings.static.com.conf | xargs sed -i 's/template.ethings/'$domain'.ethings.static/g'
mkdir $base/ethings/$status-webs/${directorios[0]}; mkdir $base/ethings/$status-webs/${directorios[0]}/${directorios[1]}; mkdir $base/ethings/$status-webs/${directorios[0]}/${directorios[2]}
echo +---------------------------------------------------------------------------------------------------------------------------------------------+
echo "+----------------------No OLVIDE AÑADIR EL DOMINIO "$domain".domain.com para la ip xxx.xxx.xxx.xxx en su archivo hosts"
echo +----------------------------------------------------------------!!!!!!!!!!!!!!!!!!!!---------------------------------------------------------+;;
*)
cp /var/www/vhosts/template.domain.com.conf /var/www/vhosts/$domain.ethings.com.conf
grep -Rl -e 'template' /var/www/vhosts/$domain.domain.com.conf | xargs sed -i 's/template/'$domain'/g'
mkdir $base/ethings/${directorios[0]} ; mkdir $base/ethings/${directorios[0]}/${directorios[1]} ; mkdir $base/ethings/${directorios[0]}/${directorios[2]}
echo +-------------------------------------------------------------------------------------------------+
echo "No OLVIDE AÑADIR EL DOMINIO "$domain".domain.com para la ip xxx.xxx.xxx.xxx en su archivo hosts"
echo +-----------------------------------!!!!!!!!!!!!!!!!!!!!------------------------------------------+;;
esac
}
#echo ${#sites[@]} +-------+ elements of array +--------+
for((count=0; count<$((${#sites[@]}-1)); count++))
do
directorios=("${sites[$count]}" "html" "logs")
domain=${sites[$count]}
status=${sites[$((${#sites[@]}-1))]}
hostconf $status
done
/etc/init.d/apache2 restart
fi
#
このスクリプトは、そのためのルートとして実行する必要があります見ることができるように
echo password | python /var/www/google_appengine/appcfg.py --passin --email=email update localapplicationurl
:そう
別scriptt必要とする多くのアクションを持っています #
私はそれを実行したとき、私はappcfg.pyの権限も4755をchmodingし、すべてのすべて= NOPASSWDにvisudoingでapacheのエラーを取得:urlscript /スクリプト
そして、他の試み。
私は非常に多くの質問を投稿して申し訳ありませんが、私は本当に私の会社の人々がWebインターフェイスとしてそれを行うことができるように多くのスクリプトを実行できるようにする必要があります。
ありがとうございました。基本的に私のニーズに合わせてカスタマイズされたpleskタイプのパネルです。これには、Samba設定の作成、vhost設定の作成、リモートサーバへのWebサイトのアップロード、ダウンロード、プログラマのデータベースのインストールの自動化、ユーザグループの作成などが含まれます。私はこのすべてを独立したスクリプトで設定しましたが、どうにかして人々にウェブサイトのインターフェースでこれをさせることができるようにする必要があります。私は(私はこれをやっている唯一の人です)多くの仕事を解放し、ウェブサーバの最適化などに集中することができます。だから私はこれを行う必要があり、ほとんどのスクリプトは、少なくとも30の異なるサーバーにsshを介してsshのconectionを含むまたはダウンロード - (sshの接続ftpなど)100 minisitesをアップロードするダウンロード、またはpythonとsdkとelseとelseとGoogleのcdnを実行します。これを実行するには、このサーバからこれらのドメインを取得する必要があります。そのオプションを選択するには、アクションを選択して、upload-download-cleanremotecache-erasespecificfilesfolders-etcスクリプトを実行します。
それは事です。これについての良いことは、iptablesやサーバconf内のローカルの特定のMACアドレスによるサーバへの総アクセスをブロックすることができるということです。ローカルでのみ実行し、主にルートコマンドを含むスクリプトを実行できるようにする必要があります。
私はちょうどそれを行うための最良の方法に焦点を当てる必要がありますグーグルで見つかったほとんどのものは、幻影、または類似して動作しません。私がアプローチの方法を得るとき、残りはそれに手を差し伸べる問題です。
自分自身を広げて申し訳ありませんが、私はコンピュータとLinuxの経験が1年前から始まりました。
[コードブロックのフォーマット方法](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) – ajreal
ルートとして何かを実行する(サーバー、スクリプト、など)は大きなセキュリティホールを残します。スクリプトをインストールするにはrootアクセスが必要ですか?そのような場合は、rootとしてログインして、それらをパースペクティブディレクトリにインストールします。それが何らかのWebインターフェイス(cPanelのようなもの)なら、rootとしてスクリプトをインストールしますが、Webインターフェイスを独自のユーザーで実行して、ユーザーのアカウントにデータをコピーします(ユーザーに書き込み権限を与えます) '/ home'ディレクトリに)。 – RageD
'echo'で引用符を閉じて再度開く必要はありません。 'echo" --- "$ var" --- "'ではなく 'echo" --- $ var --- "'を実行します。あなたの "変数"ブロックは、不必要にいくつかのことをしているようです。あなたは '$ base'変数をいくつかの場所で利用しますが、いくつかの場所で使うことができます。 'for(())'の中で '$(())'を使う必要はありません。直接数学をすることができます。 '$((a-b))]の代わりに' [a-b] 'だけでも配列の添字の中で同じことが当てはまります。 –