Está en la página 1de 35

Linux comandos:

COMANDOS OPCINONES Uso


ls -l  Lista, muestra tamaño y Enumera los archivos y
permisos. directorios desde su posición
-r  Imprime lo valores en un actual.
orden alfabético inverso.
-h  Muestra el tamaño d
ellos archivos de una forma
más legible.
-d Hace referencia al
directorio actual. ( No tiene
mucho sentido sin otras
opciones)Probad con -ld
-R Un listado recursivo. Tened
cuidado de utilizar por
ejemplo en la raíz /
-S Ordena los archivos según
su tamaño.
-t  Ordena los archivos
según su fecha de
modificación,

history Ver los comandos ejecutados


en la terminal anteriormente.
date Mostrar fecha
cal 2030 ( mostrara el de este Mostrar calendario
año)
env Muestra las variables de
entorno del sistema
export <variable local> Convierte una variable local
en variable de entorno.
unset <variable local> Eliminar una variable de
entorno.
type <comando> -a  Muestra las ubicaciones Sacar información
donde esta alojado el sobre un comando
comando.

which <comando> Te muestra donde está


ubicado el comando.
alias Te muestra los alias del
sistema.
whatis Es lo mismo que “man -f” Muestra información acerca
de un comando o archivo del
sistema como “passwd”.
cp -v  Es para que el comando Es para copiar
aunque tenga éxito produzca
una salida de texto.
-i  Poner para que no
sobrescriba ningún archivo de
forma automática.
-n tiene que ver con “-i” es
simplemente para que no
pregunte si quiere
sobreescribir y no lo haga
directamente.
-r o -R  En este caso son lo
mismo. Esta opción es para
copiar cualquier archivo o
directorio.
-p  Mantener los mismos
atributos que el fichero
original. Por ejemplo
permisos.

whereis Es para buscar la ubicación de


un comando o dónde están
las páginas de manual de un
comando.
locate updatedb  Actualizar locate Sirve para buscar archivos o
-c  Sirve para hacer un directorios.
conteo de cuantos archivos
coinciden.
-b  Solo hace búsqueda en
el nombre base del nombre d
ellos archivos
“/<palabra>”limita la salida a
los nombres de archivo que
coinciden con el término.

nl Para a ver un conteo de


líneas. Aunque también se
puede aplicar a comandos.
Ejemplo: ls /etc | nl
wc 1. Número de líneas
Te da información.
2. Número de
palabras
3. Número de bytes
4. Nombre del
archivo
file Te dice el tipo de
archivo que es
un fichero. Por
ejemplo, podría
ser binario.
last o lastb Es para traducir
un archivo
binario a salida
de texto.
pstree Para mapear los
procesos en un
árbol
genealógico de
acoplamiento.
id Se utiliza para
Siempre enumera primero la
información de la uenta de
imprimir la
usuario, utilizando el ID del
información de
usuario y nombre.
usuario y grupo
Después del nombre de
usuario, aparece el grupo
principal, indicando tanto por
el ID como por el nombre del
grupo.

Hay dos tipos de variables en el sistema. Locales y de entorno.

VARIABES DE ENTORNO
$PATH Contiene una lista que define a la Shell en que
directorios encontrar comandos.
$HOME
$HISTSIZEd Cuantos comandos almacenar en la lista del
historial.

Si se quieren utilizar programas personalizados se deben de añadir al PATH. Es decir, si tenemos


esta ruta /usr/bin/custom y queremos añadirla bastaría con hacer:

PATH = /usr/bin/custom:$PATH

Alias

Se pueden poner comandos largos en una secuencia de letras abreviadas llamada salias.
Por ejemplo. “ls -l” con poner “ll” el shel lo interpreta como tal.

Para asignar un alias es . Ejemplo:

- alias aliasnombre=”ps -aux”

importante es saber que de esta forma los alias creados permanecerán creados durante la sesión
de ese Shell presente.

Funciones

Las funciones se utilizan en los scripts para ejecutar varios comandos.

Su sintaxis es la siguiente :

function_name ()
{ comandos
}

- En function_name deberá de ir el nombre que se le quiera dar a la función.

- En comandos pues los comandos.

Un ejemplo de función sería:

