Consultas, desarrollo de programas y petición de presupuestos:

jueves, 12 de julio de 2012

Permisos, y copias de seguridad (comprimir y descomprimir)


Permisos                                                                                                                                     
Comandos que van a manejar tipicamente root:
chown:
Sirve para cambiar el usuario (dueño) de un archivo o carpeta y el grupo.
$chown usuario:grupo fichero
¿para que le sirve a un usuario normal cambiar el dueño de un archivo? No te puedes apropiar de algo que no es tuyo, implica ceder el control del fichero y no pueda cambiar nada de el.

Para el usuario root, es fundamental, ya que limita permisos de archivos de a quien pertenece el archivo.

Cada proceso (ejecución de un programa) esta asociado a un usuario y a esa ejecucion se le aplican los permisos del usuario que lo ejecuta.

Importante:
Un servidor apache, si lo ejecuta un root, ese proceso tiene los mismos permisos que el root. (en general todos los programas que ejecute root, sus procesos tienen los permisos del root). Para evitar este problema, mejor es crear un usuario “ficticio”, y que ese usuario ficticio se encargue de ejecutar ese proceso.

Argumentos:
-R: lo hace de forma recursiva, lo aplica a todo lo que este dentro de un directorio (subdirectorios y archivos). Mucho cuidado con esto...

$chown -R usuario:grupo /home/usario

chgrp:
Cambiar el grupo. Aplicado a ficheros y a directorios.

$chown -R grupo /home/usario

La gestion de usuario en gnu/linux se basa en 3 ficheros:
/etc/passwd
El archivo passwd, contiene la configuracion de los usuario.
(ejecuto $less /etc/passwd, para verlo)


la 1º columna es el nombre del usuario.
la 2º columna: es la contraseña que tiene el usuario. Pone x, antiguamente la ponia cifrada, pero para mejorar la seguridad pone x
la 3º y 4º son numeros (que suelen coincidir pero no tiene porque). El nº 3, indica un numero que identifica el usuario. El 4º indica el numero del grupo al que pertenece dicho usuario. Los usuarios ficticios son los que tienen <1000 o el 65534

La 5º columna: descripción del usuario (normalmente esta vacia o coincide con la primera columna), telefono, direccion, (separados por comas)
la 6º columna: el directorio domicilio de ese usuario. Los usuarios ficticios no coinciden con los usuarios normales en estar en el directorio /home. Por ejemplo www-data es el usuario que gestiona el servidor apache.
Y la 7º columna: es el programa que usa el usuario como shell
en mi caso el usuario julio tiene /bin/bash
otros usuarios pueden tener es /bin/sh
/bin/false y /bin/nologin: para que un usuario no pueda hacer login en el sistema (entrar como usuario), porque no hay programa para ejecutar. El sentido que no le puede hacer ataque de fuerza bruta a ese usuario. Tambien podemos “desactivar” temporalmente a un usuario. Editandolo con un editor de texto al archivo /etc/passwd

¿que es una shell? La shell es la interfaz del usuario, el programa que usa el usuario para comunicarse con el sistema operativo.

Nucleo: Kernel (el que hace el trabajo sucio)

Shell: la terminal es la representación fisica del shell, nos comunicamos con la shell atraves del terminal

Aplicaciones:Entorno de escritorio (gnome), aplicaciones nuestras, etc..




Existe un 2º archivo que es el que tiene las contraseñas (encriptadas):
/etc/shadow
Te dice permiso denegado porque no eres root. Si escribes:
$sudo less /etc/shadow


El 3º archivo:
/etc/group

Cada linea te describe un grupo, separado por “:”
1º columna : nombre del grupo
2º columna: X, contraseña
3º columna: nº que identifica ese numero
4º columna: la lista de usuarios que pertenecen a ese grupo.

Al final del archivo nos veremos a nosotros:
julio:x:1000:

Por pertenecer a ciertos grupos, tienen ciertos privilegios. Por ejemplo el grupo cdrom, si no estamos no podemos acceder a dicho dispositivos.

Los usuario nomales siempre van de 1000 en adelante.


Nota:
usar nano para editar ficheros en modo terminal, ya que no tendremos acceso a herramientas graficas como gedit en entornos de accesos de servidores o por internet.


Chmod:
Cambiar los permisos de los ficheros y/o directorios.
Formas de usarlo:
$chmod modo fichero

El modo se puede expresar de 2 formas:
1º con un numero de hasta 4 cifras en octal, (y es la más sencilla)
2º con símbolos
Explición de la 1º forma:
Los premisos eran
usuario
grupo
Otros (resto del mundo)
rwx
rwx
rwx

Tabla de valores
r → 4
w → 2
x → 1

Sumamos los numeros que quieres aplicar de los permisos:
Si queremos conserquir esto:
rw- r-- ---
6 4 0

luego:
$chmod 640 fichero

Buscar en goole  estos permisos especiales, y buscar documentación

2º modo:
A base de símbolos, que se componen básicamente de combinaciones de 3 letras:

usuario
u
+ poner
r : lectura
grupo
g
- quitar
w : escritura
otros
o
= con este se queda igual que estaba
x: ejecución
todos
a



Por ejemplo:
permisos: rw- r-- ---
1º sistema: 6 4 0
2º sistema: u+r,u+w,a-w,g-w,o-w

Con el 1º método siempre tiene que inicar todo como va a quedar.
Pero con el 2º metodo, puedes indicar cambios

Por ejemplo:
Tenemos rw- r-- ---

Si tenemos: chmod 640 fichero
y cambiamos a rw- rw- ---

chmod 660 fichero

o poner solo lo que cambia: chmod g+w fichero

También tenemos el argumento -R, cambios recursivos al escritorio y a su contenido.
Mas información sobre permisos:

Copias de seguridad en gnu/linux.
Para copiar cosas de un sitio a otro con el comando cp
Crear carpeta mkdir.
¿Pero como podemos comprimir?
Formatos de compresión de programas hay infinitos, los más extendido es el formato:
zip : 3 opcion (en gnu/linux)
rar :(a nivel de usuario), el rar comprime un poquitín más. (dependiendo del fichero a comprimir) pero el algoritmo es mucho mas lento que el zip y consume mas recursos del sistema.
7z :(ahora esta de moda) comprime más que el rar, pero es mas lento, y los recursos pide mucho más.

En gnu/linux, ademas de estos, están:
arj
lha
lz
zog
gzip: 1 opcion (comprime menos pero es muy rápido y tiene una gran ventaja que es que admite entrada y salida standar, con lo cual puedes encadenar procesos (tuberias)). Inconveniente que solo comprime un archivo. Se puede saltar esto con otro comando que une los archivos tar.
bzip2 : 2 opcion, comprime mucho mas que gzip pero consume mucho. Solo lo hace uno a uno y ventaja es que maneja entrada y salida standar.

El comando tar, que une (pega) archivos y lo empaquetas como un solo archivo, y este lo comprimes con gzip.

Usando gzip:
gzip fichero
el resultado es un fichero llamado fichero.gz (cuidadin: borra el fichero original)
El fichero comprimido respeta todos los permisos del fichero original.

Forma de descomprimir:
gzip -d fichero.gz
gunzip fichero.gz
Borrandote el comprimido y te restaura los permisos de los que tenia el archivo.

Usando tar:
tar ordenes archivo listaficheros
archivo: el archivo resultado de la unión
listaficheros: los archivos o directorios que quieras meter dentro separarados por espacios

ordenes:
cfv: unir todos estos ficheros/directorios en este archivo, y la v te va diciendo lo que esta haciendo
xfv: extraeme los ficheros y directorios en el directorio que estas, y la v te va diciendo lo que esta haciendo
tf: para ver los archivos que tenga el fichero .tar
tfv: te da mas informacion
tfvz: te das mas informacion (comrpimido con gz)

Por ejemplo: .tar no la pone, y es
$tar cfv programas.tar .codelite/workspace

Nota:
.tar no la pone, y es conveniente ponerselo.

El 2º paso seria comprimirlo con gzip, si le ponemos la opcion z, lo hace automaticamente el comprimido el tar:
$tar cfvz programas.tar.gz .codelite/workspace

Con tubería sería:
$tar cfv programas.tar .codelite/workspace | gzip

Para descomprimir y separar los archivos:
$tar xfvz programas tar.gz
Comparación entre los que ocupa un .tar y un .tar.gz


Uso del bzip2:
$bzip2 fichero

Y lo pone con la terminación .bz2

Comparación entre bz2 y gzip:


No hay comentarios:

Publicar un comentario en la entrada