TAKASHI SUGASAWA
LINUX Bsico
7. Shells(2) ndice
7.1 Comandos y programas 7.2 Idea de procesos 7.3 Control de procesos 7.4 Autoridad de procesos
[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 presenta el tipo del archivo. [usr000@linuxpc usr000]$ file /bin/cat /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)
(34) file
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.
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.
un comando inexistente
ahora est en el directorio base. [usr000@linuxpc usr000]$ pwd /home/usr000 crea una copia de [usr000@linuxpc usr000]$ cp /bin/date date2 [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 pero no se puede ejecutar, -bash: date2: command not found porque date2 no est en [usr000@linuxpc usr000]$ ./date2 los directorios de PATH. sb sep 18 13:59:08 ECT 2004 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 y desplazar adentro. [usr000@linuxpc usr000]$ mv date2 bin [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 sb sep 18 14:03:06 ECT 2004 date2 sin ruta de acceso.
LINUX Bsico (7. Shells(2))
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 Bsico (7. Shells(2)) 9
como proceso. Los archivos ejecutables son las sustancias estticas de programas. Los procesos son las sustancias dinmicas de programas.
programa
sustancia esttica sustancias dinmicas
archivo ejecutable
proceso 1 proceso 2
procesos pueden ejecutarse simultneamente. Podemos crear mltiples procesos del mismo archivo ejecutable.
LINUX Bsico (7. Shells(2)) 10
7.2(2) ID de proceso Para distinguir entre los procesos, LINUX asigna a cada
nuevo proceso una identificacin nica llamada identificacin de proceso (ID de proceso). ID de proceso es slo un nmero que identifica con precisin 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 slo una vista instantnea de lo que haba sucedido cuando se pregunt.
(35) ps Informa el estado de los procesos. (ej.) ps ; los procesos del mismo terminal. ; detalladamente. ps -u ; los procesos de otros terminales tambin ps -x ; todos los procesos en el sistema. ps -aux
LINUX Bsico (7. Shells(2)) 11
[usr000@linuxpc usr000]$ ps PID TTY TIME CMD 8763 pts/0 00:00:04 bash 9137 pts/0 00:00:00 ps
Sin argumentos, presenta brevemente slo los procesos del mismo terminal. Login Shell Estado del proceso S: Sleep (durmiente) R: Run (ejecutable)
STAT START S 11:21 R 17:18 TIME COMMAND 0:04 -bash 0:00 ps -u
ID de proceso
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 usr000 usr000 usr000 PID %CPU %MEM 8763 0.0 2.2 9088 0.0 2.1 9139 10.0 1.0 VSZ RSS TTY 4444 1388 pts/0 4416 1348 pts/1 2596 636 pts/0 STAT S S R START 11:21 16:53 17:18 TIME 0:04 0:00 0:00 COMMAND -bash -bash ps -ux
(Omisin) root root root root usr000 root root usr000 root usr000 1716 1717 9201 9202 9203 13202 13203 13204 13268 13272 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.1 0.1 0.0 0.0 0.0 0.2 0.3 1.3 0.9 1.8 2.2 0.6 1.0 1352 4 tty5 1352 4 tty6 1492 128 ? 2276 212 ? 4432 828 pts/2 1492 584 ? 2276 1120 ? 4440 1388 pts/0 1348 388 tty1 2620 664 pts/2 S S S S S S S S S R Sep17 Sep17 Sep18 Sep18 Sep18 09:37 09:37 09:37 10:07 10:07 0:00 0:00 0:01 0:00 0:00 0:00 0:00 0:02 0:00 0:00 /sbin/ming /sbin/ming in.telnetd [login] -bash in.telnetd [login] -bash /sbin/ming ps -auxm
13
Login
(36) sleep Suspende la ejecucin durante un intervalo. (ej.) sleep 5 ; suspende el ejecucin por 5 segundos
[usr000@linuxpc usr000]$ sleep 5
Despus al operar el shell, hay una avisa de la terminacin del proceso en la pantalla.
[1]+ Done sleep 5
LINUX Bsico (7. Shells(2)) 15
(37) jobs Presenta la informacin de los trabajos del shell de segundo plano. (ej.) jobs
[usr000@linuxpc usr000]$ sleep 15 & [1] 8375 [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 &
[usr000@linuxpc usr000]$ aviso de la terminacin [1]+ Done sleep 15 [usr000@linuxpc usr000]$ ps PID TTY TIME CMD 8336 pts/1 00:00:00 bash ahora no est 8377 pts/1 00:00:00 ps [usr000@linuxpc usr000]$ jobs [usr000@linuxpc usr000]$
LINUX Bsico (7. Shells(2)) 16
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 usr000 13945 0.4 2.2 4452 1384 pts/0 usr000 13976 0.1 1.6 4128 1004 pts/0 usr000 13977 0.0 1.0 2588 632 pts/0 [usr000@linuxpc usr000]$ jobs [1]+ Stopped vi arch1
STAT S T R
detenido
(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 [usr000@linuxpc usr000]$ fg 1
un proceso detenido
1 se puede omitir
Me llamo Takashi Sugasawa. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
se ha resucitado.
18
(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 [usr000@linuxpc [1]+ Stopped [usr000@linuxpc [1]+ sleep 60 & [usr000@linuxpc [1]+ Running [usr000@linuxpc sleep 60 sleep 60 usr000]$ jobs sleep 60 usr000]$ bg usr000]$ jobs sleep 60 & usr000]$ fg
vi est suspendido. usr000]$ bg trata de resucitar el proceso hacia segundo plano. usr000]$ jobs vi arch1 pero, no puede.
20
teclear ^c
[usr000@linuxpc usr000]$
El comando kill puede terminar los procesos a la fuerza. (39) kill Enva una seal a los procesos en ejecucin, por lo general, les da por terminado. ; termina un proceso de que ID de (ej.) kill 1234 kill -KILL 1234
proceso es 1234. ; termina un proceso de que ID de proceso es 1234 incondicionalmente.
21
crea un proceso en [usr000@linuxpc usr000]$ sleep 10000 & [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 no hay 14089 pts/0 00:00:00 ps
22
23
STI
- x activado
- x T t
-rwxrwxrwx
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.
permiso de ejecucin
- x activado
- x S s
s: Si est activado tanto el bit SETGID como el correspondiente de ejecutable. S: Si est activado el bit SETGID pero no el correspondiente de ejecutable. t: Si tanto el bit STI como el ejecutable para otros estn activados. T: Si el bit STI est activado pero el ejecutable para otros no lo est.
LINUX Bsico (7. Shells(2)) 24
SETUID o SETGID
25
[usr000@linuxpc /home/usr000 [usr000@linuxpc [usr000@linuxpc -rwxr-xr-x 1 [usr000@linuxpc [usr000@linuxpc -rwsr-xr-x 1 [usr000@linuxpc [usr000@linuxpc -rwxr-sr-x 1 [usr000@linuxpc [usr000@linuxpc -rwxr-xr-t 1 [usr000@linuxpc [usr000@linuxpc -rwsr-sr-t 1 [usr000@linuxpc [usr000@linuxpc -rwSr-Sr-T 1
usr000]$ usr000]$ usr000]$ usr000 usr000]$ usr000]$ usr000 usr000]$ usr000]$ usr000 usr000]$ usr000]$ usr000 usr000]$ usr000]$ usr000 usr000]$ usr000]$ usr000 cp /bin/sleep sleep2 ls -l sleep2 usr000 12444 sep chmod 4755 sleep2 ls -l sleep2 usr000 12444 sep chmod 2755 sleep2 ls -l sleep2 usr000 12444 sep chmod 1755 sleep2 ls -l sleep2 usr000 12444 sep chmod 7755 sleep2 ls -l sleep2 usr000 12444 sep chmod 7644 sleep2 ls -l sleep2 usr000 12444 sep
20 11:57 sleep2
20 11:57 sleep2
20 11:57 sleep2
20 11:57 sleep2
20 11:57 sleep2
20 11:57 sleep2
26
Permiso
r w x s t Establece a lectura. Establece a escritura. Establece a ejecucin. Establece el bit SETUID o SETGID Establece el bit STI
Operador
+ = Agrega el modo. Retira el modo. Establece el modo absoluto.
27
[usr000@linuxpc [usr000@linuxpc -rwxr-xr-x 1 [usr000@linuxpc [usr000@linuxpc -rwsr-xr-x 1 [usr000@linuxpc [usr000@linuxpc -rwsr-sr-x 1 [usr000@linuxpc [usr000@linuxpc -rwsr-sr-t 1
usr000]$ usr000]$ usr000 usr000]$ usr000]$ usr000 usr000]$ usr000]$ usr000 usr000]$ usr000]$ usr000
chmod 755 sleep2 ls -l sleep2 usr000 12444 chmod u+s sleep2 ls -l sleep2 usr000 12444 chmod g+s sleep2 ls -l sleep2 usr000 12444 chmod +t sleep2 ls -l sleep2 usr000 12444
feb 18
2003 sleep2
feb 18
2003 sleep2
feb 18
2003 sleep2
feb 18
2003 sleep2
28
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.
2003 /usr/bin/passwd
Este comando guarda las contraseas en el archivo /etc/shadow. Sin embargo, los usuarios ordinales no tienen permisos, no pondrn cambiar su contrasea. Entonces, utilizamos el bit SETUID. El propietario del proceso va a ser root, el proceso puede editar el archivo /etc/shadow.
29
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
30
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 tambin, 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 tambin, 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 Bsico (7. Shells(2)) 31
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
otro usuario
32
33
En el directorio /home/tmp2 tambin, cualquiera puede almacenar archivos, pero el bit STI est activado.
[usr000@linuxpc usr000]$ drwxrwxrwt 2 root [usr000@linuxpc usr000]$ ls: /home/tmp2/arch1: No [usr000@linuxpc usr000]$ [usr000@linuxpc usr000]$ -rw-rw-r-1 usr000 ls -ld /home/tmp2 root 4096 sep 21 12:22 /home/tmp2 ls -l /home/tmp2/arch1 existe el fichero o el directorio date > /home/tmp2/arch1 ls -l /home/tmp2/arch1 usr000 29 sep 21 12:24 /home/tmp2/arch1
34
35