Я пытаюсь найти способ выполнения административных задач на локальном сервере, так как разные сценарии имеют действия, требующие прав root.
Как выполнить эти сценарии с наименьшим влиянием на безопасность? 100
Я отправляю несколько примеров скриптов:
#!/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
#
Как вы можете видеть, этот скрипт должен быть запущен от имени пользователя root, так как он имеет много действий, требующих этого
Другой скрипт:
echo password | python /var/www/google_appengine/appcfg.py --passin --email=email update localapplicationurl
#
при запуске я получаю ошибки apache с разрешениями для appcfg.py даже для chmoding 4755 и просмотра всем всем = nopasswd: urlscript / script
И другие попытки.
Извините, что опубликовал так много вопросов, но мне действительно нужно иметь возможность запускать много скриптов, чтобы люди в моей компании могли делать это как веб-интерфейс.
Спасибо за ваш ответ. Ну, в основном это панель типа plesk, персонализированная под мои собственные нужды. Это включает в себя создание конфигураций samba, конфигураций vhost, загрузку веб-сайтов на удаленные серверы и, таким образом, их загрузку, автоматизацию установки баз данных по потребностям программистов, создание групп пользователей и т. Д. - это компания с более чем 1000 доменами, я установил четыре локальных сервера для производства, для которых у нас есть сценарии загрузка в cdn в google, amazon и т. д. У меня все это настроено в независимых скриптах, но нужно каким-то образом заставить людей делать это через интерфейс веб-сайта. Это освободило бы от меня большую работу (я единственный, кто делает это) и смогло бы сконцентрироваться на оптимизации веб-серверов и других. Поэтому мне нужно сделать это, и большинство сценариев включают в себя ssh-соединения по ssh по крайней мере с 30 различными серверами или загрузку-выгрузку 100 мини-сайтов одновременно (ssh-соединения, ftp и т. Д.), Или запуск gdd cdn с python и sdk и т. Д. И т. Д. Большая часть этого должна быть от имени пользователей, то есть получить эти домены с этого сервера - дать возможность выбрать их - выбрать действие - запустить скрипт upload-download-cleanremotecache-erasespecificfilesfolders-etc.
Это вещь. Хорошая вещь об этом - я могу заблокировать полный доступ к серверу с помощью iptables или локальных определенных mac-адресов в confs серверов, и так далее. Он должен работать только локально и иметь возможность запускать сценарии, которые в основном содержат команды root.
Мне просто нужно сосредоточиться на лучшем способе сделать это, большинство вещей, найденных в Google, не работают так, как предполагалось, или что-то подобное Когда я подхожу к подходу, все остальное сводится к тому, чтобы приложить к нему руки.
Извините, что так сильно себя расширяю, но, как вы видите, у меня много дел, и мой опыт работы с компьютерами и Linux начался год назад.