403Webshell
Server IP : 146.190.157.162  /  Your IP : 216.73.217.6
Web Server : Apache
System : Linux ubuntu-s-2vcpu-4gb-amd-sfo3-01-KIT-DIGITAL 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024 x86_64
User : businessweek ( 639)
PHP Version : 8.2.10-2ubuntu2.2
Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_signal,pcntl_signal_dispatch,pcntl_getpriority,pcntl_setpriority,dl,putenv,parse_ini_file,show_source
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/html/wordpress-manager/resources/scripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/wordpress-manager/resources/scripts/user-new.sh
#!/bin/bash

# Verificar que se haya proporcionado un argumento (nombre del usuario/carpeta)
if [[ -z "$1" ]]; then
	echo "Uso: $0 <nombre_de_usuario>"
	exit 1
fi

# Nombre del usuario y carpeta
nombre="$1"
dir="/var/www/html/$nombre"
conf_file="/etc/apache2/sites-available/$nombre.conf"
ssl_conf_file="/etc/apache2/sites-available/$nombre-le-ssl.conf"

# Verificar si la carpeta existe
if [[ ! -d "$dir" ]]; then
	echo "La carpeta '$dir' no existe."
	exit 1
fi

# Verificar si el usuario ya existe
if id "$nombre" &>/dev/null; then
	echo "El usuario '$nombre' ya existe."

	# Verificar si la carpeta del usuario existe pero no tiene los archivos de /etc/skel
	if [[ ! -f "$dir/.bashrc" ]]; then
		echo "Copiando archivos de /etc/skel a $dir"
		sudo cp -r /etc/skel/. "$dir"
		sudo chown -R "$nombre:$nombre" "$dir"
	fi
else
	echo "Creando usuario y grupo: $nombre"
	sudo useradd -r -d "$dir" -s /usr/sbin/nologin "$nombre"

	# Copiar archivos de /etc/skel al directorio del usuario
	echo "Copiando archivos de /etc/skel a $dir"
	sudo cp -r /etc/skel/. "$dir"
	sudo chown -R "$nombre:$nombre" "$dir"
fi

# Asignar propietario y permisos
echo "Aplicando permisos a $dir"
sudo chown -R "$nombre:$nombre" "$dir"
sudo find "$dir" -type d -exec chmod 755 {} \;
sudo find "$dir" -type f -exec chmod 644 {} \;

sudo chown -R $nombre:www-data wp-content/
sudo find "$dir/wp-content" -type d -exec chmod 775 {} \;
sudo find "$dir/wp-content" -type f -exec chmod 664 {} \;


# Función para agregar configuraciones a un archivo de Apache
agregar_configuraciones() {
	local archivo="$1"
	if [[ -f "$archivo" ]]; then
		echo "Verificando configuraciones en $archivo"

		# Líneas que deben estar en el archivo
		php_line="php_admin_value open_basedir \"$dir:/tmp\""
		suexec_line="SuexecUserGroup $nombre $nombre"
		error_log_line="ErrorLog /var/log/apache2/$nombre-error.log"
		custom_log_line="CustomLog /var/log/apache2/$nombre-access.log combined"

		# Verificar si las líneas ya existen
		if ! grep -q "$php_line" "$archivo"; then
			echo "Agregando línea: $php_line"
			sudo sed -i "/<Directory /i \\\t$php_line" "$archivo"
		fi

		if ! grep -q "$suexec_line" "$archivo"; then
			echo "Agregando línea: $suexec_line"
			sudo sed -i "/<Directory /i \\\t$suexec_line\n" "$archivo"
		fi

		# Reemplazar o agregar líneas de logs
		if grep -q "ErrorLog" "$archivo"; then
			echo "Reemplazando línea de ErrorLog"
			sudo sed -i "s|ErrorLog .*|$error_log_line|" "$archivo"
		else
			echo "Agregando línea: $error_log_line"
			sudo sed -i "/<\/VirtualHost>/i \\\t$error_log_line" "$archivo"
		fi

		if grep -q "CustomLog" "$archivo"; then
			echo "Reemplazando línea de CustomLog"
			sudo sed -i "s|CustomLog .*|$custom_log_line|" "$archivo"
		else
			echo "Agregando línea: $custom_log_line"
			sudo sed -i "/<\/VirtualHost>/i \\\t$custom_log_line" "$archivo"
		fi

		# Verificar si ServerName contiene devuocloud.com y modificar VirtualHost
		if grep -q "ServerName.*devuocloud.com" "$archivo"; then
			echo "Modificando <VirtualHost *:80> a <VirtualHost *:443>"
			# sudo sed -i "s|<VirtualHost \*:80>|<VirtualHost *:443>|" "$archivo"

			# Agregar líneas de SSL debajo de </Directory>
			if ! grep -q "SSLCertificateFile" "$archivo"; then
				echo "Agregando líneas de SSL"
				sudo sed -i "/<\/Directory>/a \\\n    SSLCertificateFile    /etc/apache2/certs/devuocloud.com.crt\n    SSLCertificateKeyFile /etc/apache2/certs/devuocloud.com.key" "$archivo"
			fi
		fi
	else
		echo "El archivo $archivo no existe. Omitiendo."
	fi
}

# Aplicar configuraciones al archivo de HTTP (si existe)
agregar_configuraciones "$conf_file"

# Aplicar configuraciones al archivo de HTTPS (si existe)
agregar_configuraciones "$ssl_conf_file"

# Recargar Apache para aplicar los cambios
# echo "Recargando Apache..."
# sudo systemctl reload apache2

echo "Proceso completado para el usuario '$nombre' y la carpeta '$dir'."

Youez - 2016 - github.com/yon3zu
LinuXploit