Mi_reporte () {

ls

date

pwd

Comillas

“” Las dobles comillas.

Las dobles comillas pueden utilizarse para que el Shell no interprete metacaracteres o símbolos
especiales de forma literal. Por ejemplo echo “Un asterisco es *” . Lo sacaría normal.

Sin embargo echo “mi ruta es $PATH” interpretaría la variable global literal.

Para que no la pillase utilizaríamos comillas simples ‘$PATH‘no interpretaría la variable global

Luego hay otro caso en el que en esta frase:

echo El servicio cuesta $1 y la ruta es $PATH .

Podría querer que no interpretase un dólar y si $PATH. Entonces utilizaría “/”.


echo El servicio cuesta /$1 y la ruta es $PATH

comillas inversas

Si quiero ejecutar un comando dentro de un echo. Ejemplo:

echo hoy es date

La salida del comando será literalmente “hoy es date” pero yo quiero que lo ejecute, así que utilizo
las comillas inversas. Ejemplo:

echo hoy es `date`

De esta forma ejecutara el comando date.

Punto y coma

Si queremos ejecutar una secuencia de comandos independientes unos de los otros sería con el
carácter “;”. Ejemplo:

cal 1 2030; cal 2 2030; cal 3 2030

Doble ampersand &&

Actúa como un “y” lógico. Si el primer comando se ejecuta, lo hará. Si no lo hace el primero, el
segundo tampoco lo hará.

Tubería doble ||

Con la tubería doble, si el primer comando se ejecuta correctamente, se omite el segundo


comando; si el primer comando falla, entonces se ejecuta el segundo comando. En otras palabras,
esencialmente le está diciendo al shell: "Ejecute este primer comando o el segundo".

True y false.

Al parecer son 2 comandos que tienen ese mismo valor que define su nombre. Viene bien para
hacer scripts. Por ejemplo:

False && echo hola  No ejecutará nada porque el primer valor es falso.

Estructura de directorios Windows:


Estructura de directorios de un Linux:
- Home: Hay un directorio de cada usuario del sistema aquí.

Archivos ocultos

- .bashrc : archivo en el directorio de inicio personaliza características del shell, como crear
o modificar variables y alias.
Caracteres globales
echo etc/t*  Todos lo archivos que comienzan por la letra “t”.

echo etc/*.d  en este ejemplo mostraría todos los archivos que terminan con extensión ”.d”

/etc/[gu]*  patrón coincide con cualquier archivo que comience con un


carácter go uy contenga cero o más caracteres adicionales.

/etc/*[0-9]*  muestra cualquier archivo que contenga al menos un número.

El carácter de signo de exclamación !se usa junto con los corchetes para negar un rango. Por
ejemplo, el patrón

/etc/[!at]*  Cualquier archivo que no comience por “a” o “t”.

IMPORTANTE

Hay una solución simple a este problema: use siempre la -d opción con globs, que le dice al ls
comando que muestre el nombre de los directorios, en lugar de su contenido.

Copiar archivos (cp)


cp /etc/hosts ~  Copia “hosts” a la carpeta de inicio del usuario.

Descomprimir y comprimir

gzip <nombre_archivo>

gunzip <nombre de archivo>


bzip2 <nombre_archivo>

bunzip2 <nombre_archivo>

Archivar archivos
tar -c  Crear archivo
-f -> Usar archivo de
almacenamiento
-z  Para comprimir o
descomprimir. Comprimir más .
-t  Para ver que hay dentro. Listar
archivos de un archivo.
-x Extraer archivos de un archivo
Ejemplos: tar -cf <nombre_archivo> <archivo a
comprimir>
tar -cf fotos_jesus fotos_*

Para archivos winodws:


zip <nombre_archivo>

unzip <nombre_archivo>

Comando <less> y <more>

Comandos para mostrar el texto de un archivo junto al comando <cat> de una forma páginada.

Comandos <head> y <tail>

head y tail. Son comandos para mostrar las líneas de comienzo o final de un archivo. Se le puede
especificar el número poniendo un número.

Ejemplo:

$tail -5 <nombre_archivo>

Estos comandos también se puede aplicar a la salida de otros comandos para hacer todo de una
forma más ordenada. Ejemplo:

ls /etc | nl | tail -5  Se mostraría de una forma enumerada y solo los últimos cinco.
Redirección ENTRADA/SALIDA.

Los comandos cuando se ejecutan arrojan un resultado. Ya sea error o su cometido. Nosotros
podemos redireccionar ese resultado a un archivo por ejemplo con los caracteres. <>

Una forma de rederigir un texto sería

$ echo “gilipollas” > ejemplo.txt

Si queremos que no se sobre escriba y conservar el contenido anterior , se utilizará:

$echo “trozo de mierda” >> ejemplo.txt

En otro caso, cuando se ejecuta un comando erróneamente, en la terminal sale un mensaje de error.
Podemos redirigir ese mensaje de error a un archivo y que no salga impreso en la pantalla, para ello
ejecutaremos por ejemplo:

$ls –ssd 2>error.txt

Comando tr

Si por ejemplo quiero poner una línea de un archivo de teto en mayúscula, haría:

$tr ‘az’ ‘AZ’

Este comando no admite argumentos de nombre de archivo. Por lo que si se quiere pasar uno y guardar
habría que hacerlo tal que así.

$tr ‘az’ ‘AZ’ < archivo.txt > nuevo.archivo

Comando sort

Sirve para ordenar alfabéticamente un archivo.

$head -5 /etc/passwd > mypassword

$sort mypassword

Comando curt

Este comando vale para sacar extractos de texto.

-d  Es un parámetro para indicarle un delimitador como puede ser “;”

-f  opción puede especificar qué campos mostrar, ya sea como un rango con guión o una lista separada
por comas .Ejemplo: cut -d: -f1,5-7 mypasswd
Comando FIND

Como su propio nombre indica sirve para encontrar.

Find <ruta> <parámetros>

Example:

$find ~ -name “*bash*”

En este caso find /etc -name hosts obtenemos dos resultados. Uno true y el false, es decir el error de
permisos, así que si queremos deshacernos de la parte impresa que muestra el error, hacemos:

$find /etc/ -name hosts 2> error.txt

Así nos muestra el resultado limpio.

El comando test.

test -f /dev/ttyS0 0 si el fichero existe


test ! -f /dev/ttyS0 Si el fichero no existe
test -d /tmp Si el directorio existe
test -x `which ls` Sustituye la ubicación de ls entonces test usuario
puede ejecutar
test 1 -eq 1 0 si el número comparación tiene existo
test ! 1 -eq 1 0 si la comparación falla
Test 1 -ne 1 Para la desigualdad numérica
test “a” = “a” Si la comparación de cadena tiene éxito.
test “a” != “a” 0 si las cadenas son diferentes
test 1 –eq 1 –o 2 –eq 2 -o es o. Cualquiera puede ser el mismo
test 1 –eq 1 –a 2 –eq 2 -a es AND: ambos deben ser iguales.

En vez de poner “test” se puede sustituir por un [] en plan.

if [ “$1” = “hola” ]; then

echo “hola”

elif [“$1” = “adios”]; then

echo “encantado d ehaberte conocido”

echo “adios”

else

echo “no te entiendo capullo”

fi
Declaración case

#!/bin/bash

Case “$1” in

Hola)

echo “hola”

;;

Adiós)

echo “encantado de haberte conocido”

echo “espero volver a verte”

;;

*)

Echo “No entendí eso”

esac

Bucles “for” y “while”.

For : los bucles se utilizan cuando tuene una colección finita sobre la que desea iterar.

#!/bin/bash

SERVERS=”Servera serverb serverc”

For S in $SERVERS; do

Echo “hacer algo a $S”


While | Es en plan mientras una condición se verdadera sigue haciendo cosas.

#!/bin/bash #!/bin/bash
i=0 Echo “Introduce un número mayor que 100”
while [ $i -lt 10]; do Read num
echo $i While [ $num -le 100 ]
i=$(( $i + 1 )) Do
done Echo “$num no es más grande que 100”
echo “terminó de contar” Echo “¿Eres un poco tonto, no?”

Read num
Un ejemplo de for muy utilizado sería:
Done

For num in `seq 1 12` Echo “Finalmente lo lograste, enhorabuena tontico”

Do

Touch prueba$num

Doney

COMANDOS PARA CONOCER EL SISTEMA

arch Para saber que arquitectura


soporta el procesador

lscpu Para obtener más información


acerca del procesador

Free -m Para ver la cantidad de RAM

lspci Para ver los dispositivos


periféricos conectados al
sistema.

lsusb Para ver los dispositivos usbs


conectados al sistema
fdisk Mostrar información sobre las
particiones.

gparted

Directorio /proc/
Este directorio es donde se almacenan ficheros con información del hardware del sistema. Por
ejemplo, muchos comandos como “free”, “top”, “mount”,”umount” su funcionamiento depende
de los archivos de este directorio.

Dentro de /proc/ hay subdirectorios como /sys/ donde se alojan ficheros cargados en memoria ,
estos si que pueden ser modificados por el usuario raíz.

En /proc/ también se aloja la configuración actual del kernel.

ls /proc/cmdline  información que se pasó al núcleo cuando se inició por primera vez.

ls /proc/meminfo  información sobre el uso de la memoria por parte del kernel.

ls /proc/modules  lista de módulos actualmente cargados en el kernel para agregar


funcionalidad adicional.

/proc/sys  La modificación de los archivos que se alojan en este directorio cambian el


comportamiento del kernel.

El comando ps se utiliza para ver los procesos del sistema.

Si utilizamos <$ps --forest  Obtendremos una listado de forma de árbol genealógico.

Para visualizar todos los procesos , debemos utilizar:

$ps -aux

$ps -ef

Tened en cuenta que saldrán muchos procesos y que será mejor filtrar si se quiere uno en
particular. Para ello utilizaremos el comando “grep”. Ejemplo:

$ps -aux | grep Firefox  firefoz como palabra clave para localizar dicho proceso

Para ver los procesos que esta ejecutando otros usuarios, en el caso de que seamos
administradores, bastaría con indicarlo con el parámetro adecuado.

$ps -u root por ejemplo.

Comando top este nos muestra los procesos y cu carga en la CPU. De una forma ascendente, es
decir, los que más ocupan estarán los primeros.
Cuando lo ejecutamos pordemos pulsar las teclas “k” para matar un proceso o “R” para reasignarle
una prioridad.

Archivos de registro

Los procesos ejecutados producen una salida que describe cómo se jecutan y los errores, aunque
no se muestre en la pantalla impreso. En vez de ello, se almacena en unos archivos, estos, son
conocidos como archivos de registro.

Estos archivos son útiles, por ejemplo, se pueden consultar para ver si se ha tenido acceso
autorizado o no.

Los demonios de registro syslogd y klogd trabajan juntos, aunque en las distribuciones recientes
solo hay uno llamado rsyslogd que combina a los 2 en uno solo.

Y en las aún más recientes, aquellas basadas en systemd, el demonio de resgistro se llama journald
y os registros están diseñados para permitir la salida de texto.

Para ver el métodos estándar de journald hay que usar el comando journalctl.

$journalctl

 Los archivos de registro casi siempre se colocan en /var/log

Los archivos más comunes que se encuentran en este directorio suelen ser:

o Boot.log  Los mensajes generados como servicios se inician durante el inicio del
sistema.

o Cron  Mensajes generados por le crond demonio para que los trabajos se
ejecuten de forma recurrente.

o Dmesg  Mensajes producidos por el kernel en el arranque del sistema.

o Maillog  Mensajes producidos por el mail Daemon para mensajes de correo


electrónico enviados o recibidos.

o Messages Mensajes del kernel y otros procesos que no pertenecen a otra parte. A
veces de nombra syslog en lugar del messages Daemon que escribe este archivo.

o Secure  mensajes de procesos que requerían autorización o autentificación.

o Journal mensajes de la configuración por defecto del systemd-


journald.service ;se puede configurar en el /etc/journald.conf archivo entre otros
lugares.

o Xorg.0.log Mensjaes del servidor X Windows ( GUI)


Estándar de jerarquía del sistema de archivos (FHS)
Un estándar es un conjunto de reglas o pautas que se recomienda seguir.

El estándar FHS clasifica cada directorio del sistemas de varias maneras.:

 Un directorio se puede clasificar como compartible o no.

 El directorio se coloca en una categoría de tener archivos estáticos ( su contenido no varía)


o archivos variables.

Para realizar esta clasificación, es necesario hacer referencia a subdirectorios por debajo del nivel
superior e directorios. Por ejemplo:

/var/ directorio en sí no se puede categorizar como compartible o no compartible, pero uno de


sus subdirectorios, el /var/mail directorio, es compartible. Por el contario, /var/lock directorio no
debe de ser compartible.

Directorio Contenido
/ La base de la estructura, o raíz del sistema de
archivos, este directorio unifica todos los
directorios independientemente de si son
particiones locales, dispositivos extraíbles o
recursos compartidos en red.

/bin Binarios esenciales como los comandos ls, cp y


rm y ser parte del sistema de archivos raíz.

/boot Archivos necesarios par ainiciar el sistema,


como el kernel de Linux y los archivos de
configuración asociados.

/dev Archivos que representan dispositivos de


harware y otros archivos especiales, como los
archivos /dev7null y /dev/zero

/etc Archivos de configuración de host esenciales,


como los archivos /etc/hosts o /etc/passw

/home Directorios de inicio de usuario

/lib/ Bibliotecas esenciales para admitir los archivos


ejecutables en los directorios /bin y /sbin

/lib64/ Bibliotecas esenciales construidas para una


arquitectura especifica.

/media Punto de montaje para medios extraíbles


/mnt Punto de montaje para montar
temporalmente sistemas de archivos de
forma manula

/opt Ubicación de instalación de software de


terceros opcional

/proc Sitema de archivos virtual para que el kernel


reporte información del proceso, así como
otra información.

/root Directorio de inicio del susuario raíz

/sbin Binarios esenciales del sistema utilizados


principalmente por usuario root

/sys Sistema de archivos virutal para obtener


información sobre los dispositivos hardware
conectados al sistema

/srv Ubicación donde se pueden alojar los servicios


específicos del sitio

/tmp Directorio donde todos los usuarios puedne


crear archivos temporales y que se supone
que debe borrarse en el momento del
arranque

/usr Segunda jerarquía.

Archivos no esenciales para uso multiusuario

Usr/local Tercera jerarquía.

Archivos de software que no se originan en la


distribución

/var Cuarta jerarquía

Archivos que cambian con el tiempo

/var/cache Rchivos utilizados para almacenar en caché los


datos de la aplicación

/var/log La mayoría d ellos archivos de registgro

/var/lock Bloquear archivos para recursos compartidos

/var/spool Archivos de cola para imprimir y enviar por


correo

/var/tmp Archivos temporales que se conservarán entre


reinicios

Herramientas de red

ifcongig Mostrar información acerca de la


configuración de la red.

ip <opciones> COMANDO OBJETO Un ejemplo sería ip addr show

route Es para ver una tabla que describe dónde se


envían los paquetes de red.

$route -n  Muestra lo mismo pero solo con


datos númericos.

ip route show Es el que esta sustituyendo a “route”

netstat Herramienta que proporciona información


sobre la red. Por ejemplo sobre las
conexiones de red, así como la tabla de
enrutamiento.

Netstat -tln Para ver todos los puertos abiertos de un


hosts.

ss Este comando intenta ser el reemplazo del


comando “netstat” y sirve para ver la
conexiones remotas del host con otros hots.

dig Comando para hacer consultar DNS para


determinar si la información necesaria esta
disponible en el servidor.

Host Funciona con DNS para sociar un nombre de


host con una dirección IP.

Ejemplo: $host example.com

$host 192.168.1.2

hosts -t CNAME example.com

host -t SOA example.com

Ejecución de comandos privilegiados.


El uso de sudo para ejecutar un comando administrativo genera una entrada en un archivo de
registro. Cada entrada incluye el nombre del usuario que ejecutó el comando, el comando que se
ejecutó y la fecha y hora de ejecución.

El etc/passwd archivo define parte de la información de las cuentas de usuarios.

Cada línea contiene información relativa a un solo usuario. Los campos están separados por
caracteres de 2 puntos.

El primer campo es el nombre del usuario.

En un momento, la contraseña del usuario se almacenó en esta ubicación, sin embargo, ahora x en
este campo indica que la contraseña esta en etc/shadow

A cada cuenta se le asigna una identificación de usuario ( UID). El sistema utiliza el UID y no los
nombres de usuario.
Contraseñas

Las contraseñas están almacenadas en /etc/shadow.

En el archivo podremos observar campos separados por dos puntos. Cada uno de los campos
significa:

Este campo contiene el nombre del usuario de la cuenta.


 Hay que tener en cuenta que los (UID) del 1- 499 son cuentas del sistema y que stán llevan
una pre-configuración establecida diferente a las de las cuentas normales. Por ejemplo. En
el /etc/passwd se puede observar que no tiene directrio de inicio de sesión o que en el
/etc/shadow de contraseña tiene un * . O que tienen un programa de no inicio de sesión
en el campo del Shell.

Hay
que recordar siempre que el nivel de acceso al sistema no depende únicamente de los
privilegios que tenga la cuenta de usuario sino también del grupo al que pertenezca.

/etc/group

¡
Creación de un grupo

$groupadd -g (Poner identificación UD que se quiera) <nombre del grupo>

Para modificar un grupo:

$groupmod -n ( cambiar nombre de gurpo)

Eliminación del grupo

$groupdel  Se puede eliminar con este comando siempre que dicho grupo no sea el principal
de un usuario.

Creación de usuarios

$useradd

-D ver o cambiar algunos de los valores predeterminados por el useradd.

Eso también se puede ver y modificar en el /etc/default/useradd

-g  Para especificar grupo principal al usuario

-b  permite usar un grupo de directorio base diferente al predeterminado al crear una


nueva cuenta de usuario.

-s  permite usar un Shell de inicio de sesión diferente al predeterminado al crear una


nueva cuenta de usuario.

-k  opción que permite usa run SKEL directorio diferente al predeterminado al crear una
nueva cuenta de usuario.
Archivos de configuración e usuario.

/etc/login.defs

Contiene valores que se aplican de forma predeterminada a los nuevos usuarios que se
crea por useradd.

Este archivo contiene muchos comentarios y líneas en blanco, por lo que para ver las
líneas que no son comentarios en blanco, usar:

$grep -Ev ‘^#|^$’ /etc/login.defs


Cambio de grupos

Si quiero cambiar de grupo principal, bastará con utilizar el comando:

$newgrp <nombre_grupo>

Si quiero saber los grupos a los que pertenezco de una forma rápida, ejecuto:

$groups

Hay que tener en cuenta que para cambiar de usuario principal permanentemente hay que
hacerlo con privilegios de root. El comando sería:

$usermod -g <nombre del grupo> <nombre d eusuario>

Cambiar la propiedad del usuario

Chown

Hay tres formas de utilizar este comdando.

- El primer métoo se usa para cambiar solo el usuario propietario del archivo.
$chown jane /tmp/filetest1
- El segundo método es cambiar tanto el usuario como el grupo.Hay que separar el usuario
y el grupo con 2 puntos.

$chown jane:usuarios /tmp/filetest2

- Si un usuario no tiene privilegios d eraíz, puede usar el tercer método para cambiar el
propietario del grupo de un archivo al igual que el chgrp comando. Para una chown solo para
cambiar la propiedad del grupo del archivo, use dos puntos cmo prefijo del nombre del grupo.

$chown :users /ruta/archivo

Permisos
Un buen ejemplo para comprenderlo:
Otro ejemplo:

Otro ejemplo:
Otro ejemplo:

Otro ejemplo:
Cambio de permisos.

Chmod

u  Propietario del usuario

g  Dueño del grupo

o  otros

a  todos

Luego hay que legir uno de los siguiente soperadores para indicar cómo modificar los permisos:

+ agregar

- Retirar
- = es igual

Por último, usar los siguientes caracteres para especificar los tipos de permisos que desea
cambiar:

R  leer

W  escribe

X  ejecutar

Ejemplo:

$chmod g+w abc.txt solo se cambio el permiso del propietario del grupo. Tdos lo demás
permisos permanecieron como estaban antes de la ejecución de chmod.

Se puede combinar valores para realizar varios cambios e n los permisos de archivo:

$chmod ug+x, o abc.tx

Agrega permisos de jecución al propietario del usuario y al propietario del grupo y eliminar
permiso de lectura para otros.

$chmod u=rx abc.txt

Agrega permisos específicos y hace que se eliminen los no mencionados. Por ejemplo aquí solo al
propietario del archivo se le dan permisos de ejecución y lectura, eliminando el permiso de
escritura.

Método numérico
SETUID

Se establece en un archivo binario ejecutable. Éste se ejecuta como el propietario del archivo y no
como el usuario que lo ejecutó.

Un ejemplo sería cuando utilizamos el comando passwd, un usuario que no sea root, no puede
acceder a /etc/shadow pero sin embargo al utilizar este comando modifica este archivo ¿Se
entiende o eres gilipollas?

El passwd tiene un conjunto de permisos especiales setuid


Una minúscula “s” significa que tanto el setuid como el permiso de ejecución están configurados,
mientras que una mayúscula “S” significa que solo se configura el setuid y no el permiso de
ejecución del usuario.

Los permisos especiales se pueden configurar con el chmod comando:

<archivo> chmod u+s

SETGID

Es similar al SETUID solo que este permite ejecutar un arhico binario ejecutable de una manera
que les proporciona acceso de grupo adicional.

Un buen ejemplo sería archivo /usr/bin/wall

Punta adhesiva

Se utiliza para que otros usuarios eliminen archivos que no son de su propiedad en un directorio
compartido.

Un buen ejemplo de sticky bit serían los directorios /tmp, /var/tmp . En estos directorios cualquier
usuario puede crear archivos de forma temporal.

También podría gustarte