cotizador/PERMISOS_LINUX.md

219 lines
4.5 KiB
Markdown

# 🔧 Comandos para Permisos en Linux
## Conectarse al Servidor
```bash
# SSH al servidor
ssh usuario@calculos.penki.com.ar
# O si tienes acceso FTP/cPanel, usa el terminal web
```
## Navegar a la Carpeta del Proyecto
```bash
# Ir a la carpeta del proyecto (ajusta la ruta según tu servidor)
cd /home/usuario/public_html
# o
cd /var/www/html/calculos
# o donde esté instalado el proyecto
```
## Aplicar Permisos
### Opción 1: Permisos Recomendados (Más Seguro)
```bash
# Permisos para la carpeta data
chmod 755 data
# Permisos para archivos JSON (lectura/escritura para el servidor)
chmod 666 data/productos_brasil.json
chmod 666 data/productos_chile.json
# Verificar permisos
ls -la data/
```
### Opción 2: Permisos Completos (Menos Seguro, pero funciona siempre)
```bash
# Dar permisos completos a la carpeta data
chmod 777 data
# Dar permisos completos a archivos JSON
chmod 666 data/*.json
# Verificar
ls -la data/
```
### Opción 3: Cambiar Propietario (Si tienes acceso root)
```bash
# Cambiar propietario al usuario del servidor web
# Reemplaza 'www-data' con el usuario de tu servidor (puede ser 'apache', 'nginx', etc.)
sudo chown www-data:www-data data
sudo chown www-data:www-data data/*.json
# Luego aplicar permisos
sudo chmod 755 data
sudo chmod 664 data/*.json
```
## Verificar Permisos Actuales
```bash
# Ver permisos de la carpeta data
ls -ld data
# Ver permisos de archivos JSON
ls -l data/*.json
# Salida esperada:
# drwxr-xr-x 2 usuario grupo 4096 Oct 6 14:00 data
# -rw-rw-rw- 1 usuario grupo 801 Oct 6 14:00 productos_brasil.json
# -rw-rw-rw- 1 usuario grupo 3 Oct 6 14:00 productos_chile.json
```
## Explicación de Permisos
```
chmod 755 = rwxr-xr-x
7 (rwx) = Propietario: lectura, escritura, ejecución
5 (r-x) = Grupo: lectura, ejecución
5 (r-x) = Otros: lectura, ejecución
chmod 666 = rw-rw-rw-
6 (rw-) = Propietario: lectura, escritura
6 (rw-) = Grupo: lectura, escritura
6 (rw-) = Otros: lectura, escritura
chmod 777 = rwxrwxrwx (todos los permisos)
```
## Script Automático
Crea un archivo `fix_perms.sh`:
```bash
#!/bin/bash
# Script para corregir permisos
echo "Corrigiendo permisos..."
# Ir a la carpeta del proyecto
cd /ruta/a/tu/proyecto
# Aplicar permisos
chmod 755 data
chmod 666 data/productos_brasil.json
chmod 666 data/productos_chile.json
echo "✓ Permisos aplicados"
ls -la data/
echo "Listo!"
```
Ejecutar:
```bash
chmod +x fix_perms.sh
./fix_perms.sh
```
## Verificar desde PHP
Accede a: `https://calculos.penki.com.ar/fix_permissions.php`
Este script PHP verificará:
- ✓ Si los archivos existen
- ✓ Si son legibles
- ✓ Si son escribibles
- ✓ Los permisos actuales
## Verificar desde PHP (check.php)
Accede a: `https://calculos.penki.com.ar/check.php`
Este script mostrará:
- Información del servidor
- Permisos de archivos
- Usuario PHP
- Extensiones cargadas
## Troubleshooting
### Error: "Permission denied"
```bash
# Verificar propietario
ls -l data/productos_brasil.json
# Si el propietario es diferente al usuario web:
sudo chown www-data:www-data data/*.json
```
### Error: "No such file or directory"
```bash
# Crear archivos si no existen
echo "[]" > data/productos_brasil.json
echo "[]" > data/productos_chile.json
# Aplicar permisos
chmod 666 data/*.json
```
### Verificar Usuario del Servidor Web
```bash
# Apache
ps aux | grep apache
# o
ps aux | grep httpd
# Nginx
ps aux | grep nginx
# El usuario aparecerá en la primera columna
```
## Comandos Rápidos (Copy-Paste)
```bash
# Todo en uno - Permisos seguros
cd /ruta/a/calculos && chmod 755 data && chmod 666 data/*.json && ls -la data/
# Todo en uno - Permisos completos (si lo anterior no funciona)
cd /ruta/a/calculos && chmod 777 data && chmod 666 data/*.json && ls -la data/
```
## Después de Aplicar Permisos
1. Accede a: `https://calculos.penki.com.ar/fix_permissions.php`
2. Verifica que todo esté en verde (✓)
3. Prueba agregar/editar un producto
4. **IMPORTANTE:** Elimina los archivos de verificación:
```bash
rm fix_permissions.php
rm check.php
```
## Notas Importantes
⚠️ **Seguridad:**
- `chmod 666` permite que cualquiera lea/escriba el archivo
- `chmod 777` es muy inseguro, úsalo solo temporalmente
- Después de verificar que funciona, considera usar `chmod 644` para los JSON
**Recomendación:**
- Usa `755` para carpetas
- Usa `644` o `664` para archivos (si el servidor web puede escribir)
- Si `644` no funciona, usa `666` temporalmente
🔒 **Producción:**
```bash
# Permisos más seguros para producción
chmod 750 data
chmod 640 data/*.json
# Solo si el usuario web es el propietario
```