Copy Link
Add to Bookmark
Report

2500Hz Issue 02 - 05 GUNL - Capitulo 2

eZine's profile picture
Published in 
2500Hz
 · 28 Feb 2021

  

.--[ @_2500Hz - Underground Scene - ]------------(http://pagina.de/2500hz)--.
| |
| Titulo : Guia del Usuario Novicio de Linux - Capitulo 2 |
| Autor : Asejua (asejua@linuxfan.com) |
| Fecha : 27/03/2000 |
`-----------------------------------------------------(2500hz@mixmail.com)--´


CAPITULO 2 - PERMISOS A NIVEL DE ARCHIVOS Y DIRECTORIOS

Advertencia: Distribuye este documento sin modificarlo. Si crees conveniente
alguna modificacion, adicion o has encontrado algun fallo, por favor
remitemelo a asejua@linuxfan.com

Los permisos en Linux son la base de la piramide en la administracion de un
sistema Linux, el que un sistema este abierto o cerrado frente a ataques
locales depende de una buena administracion de estos permisos.. bueno... por
supuesto contando con una buena adminsitracion de usuarios y grupos.
Como sistema operativo dedicado a las redes, Linux posee un buen sistema de
permisos a nivel de accesos de red. Pero tambien a nivel local es necesario
poseer un buen sistema de permisos para evitar intrusiones y accesos no
deseados a nuestros datos.
Los permisos de cada archivo y directorio se dividen en tres grandes grupos
de usuarios:

Propietario (user)
Grupo (group)
Otros usuarios (others)

Para cada grupo de usuarios, cada fichero y directorio tiene tres tipos de
permisos...

Lectura (read)
Escritura (write)
Ejecucion (execute)

...Mas un permiso especial llamado ‘bit SUID’ (explicado mas adelante)

‘bit SUID’ (suID)

Para cada tipo de usuario, es decir u, g y o; se pueden activar los permisos
r, w, x y s con respecto a ese archivo o directorio.

Linux tambien nos permite asignar a cada archivo y directorio qué usuario y
grupo son los ‘propietarios’ de un archivo o directorio a los que se
aplicaran los permisos Propietario (u) y Grupo (g). Esto nos da la
posibilidad de poseer una proteccion muy alta a la hora de poner en manos de
personas ajenas nuestro sistema. Veamos un ejemplo:

Una linea caracteristica de un ls (con parametros -alF) nos mostraria lo
siguiente....

-rwxr-xr-- root root ... archivo-de-texto.txt
drwx--x--- root pepe ... textos/

1ª linea: Tenemos un primer guion que define la propiedad de directorio,
aparece un guion puesto que archivo-de-texto.txt no es un directorio, sino un
archivo. A partir de aquí agruparemos las propiedades de tres caracteres en
tres, que definiran los tipos de usuario: propietario(u), grupo(g) y
otros(o). Tras estas letras tenemos el usuario propietario del archivo:
‘root’ y el grupo al que pertenece el archivo: ‘root’.

Entonces, tenemos rwx para el propietario, que es ‘root’, un r-x para el
grupo ‘root’ y un r-- para otros usuarios. Lo que nos indica que:

-> El usuario ‘root’ como propietario del archivo podra ver, modificar y
ejecutar (si se pudiese) ese archivo.
-> Todo el que este en el grupo ‘root’ podra leerlo y ejecutarlo.
-> El resto de usuarios podran leerlo solamente.

Nota: El usuario root tambien pertenece al grupo root, sin embargo sus
permisos por propiedad del archivo prevalecen sobre los permisos de grupo.

2ª linea: Tenemos una d en primer lugar. Tras esto tenemos un rwx para el
propietario que es 'root', un --x para el grupo 'pepe' y un --- para otros
usuarios. Esto nos indica que:

-> La d nos indica que es un directorio, no un archivo.
-> El propietario (root) del directorio puede verlo, modificarlo
y ejecutarlo.
-> Cualquiera del grupo pepe podra ver y copiar archivos dentro de ese
directorio.
-> Otros usuarios no podran ver ni modificar ese directorio ni su contenido.

Nota: Un permiso x en un directorio nos indica que podremos ver, copiar,
etc... archivos que esten en ese directorio, ademas tambien debera tener r
para que podamos verlo.

Los comandos necesarios para administrar los permisos a nivel de archivo y
directorio en un sistema Linux son:

Orden: chmod
Descripcion: Cambia los permisos de un archivo o directorio.
Sintaxis:
chmod <ugo>[<+/-><rwxs>] <archivo o directorio>

<ugo>: (1)
u Asigna los permisos de propietario (user)...
g Asigna los permisos de grupo (group)...
o Asigna los permisos de otros usuarios (other)...
<+/->:
+ ...activando el permiso...
- ...desactivando el permiso...
<rxws>:
r ...de lectura.
w ...de escritura.
x ...de ejecucion.
s ...de suID.

(1) Según veremos despues en los dos metodos de asignacion de permisos, las
letras u, g y o pueden cambiarse por valores octales, lo que nos permite el
cambio de permisos sin necesidad de usar los demas parametros
(<+/-> y <rwxs>).

Para asignar estas propiedades tenemos dos metodos:

- en forma binaria
- en forma parametros

- Forma Binaria

Aquí tenemos esta tabla...


Pr Propietario Grupo Otros
--------------------------------------------
r w x r w x r w x
--------------------------------------------
0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0 0 1
2 0 1 0 0 1 0 0 1 0
3 0 1 1 0 1 1 0 1 1
4 1 0 0 1 0 0 1 0 0
5 1 0 1 1 0 1 1 0 1
6 1 1 0 1 1 0 1 1 0
7 1 1 1 1 1 1 1 1 1
--------------------------------------------


A primera vista, esto puede rayarnos un poco, pero este metodo es realmente
mas sencillo y rapido que el segundo si tenemos un poco de memoria o lo
usamos mucho, por experiencia, al final se te acaban quedando los numeros. De
todas formas lo explicare despacito:

Tenemos una tabla que nos muestra los tres tipos principales de usuarios
con sus respectivos permisos. Un 1 representa 'permiso aceptado' y un 0
'permiso denegado'. Asi tenemos todas las combinaciones de permisos posibles
para cada tipo de usuario, agrupadas en un solo numero decimal, del 0 al 7
(en la columna de la izquierda).

Solo tenemos que elegir nuestra combinacion de 3 binarios para cada tipo de
usuario y obtendremos 3 numeros (u, g y o) de la table celeste, que usaremos
como parametros para chmod.

chmod ugo [</nombre_archivo>|</nombre_directorio]

La mejor forma de verlo es con un ejemplo:

Digamos que el archivo fulanito.txt tiene los siguientes permisos. Hacemos
un ls -alF:

-r-xr-x--- root root ... fulanito.txt Y hacemos un...

chmod 735 fulanito.txt

Separando los tres numeros y mirandolos en la tabla vemos que:

El 7 = 111 = rwx : A Propietario le aceptamos r, w y x.
El 3 = 011 = -wx : A Grupo le denegamos r y aceptamos w y x.
El 5 = 101 = r-x : A Otros le aceptamos r y x.

Con lo cual si volvemos a hacer un ls nos aparecera asi...

-rwx-wxr-x root root ... fulanito.txt Desglosado seria:

- directorio (no le echamos cuenta pq es meramente informativo)
rwx usuario rwx => 111 => 7
-wx grupo -wx => 011 => 3
r-x otros usuarios r-x => 101 => 5

La cosa es bien simple, donde quieras que el permiso este activado (quieres
que aparezca r, w o x) es un 1 y donde quieras que no (quieres que
aparezca un '-'), un 0. Nos salen tres trios de binarios que, al pasarlos a
decimal nos dan los tres numeritos magicos. Parece dificil, parece lioso,
pero creedme, la experiencia y el continuo uso os lo hara saber de memoria.

Sabiendo lo minimo de conversion binaria-decimal o logica binaria, es muy
facil. Incluso la mejor tecnica es la 'memorieta'. ;D

Hay una forma de usar este metodo mas sencilla (muchas gracias por hacerme
ver la luz Alejandra :* ) este metodo es el siguiente:

r w x
-------
1 2 4

Lo que hacemos es sumar los valores de los parametros que queremos activar
para obtener los 3 numeros que forman el parametro para chmod, veamos...

¿Que queremos activar 'r' y 'x' para Propietario? 1 + 4 = 5
¿Que queremos activar 'r', 'w' y 'x' para Grupo? 1 + 2 + 4 = 7
Y ademas queremos activar 'r' para Otros Usuarios? 1 = 1

Pues ya tenemos 571, el parametro para hacer el chmod... :)

El bit SUID

El ‘Bit SUID’ hace que, durante el uso (normalmente ejecucion) de ese
archivo, el usuario tiene los permisos de ‘superuser’ o ‘root’. El permiso se
coloca en forma de una s mayuscula o minuscula (según distribucion) en la
posicion que se coloca el x. El bit s se podra activar para los tipos de
usuario o y g (Propietario y Grupo), nunca para o (Otros) por motivos de
seguridad. El tema del bit s se explica facilmente con el comando para
cambiar la clave de un usuario passwd. Pongamos un ejemplo:

El usuario pepe tiene como clave pepe1234 y, como usuario normal que es, no
puede ver y mucho menos modificar el contenido del archivo de claves del
sistema /etc/passwd. Aun asi, pepe puede cambiar en cualquier momento su
clave de usuario. ¿Cómo es esto? El comando passwd posee el bit SUID en
‘Otros usuarios’ con lo que, si pepe va a cambuar su clave, al ejecurar
passwd, pepe obtendra derechos de root momentaneos, lo que le permitira
escribir en el archivo /etc/passwd para cambiar su clave.

Aceptar el permiso del bit SUID es mas de lo mismo, solo es poner un
decimal (traduccion de un binario) más delante de los tres numeros
anteriores. Este numero puede ser 2, 4 o 6. Si s es igual a:

2 - s en 'g' 2 = 010 (0 propietario, 1 grupo, 0 otros)
4 - s en 'o' 4 = 100 (1 propietario, 0 grupo, 0 otros)
6 - s en 'o' y 'g' 6 = 110 (1 propietario, 1 grupo, 0 otros)

Tampoco es tan dificil ¿No?

- Forma por Parametros

La otra forma es mediante parametros, aceptando (+) y denegando (-) los
permisos y es un poco mas lento, aunque para algunos, es mas facil...

Imaginemos que tenemos un archivo...

-rwxrwxr-- root root .............. fulanito.txt

...y hacemos:

chmod ug-wx o+x fulanito.txt

Esto nos indica:

A el propietario y el grupo (‘u’ y ‘g’) le quitas (‘-‘) los permisos de
escritura y ejecucion (‘w’ y ‘x’). Y a los otros usuarios (‘o’) le añades
(‘+’) permisos de ejecucion (‘x’).

Y quedaria:

-r--r--r-x root root .............. fulanito.txt

Para asignar el bit UID (‘s’) se usa la misma cantinela...

chmod u+s fulanito.txt

-r-sr---w- root root .............. fulanito.txt

Mhm... ¿mas lento? Si, pero tal vez mas facil de aprender...
particularmente este metodo no me gusta nada. Pero alla vosotros y vuestros
metodos :)

Orden: chown
Descripcion: Cambia el propietario de un archivo.
Sintaxis:
chown <nombre_propietario_nuevo> <archivo/directorio>
Ejemplo:
chown asejua programa.c

Orden: chgrp
Descripcion: Cambia el grupo de un archivo.
Sintaxis:
chgrp <nombre_grupo_nuevo> <archivo/directorio>
Ejemplo:
chgrp users programa.c


En el proximo capitulo : Montaje de unidades de almacenamiento

Para más ayuda, consulta las paginas man o HowTo existente sobre el tema

Nota de la version en texto plano: En la seccion documentos de la web de
@_2500hz encontrareis este documento en formato texto plano y html como de
costumbre, mas una version en Word97 mejor organizada. Ademas, esta version
en ASCii ha sido levemente retocada a causa del ajuste para 78 columnas,
pero no se ha eliminado nada importante, solo palabras sueltas.

-- Asejua - -- -- - -- - -- - -- - -- - -- @_2500Hz - Underground Scene --
-- - -- - - - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - -- - --

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT