Я пытаюсь выяснить способ выполнения задач администрирования на локальном сервере в виде разных скриптов, большинство из которых имеют действия, требующие прав root.сценарии на стороне сервера выполняются как 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
#
Как вы можете видеть, этот сценарий должен быть запущен как корень для него есть много действий, которые требуют так
Другой scriptt:
echo password | python /var/www/google_appengine/appcfg.py --passin --email=email update localapplicationurl
#
, когда я запускаю его я получаю ошибки Apache с разрешения для appcfg.py даже chmoding 4755 и visudoing всем всем = NOPASSWD: urlscript/скрипт
И другие попыток.
Извините, что размещал так много вопросов, но мне действительно нужно иметь возможность запускать много сценариев, чтобы люди в моей компании могли делать это как веб-интерфейс.
Благодарим вас за ответ. Ну в основном панель типа plesk, персонализированная для моих собственных нужд. Это включает в себя создание конфигураций samba, конфигураций vhost, загрузку веб-сайтов на удаленные серверы и их загрузку, автоматизацию установки баз данных по потребностям программистов, создание групп пользователей и т. Д. - компания с более чем 1000 доменами, я установил четыре локальных сервера для производства, у нас есть сценарии для загрузка в cdn в google и amazon и т. д. У меня есть все это в независимых сценариях, но нужно как-то заставить людей сделать это в интерфейсе веб-сайта. Это освободит от меня много работы (я единственный, кто это сделал) и сможет сосредоточиться на оптимизаторе веб-серверов и других. Поэтому мне нужно сделать это, и большинство сценариев связаны с ssh-коннекторами по ssh по меньшей мере с 30 различными серверами или загружают-загружают 100 мини-сайтов одновременно (ssh-соединения ftp и т. Д.) Или запускают cdn google с помощью python и sdk и еще и еще. Большая часть этого должна быть от имени пользователей, которая должна получить эти домены с этого сервера - дать возможность выбрать их - выбрать действие - запустить сценарий загрузки-скачивания-cleanremotecache-erasespecificfilesfolders-etc.
Это - вещь. Хорошая вещь об этом - я могу заблокировать общий доступ к серверу с помощью iptables или локальными конкретными адресами mac в серверах confs и т. Д. Он должен работать только в локальном режиме и иметь возможность запускать сценарии, в которых используются главным образом команды root.
Мне просто нужно сфокусироваться на лучшем способе сделать это. Большинство вещей, найденных в google, не работают так, как показано на рисунке. Когда я получаю способ подхода, остальное - дело рук.
Извините, что так много увеличилось, но, как вы видите, у меня есть много дел, и мой опыт работы в компьютерах и Linux начался год назад.
[Как форматировать мои кодовые блоки] (http://meta.stackexchange.com/questions/22186/how-do-format-my-code-blocks) – ajreal
Запуск чего-либо как root (сервер, скрипт , и т. д.) оставляет значительные дыры в безопасности. Вам просто нужен root-доступ для установки скриптов? Если это так, войдите в систему как root и установите их в свои перспективные каталоги. Если это какой-то веб-интерфейс (похожий на cPanel или другой), установите скрипт как root, но ваш веб-интерфейс будет запущен на своем собственном пользователе, который затем просто скопирует данные на учетные записи пользователей (дайте пользователям права на запись в каталог '/ home'). – RageD
Нет необходимости закрывать и открывать кавычки в 'echo'. Вместо «echo» --- «$ var» --- «', просто выполните 'echo" --- $ var --- "'. Блок «Переменные», кажется, делает несколько вещей без необходимости. В некоторых местах вы используете переменную '$ base', но ее можно использовать еще в нескольких случаях. Нет необходимости использовать '$ (())' внутри 'for (())' - вы можете сделать математику напрямую. То же самое верно в индексе массива - вместо '[$ ((a-b))]' just do '[a-b]'. –