1. LINUX Básico
TAKASHI SUGASAWA
LINUX Básico (7. Shells(2)) 1
2. Programa del curso
1. Introducción a LINUX
2. Operación básica de LINUX
3. Operación de archivos y directorios
4. Editor vi
5. Comprensión del sistema de ficheros
6. Shells(1)
7. Shells(2)
8. Shells(3)
9. Otros comandos
LINUX Básico (7. Shells(2)) 2
3. LINUX Básico
7. Shells(2)
Índice
7.1 Comandos y programas
7.2 Idea de procesos
7.3 Control de procesos
7.4 Autoridad de procesos
LINUX Básico (7. Shells(2)) 3
4. 7.1 Programas y comandos
(1) Programas y comandos interiores del shell
• Normalmente los comandos son programas, su
sustancia es un archivo ejecutable.
• Pero, algunos comandos son comandos interiores del
shell, no tienen sus archivos propios.
programas (cat, cp, mv, rm, mkdir, ...)
comandos
comandos
(cd, exit, logout, umask, ...)
interiores del shell
LINUX Básico (7. Shells(2)) 4
5. • Para saber la sustancia de un comando, utilizamos el
comando “which”.
(33) which Busca el directorio de un comando.
(ej.) which cat
[usr000@linuxpc usr000]$ which cat
/bin/cat la sustancia del comando “cat”
[usr000@linuxpc usr000]$ ls -l /bin/cat
-rwxr-xr-x 1 root root 14364 feb 18 2003 /bin/cat
[usr000@linuxpc usr000]$ file /bin/cat presenta el tipo del archivo.
/bin/cat: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for
GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped
[usr000@linuxpc usr000]$ which cd
/usr/bin/which: no cd in (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
:/home/usr000/bin)
“cd “ es el comando
interior del shell.
(34) file Determina el tipo de un archivo.
(ej.) file arch1
LINUX Básico (7. Shells(2)) 5
6. 7.1(2) PATH
• “PATH” es un variable en el shell, y contiene los
directorios en los que el shell busca comandos.
• “PATH” tiene una cadena delimita por signos de dos
puntos “:” que apuntan a todos los directorios que
contienen los programas que usa usted.
[usr000@linuxpc usr000]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/usr000/bin
• El orden de la lista es importante, determina cuál es se
buscará primero.
1ro: /usr/local/bin
2do: /bin
3ro: /usr/bin
4to: /usr/X11R6/bin
5to: /home/usr000/bin
LINUX Básico (7. Shells(2)) 6
7. • Por ejemplo, cunado ejecutamos “cal”, ...
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/usr000/bin
1 2 3
1 busca en el “/usr/local/bin”, pero no está.
2 busca en el “/bin”, pero no está.
3 busca en el “/usr/bin”, aquí está y ejecuta “/usr/bin/cal”.
• O bien, podemos poner el nombre de la ruta de acceso
(relativo o absoluto) del programa directamente.
[usr000@linuxpc usr000]$ /usr/bin/cal
septiembre de 2004
do lu ma mi ju vi sá
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
LINUX Básico (7. Shells(2)) 7
8. • Si ejecutamos un programa que no esté en los
directorios de “PATH”, ... un comando inexistente
[usr000@linuxpc usr000]$ comando
-bash: comando: command not found
[usr000@linuxpc usr000]$ pwd ahora está en el directorio base.
/home/usr000
[usr000@linuxpc usr000]$ cp /bin/date date2 crea una copia de
[usr000@linuxpc usr000]$ ls -l el comando “date”.
total 40
-rwxr-xr-x 1 usr000 usr000 38620 sep 18 13:46 date2
[usr000@linuxpc usr000]$ date2
-bash: date2: command not found pero no se puede ejecutar,
[usr000@linuxpc usr000]$ ./date2 porque “date2” no está en
sáb sep 18 13:59:08 ECT 2004 los directorios de “PATH”.
para ejecutar “date2”, ruta de acceso es necesario.
[usr000@linuxpc usr000]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/usr000/bin
[usr000@linuxpc usr000]$ pwd
/home/usr000 va a crear este directorio
[usr000@linuxpc usr000]$ mkdir bin
[usr000@linuxpc usr000]$ mv date2 bin y desplazar adentro.
[usr000@linuxpc usr000]$ ls -l
total 4
drwxrwxr-x 2 usr000 usr000 4096 sep 18 14:01 bin
[usr000@linuxpc usr000]$ ls -l bin
total 40
-rwxr-xr-x 1 usr000 usr000 38620 sep 18 13:46 date2
[usr000@linuxpc usr000]$ date2 ya se puede ejecutar
sáb sep 18 14:03:06 ECT 2004 “date2” sin ruta de acceso.
LINUX Básico (7. Shells(2)) 8
9. • Si es necesario, podemos cambiar el valor de “PATH”.
ahora está en el directorio base.
[usr000@linuxpc usr000]$ pwd
/home/usr000
crea una copia de
[usr000@linuxpc usr000]$ cp /bin/date date3 “date” otra vez.
[usr000@linuxpc usr000]$ ls -l date3
-rwxr-xr-x 1 usr000 usr000 38620 sep 18 14:20 date3
[usr000@linuxpc usr000]$ date3 no se puede ejecutar,
-bash: date3: command not found sin ruta de acceso.
[usr000@linuxpc usr000]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/usr000/bin
[usr000@linuxpc usr000]$ PATH=$PATH:. agrega “.” al “PATH”.
[usr000@linuxpc usr000]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/usr000/bin:.
[usr000@linuxpc usr000]$ date3
sáb sep 18 14:21:02 ECT 2004 se ha añadido
ya se puede ejecutar
“date2” sin ruta de acceso.
Es conveniente tener “.” en el “PATH”, especialmente al desarrollar
programas o scripts. Pero, el valor original de “PATH” no tiene “.”,
a causa de la seguridad. Por que es posible que ejecutemos un
comando equivocado o venenoso.
LINUX Básico (7. Shells(2)) 9
10. 7.2 Idea de procesos
(1) Comprensión de los procesos
• En el LINUX, a un programa en ejecución se le conoce
como proceso.
• Los archivos ejecutables son las sustancias estáticas de
programas.
• Los procesos son las sustancias dinámicas de programas.
sustancia estática sustancias dinámicas
programa
ejecución
archivo ejecutable ejecu proceso 1
ción
proceso 2
• Ya que LINUX es un sistema de multitareas, muchos
procesos pueden ejecutarse simultáneamente.
• Podemos crear múltiples procesos del mismo archivo
ejecutable.
LINUX Básico (7. Shells(2)) 10
11. 7.2(2) ID de proceso
• Para distinguir entre los procesos, LINUX asigna a cada
nuevo proceso una identificación única llamada
identificación de proceso (ID de proceso).
• ID de proceso es sólo un número que identifica con
precisión cada proceso.
• Para observar los procesos que corren en el sistema,
enviamos el comando “ps”. Dado que los procesos
avanzan con rapidez, este informe es sólo una vista
instantánea de lo que había sucedido cuando se
preguntó.
(35) ps Informa el estado de los procesos.
(ej.) ps ; los procesos del mismo terminal.
ps -u ; detalladamente.
ps -x ; los procesos de otros terminales también
ps -aux ; todos los procesos en el sistema.
LINUX Básico (7. Shells(2)) 11
12. [usr000@linuxpc usr000]$ ps Sin argumentos, presenta brevemente
PID TTY TIME CMD
8763 pts/0 00:00:04 bash sólo los procesos del mismo terminal.
9137 pts/0 00:00:00 ps
ID de proceso Login Shell
Estado del proceso
Con “-u”, presenta la información detallada. S: Sleep (durmiente)
R: Run (ejecutable)
[usr000@linuxpc usr000]$ ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
usr000 8763 0.0 2.2 4444 1388 pts/0 S 11:21 0:04 -bash
usr000 9138 0.0 1.0 2592 636 pts/0 R 17:18 0:00 ps -u
Propietario del proceso
Con “-x”, presenta los procesos de su usuario, incluido los procesos de otro
terminal.
Nombre del terminal
[usr000@linuxpc usr000]$ ps -ux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
usr000 8763 0.0 2.2 4444 1388 pts/0 S 11:21 0:04 -bash
usr000 9088 0.0 2.1 4416 1348 pts/1 S 16:53 0:00 -bash
usr000 9139 10.0 1.0 2596 636 pts/0 R 17:18 0:00 ps -ux
terminales son diferentes
LINUX Básico (7. Shells(2)) 12
14. 7.2(3) Procesos de programas
• Al hacer Login, el sistema inicia un proceso de Login Shell
automáticamente.
[usr000@linuxpc usr000]$ ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
usr000 8763 0.0 2.2 4444 1388 pts/0 S 11:21 0:04 -bash
usr000 9138 0.0 1.0 2592 636 pts/0 R 17:18 0:00 ps -u
• Cuando ejecutamos un programa en el shell, el shell generalmente
arranca un proceso nuevo, espera la terminación del programa.
Proceso de
Login Shell
creación
Login Proceso de “ps”
8763
creación
espera 9138 este instante
Después de ejecución
Al hacer Logout, este del programa, el
proceso se extingue. proceso se extingue.
LINUX Básico (7. Shells(2)) 14
15. 7.3 Control de procesos
(1) Disposición de procesos en segundo plano
• En el shell, un programa se ejecuta en primer plano normalmente.
Hasta la terminación del programa, no podemos ejecutar otro
programa.
(36) sleep Suspende la ejecución durante un intervalo.
(ej.) sleep 5 ; suspende el ejecución por 5 segundos
[usr000@linuxpc usr000]$ sleep 5 Durante 5 segundos no
podemos hacer nada.
• Para colocar un proceso en segundo plano, es necesario utilizar
el signo “&” como último carácter de la línea.
ID de trabajo
[usr000@linuxpc usr000]$ sleep 5 &
[1] 13403 ID de proceso
[usr000@linuxpc usr000]$ Al instante, podemos
ejecutar otro comando.
Después al operar el shell, hay una avisa de la terminación del proceso en la
pantalla.
[1]+ Done sleep 5
LINUX Básico (7. Shells(2)) 15
16. • Podemos confirmar los procesos en segundo plano con el
comando “ps” o “jobs”.
(37) jobs Presenta la información de los trabajos del
shell de segundo plano.
(ej.) jobs
[usr000@linuxpc usr000]$ sleep 15 & crea un proceso
[1] 8375 en segundo plano.
[usr000@linuxpc usr000]$ ps
PID TTY TIME CMD
8336 pts/1 00:00:00 bash
8375 pts/1 00:00:00 sleep aquí hay
8376 pts/1 00:00:00 ps
[usr000@linuxpc usr000]$ jobs
[1]+ Running sleep 15 & aquí hay también
[usr000@linuxpc usr000]$
[1]+ Done sleep 15 aviso de la terminación
[usr000@linuxpc usr000]$ ps
PID TTY TIME CMD
8336 pts/1 00:00:00 bash
8377 pts/1 00:00:00 ps ahora no está
[usr000@linuxpc usr000]$ jobs
[usr000@linuxpc usr000]$
LINUX Básico (7. Shells(2)) 16
17. 7.3(2) Suspensión de procesos
• Podemos suspender el proceso de primer plano por medio de
teclear ^z (Control-z).
[usr000@linuxpc usr000]$ vi arch1
iniciar el editor “vi”
Me llamo Takashi Sugasawa.
~
~
~
~
~
~ teclear “^z”
~
~
~
~
[1]+ Stopped vi arch1
[usr000@linuxpc usr000]$ ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
usr000 13945 0.4 2.2 4452 1384 pts/0 S 21:06 0:00 -bash
usr000 13976 0.1 1.6 4128 1004 pts/0 T 21:06 0:00 vi arch1
usr000 13977 0.0 1.0 2588 632 pts/0 R 21:08 0:00 ps -u
[usr000@linuxpc usr000]$ jobs detenido
[1]+ Stopped vi arch1
El proceso existe, pero no está en acción.
LINUX Básico (7. Shells(2)) 17
18. • Para resucitar el proceso detenido hacia primer plano, usamos el
comando “fg”.
(38) fg resucitar un proceso hacia primer plano.
(ej.) fg ; resucitar el proceso últimamente detenido.
fg 1 ; resucitar el proceso de que ID de trabajo es 1.
[usr000@linuxpc usr000]$ jobs
[1]+ Stopped vi arch1 un proceso detenido
[usr000@linuxpc usr000]$ fg 1
“1” se puede omitir
Me llamo Takashi Sugasawa.
~
~
~
~
~
~
~
~
~ se ha resucitado.
~
LINUX Básico (7. Shells(2)) 18
19. • Para resucitar el proceso detenido hacia segundo plano, usamos el
comando “bg”.
(38) bg Resucita un proceso detenido hacia segundo
plano.
(ej.) bg ; resucitar el proceso últimamente detenido.
bg 1 ; resucitar el proceso de que ID de trabajo es 1.
[usr000@linuxpc usr000]$ sleep 60
teclear “^z”
[1]+ Stopped sleep 60
[usr000@linuxpc usr000]$ jobs
[1]+ Stopped sleep 60 detenido
[usr000@linuxpc usr000]$ bg
[1]+ sleep 60 &
[usr000@linuxpc usr000]$ jobs
[1]+ Running sleep 60 & está en acción en
[usr000@linuxpc usr000]$ fg
sleep 60 segundo plano
• Usando el comando “fg”, podemos cambiar el estado de un
proceso desde segundo plano hasta primer plano también.
LINUX Básico (7. Shells(2)) 19
20. • Es imposible poner un programa como “vi” que necesiten la
entrada del terminal o teclado. Aun cuando intente esto, el
proceso se va a suspender al instante.
[usr000@linuxpc usr000]$ jobs
[1]+ Stopped vi arch1 “vi” está suspendido.
[usr000@linuxpc usr000]$ bg trata de resucitar el proceso
[1]+ vi arch1 &
[usr000@linuxpc usr000]$ jobs hacia segundo plano.
[1]+ Stopped vi arch1 pero, no puede.
LINUX Básico (7. Shells(2)) 20
21. 7.3(3) Terminación de procesos
• Tecleando “^c” (Control-c), podemos terminar el proceso de
primer plano.
[usr000@linuxpc usr000]$ sleep 10000
teclear “^c”
[usr000@linuxpc usr000]$
• El comando “kill” puede terminar los procesos a la fuerza.
(39) kill Envía una señal a los procesos en ejecución, por
lo general, les da por terminado.
(ej.) kill 1234 ; termina un proceso de que ID de
proceso es 1234.
kill -KILL 1234 ; termina un proceso de que ID de
proceso es 1234
incondicionalmente.
LINUX Básico (7. Shells(2)) 21
22. [usr000@linuxpc usr000]$ sleep 10000 & crea un proceso en
[1] 14087 segundo plano.
[usr000@linuxpc usr000]$ ps
PID TTY TIME CMD
13945 pts/0 00:00:02 bash
14087 pts/0 00:00:00 sleep aquí está
14088 pts/0 00:00:00 ps
[usr000@linuxpc usr000]$ kill 14087 mata el proceso
[1]+ Terminado sleep 10000
[usr000@linuxpc usr000]$ ps
PID TTY TIME CMD
13945 pts/0 00:00:02 bash
14089 pts/0 00:00:00 ps no hay
LINUX Básico (7. Shells(2)) 22
23. 7.4 Autoridad de procesos
(1) Propietario de procesos
• Cada proceso tiene su propietario. Normalmente el propietario de
un proceso es el usuario que ejecutó el programa.
[usr000@linuxpc usr000]$ which sleep
/bin/sleep
[usr000@linuxpc usr000]$ ls -l /bin/sleep
-rwxr-xr-x 1 root root 12444 feb 18 2003 /bin/sleep
[usr000@linuxpc usr000]$ whoami
usr000
[usr000@linuxpc usr000]$ sleep 1000 &
[1] 14745
[usr000@linuxpc usr000]$ ps -u -p 14745
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
usr000 14745 0.1 0.8 3780 528 pts/2 S 10:57 0:00 sleep 1000
propietario del proceso
• Cuando un proceso accede a un fichero, esto información se usa.
LINUX Básico (7. Shells(2)) 23
24. 7.4(2) Otros permisos de ficheros
• Ficheros tienen otros premisos, el bit SETUID (Set User ID) , el bit
SETGID (Set Group ID) y el bit STI (Sticky / pegajoso).
permiso de ejecución
STI - x
permisos del fichero (“ls -l”) - - x
-rwxrwxrwx activado T t
s: Si está activado tanto el bit SETUID como el
correspondiente de ejecutable.
S: Si está activado el bit SETUID pero no el
correspondiente de ejecutable.
s: Si está activado tanto el bit SETGID como el
permiso de ejecución correspondiente de ejecutable.
S: Si está activado el bit SETGID pero no el
- x correspondiente de ejecutable.
t: Si tanto el bit STI como el ejecutable para
- - x otros están activados.
activado S s T: Si el bit STI está activado pero el ejecutable
para otros no lo está.
SETUID o SETGID
LINUX Básico (7. Shells(2)) 24
25. Permisos octales absolutos de “chmod”
chmod modo archivo1 [archivo2 ...]
1000 Activación del bit STI
2000 Activación del bit SETGID
4000 Activación del bit SETUID
0100 Permiso de ejecución.
0200 Permiso de escritura. para el propietario
0400 Permiso de lectura.
0010 Permiso de ejecución.
0020 Permiso de escritura. para el grupo
0040 Permiso de lectura.
0001 Permiso de ejecución.
0002 Permiso de escritura. para todos los demás
0004 Permiso de lectura.
LINUX Básico (7. Shells(2)) 25
27. Formula de permisos relativo de “chmod”
chmod formula archivo1 [archivo2 ...]
Quién Operador Permiso
Quién Permiso
u el propietario. r Establece a lectura.
g el grupo. w Establece a escritura.
o todos los demás. x Establece a ejecución.
a todos los usuarios. s Establece el bit SETUID o SETGID
t Establece el bit STI
Operador
+ Agrega el modo.
- Retira el modo.
= Establece el modo absoluto.
LINUX Básico (7. Shells(2)) 27
28. [usr000@linuxpc usr000]$ chmod 755 sleep2
[usr000@linuxpc usr000]$ ls -l sleep2
-rwxr-xr-x 1 usr000 usr000 12444 feb 18 2003 sleep2
[usr000@linuxpc usr000]$ chmod u+s sleep2
[usr000@linuxpc usr000]$ ls -l sleep2
-rwsr-xr-x 1 usr000 usr000 12444 feb 18 2003 sleep2
[usr000@linuxpc usr000]$ chmod g+s sleep2
[usr000@linuxpc usr000]$ ls -l sleep2
-rwsr-sr-x 1 usr000 usr000 12444 feb 18 2003 sleep2
[usr000@linuxpc usr000]$ chmod +t sleep2
[usr000@linuxpc usr000]$ ls -l sleep2
-rwsr-sr-t 1 usr000 usr000 12444 feb 18 2003 sleep2
LINUX Básico (7. Shells(2)) 28
29. 7.4(3) SETUID
• Normalmente el propietario de un proceso es el usuario que
ejecutó el programa.
• Pero, si el bit SETUID del archivo del programa está activo, el
propietario del proceso va a ser el programa del archivo.
• Por ejemplo, el comando “passwd” tiene el bit SETUID activado.
[usr000@linuxpc usr000]$ ls -l /usr/bin/passwd
-r-s--x--x 1 root root 16336 feb 13 2003 /usr/bin/passwd
Este comando guarda las contraseñas en el archivo
“/etc/shadow”. Sin embargo, los usuarios ordinales no tienen
permisos, no pondrán cambiar su contraseña. Entonces,
utilizamos el bit SETUID. El propietario del proceso va a ser
“root”, el proceso puede editar el archivo “/etc/shadow”.
LINUX Básico (7. Shells(2)) 29
30. Hay un archivo “secreto” en el directorio base de “usr000”. Otros usuarios
excepto “usr000” no pueden leerlo con el comando “cat” normal.
[usr001@linuxpc usr001]$ ls -l /home/usr000/secreto
-r--r----- 1 usr000 usr000 43 sep 20 10:04 /home/usr000/secreto
[usr001@linuxpc usr001]$ whoami
usr001
[usr001@linuxpc usr001]$ cat /home/usr000/secreto
cat: /home/usr000/secreto: Permiso denegado
En el mismo directorio, hay un comando “cat-SUID” especial del comando “cat”,
que tiene el bit SETUID activado. Este comando se ejecuta en la autoridad del
usuario “usr000”.
[usr001@linuxpc usr001]$ ls -l /home/usr000/cat-SUID
-rwsr-xr-x 1 usr000 usr000 14364 feb 18 2003 /home/usr000/cat-SUID
Usando el comando “cat-SUID”, otros usuarios pueden leer el archivo “secreto”.
[usr001@linuxpc usr001]$ /home/usr000/cat-SUID /home/usr000/secreto
El contenido del este archivo es secreto...
LINUX Básico (7. Shells(2)) 30
31. 7.4(4) SETGID
• La idea de SETGID es similar a la de SETUID.
• Si el bit SETGID del archivo del programa está activo, el proceso
va a ser un miembro del grupo del archivo temporalmente.
Sobre el dicho archivo “secreto” en el directorio base del “usr000”...
[usr001@linuxpc usr001]$ ls -l /home/usr000/secreto
-r--r----- 1 usr000 usr000 43 sep 20 10:04 /home/usr000/secreto
[usr001@linuxpc usr001]$ cat /home/usr000/secreto
cat: /home/usr000/secreto: Permiso denegado
En el mismo directorio, hay otro comando “cat-SGID”, especial del comando
“cat” también, que tiene el bit SETGID activado. Este comando se ejecuta en
la autoridad del grupo “usr000”.
[usr001@linuxpc usr001]$ ls -l /home/usr000/cat-SGID
-rwxr-sr-x 1 usr000 usr000 14364 feb 18 2003 /home/usr000/cat-SGID
Usando el comando “cat-SUID” también, otros usuarios pueden leer el archivo
“secret”.
[usr001@linuxpc usr001]$ /home/usr000/cat-SUID /home/usr000/secreto
El contenido del este archivo es secreto...
LINUX Básico (7. Shells(2)) 31
32. 7.4(5) STI
• Por ejemplo, en el directorio “/home/tmp”, cualquiera puede crear
archivos y directorios.
[usr000@linuxpc usr000]$ ls -ld /home/tmp
drwxrwxrwx 2 root root 4096 sep 21 11:45 /home/tmp
[usr000@linuxpc usr000]$ ls -l /home/tmp/arch1
ls: /home/tmp/arch1: No existe el fichero o el directorio
[usr000@linuxpc usr000]$ date > /home/tmp/arch1
[usr000@linuxpc usr000]$ ls -l /home/tmp/arch1
-rw-rw-r-- 1 usr000 usr000 29 sep 21 11:45 /home/tmp/arch1
• Si quita el permiso de escritura para otros usuarios, puede
defender el contenido del archivo contra otros usuarios.
[usr001@linuxpc usr001]$ whoami
usr001 otro usuario
[usr001@linuxpc usr001]$ date >> /home/tmp/arch1
-bash: /home/tmp/arch1: Permiso denegado
LINUX Básico (7. Shells(2)) 32
33. • Sin embargo, el propietario no puede impedir que otros usuarios
eliminen el archivo, por que el directorio les da el permiso de
escritura.
[usr001@linuxpc usr001]$ whoami
usr001 otro usuario
[usr001@linuxpc usr001]$ ls -ld /home/tmp
drwxrwxrwx 2 root root 4096 sep 21 11:45 /home/tmp
[usr001@linuxpc usr001]$ ls -l /home/tmp/arch1
-rw-rw-r-- 1 usr000 usr000 29 sep 21 11:45 /home/tmp/arch1
[usr001@linuxpc usr001]$ rm /home/tmp/arch1
rm: ¿borrar el fichero regular `/home/tmp/arch1' protegido contra escr
itura? (s/n) s
[usr001@linuxpc usr001]$ ls -l /home/tmp/arch1
ls: /home/tmp/arch1: No existe el fichero o el directorio
• Entonces, utilizamos el bit STI por el directorio. Se utiliza en el
directorio “/tmp”, en el que cualquiera puede guardar ficheros
temporales.
Cuando el sistema arranca, se borran todos los ficheros en el “/tmp”.
[usr000@linuxpc usr000]$ ls -ld /tmp
drwxrwxrwt 3 root root 4096 sep 21 09:30 /tmp
LINUX Básico (7. Shells(2)) 33
34. En el directorio “/home/tmp2” también, cualquiera puede almacenar archivos,
pero el bit STI está activado.
[usr000@linuxpc usr000]$ ls -ld /home/tmp2
drwxrwxrwt 2 root root 4096 sep 21 12:22 /home/tmp2
[usr000@linuxpc usr000]$ ls -l /home/tmp2/arch1
ls: /home/tmp2/arch1: No existe el fichero o el directorio
[usr000@linuxpc usr000]$ date > /home/tmp2/arch1
[usr000@linuxpc usr000]$ ls -l /home/tmp2/arch1
-rw-rw-r-- 1 usr000 usr000 29 sep 21 12:24 /home/tmp2/arch1
Este vez, otros usuarios no pueden editar ni eliminar el archivo.
[usr001@linuxpc usr001]$ whoami
usr001 otro usuario
[usr001@linuxpc usr001]$ date >> /home/tmp2/arch1
-bash: /home/tmp2/arch1: Permiso denegado
[usr001@linuxpc usr001]$ rm /home/tmp2/arch1
rm: ¿borrar el fichero regular `/home/tmp2/arch1' protegido contra
escritura? (s/n) s
rm: no se puede borrar `/home/tmp2/arch1': Operación no permitida
LINUX Básico (7. Shells(2)) 34
35. ¡ Muchas gracias por su atención !
¡ Hasta pronto !
En la próxima hora, vamos a aprender sobre el shell
scripts.
LINUX Básico (7. Shells(2)) 35