Anda di halaman 1dari 35

LINUX Bsico

TAKASHI SUGASAWA

LINUX Bsico (7. Shells(2))

Programa del curso


1. 2. 3. 4. 5. 6. 7. 8. 9.
Introduccin a LINUX Operacin bsica de LINUX Operacin de archivos y directorios Editor vi Comprensin del sistema de ficheros Shells(1) Shells(2) Shells(3) Otros comandos
LINUX Bsico (7. Shells(2)) 2

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

LINUX Bsico (7. Shells(2))

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 comandos comandos interiores del shell (cd, exit, logout, umask, ...) (cat, cp, mv, rm, mkdir, ...)

LINUX Bsico (7. Shells(2))

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 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)

cd es el comando interior del shell.

(34) file

Determina el tipo de un archivo. (ej.) file arch1


LINUX Bsico (7. Shells(2)) 5

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 cul es se


buscar primero.
1ro: 2do: 3ro: 4to: 5to: /usr/local/bin /bin /usr/bin /usr/X11R6/bin /home/usr000/bin
6

LINUX Bsico (7. Shells(2))

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 Bsico (7. Shells(2))

Si ejecutamos un programa que no est en los


directorios de PATH, ...
[usr000@linuxpc usr000]$ comando -bash: comando: command not found

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))

Si es necesario, podemos cambiar el valor de PATH.


[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 se ha aadido sb sep 18 14:21:02 ECT 2004

ahora est en el directorio base.

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 Bsico (7. Shells(2)) 9

7.2 Idea de procesos

(1) Comprensin de los procesos En el LINUX, a un programa en ejecucin se le conoce

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

ejecucin ejecu cin

proceso 1 proceso 2

Ya que LINUX es un sistema de multitareas, muchos

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

Con -u, presenta la informacin detallada.


[usr000@linuxpc usr000]$ ps -u USER PID %CPU %MEM VSZ RSS TTY usr000 8763 0.0 2.2 4444 1388 pts/0 usr000 9138 0.0 1.0 2592 636 pts/0

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

terminales son diferentes


LINUX Bsico (7. Shells(2)) 12

Con -aux, presenta todos los procesos en el sistema detalladamente.


[usr000@linuxpc usr000]$ ps -aux USER PID %CPU %MEM VSZ RSS root 1 0.0 0.2 1368 136 root 2 0.0 0.0 0 0 root 3 0.0 0.0 0 0 root 4 0.0 0.0 0 0 root 9 0.0 0.0 0 0 root 5 0.0 0.0 0 0 root 6 0.0 0.0 0 0 root 7 0.0 0.0 0 0 root 8 0.0 0.0 0 0 root 10 0.0 0.0 0 0 root 11 0.0 0.0 0 0 TTY ? ? ? ? ? ? ? ? ? ? ? STAT S SW SW SWN SW SW SW SW SW SW SW START Sep17 Sep17 Sep17 Sep17 Sep17 Sep17 Sep17 Sep17 Sep17 Sep17 Sep17 TIME 0:05 0:00 0:00 0:00 0:00 0:00 0:00 0:15 0:00 0:01 0:00 COMMAND init [keventd] [kapmd] [ksoftirqd [bdflush] [kswapd] [kscand/DM [kscand/No [kscand/Hi [kupdated] [mdrecover

(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

LINUX Bsico (7. Shells(2))

13

7.2(3) Procesos de programas


Al hacer Login, el sistema inicia un proceso de Login Shell
automticamente.
[usr000@linuxpc usr000]$ ps -u USER PID %CPU %MEM VSZ RSS TTY usr000 8763 0.0 2.2 4444 1388 pts/0 usr000 9138 0.0 1.0 2592 636 pts/0 STAT START S 11:21 R 17:18 TIME COMMAND 0:04 -bash 0:00 ps -u

Cuando ejecutamos un programa en el shell, el shell generalmente


arranca un proceso nuevo, espera la terminacin del programa.
creacin espera Al hacer Logout, este proceso se extingue. Proceso de Login Shell 8763 Proceso de ps creacin 9138 este instante

Login

Despus de ejecucin del programa, el proceso se extingue.


LINUX Bsico (7. Shells(2)) 14

7.3 Control de procesos


(1) Disposicin de procesos en segundo plano
En el shell, un programa se ejecuta en primer plano normalmente.
Hasta la terminacin del programa, no podemos ejecutar otro programa.

(36) sleep Suspende la ejecucin durante un intervalo. (ej.) sleep 5 ; suspende el ejecucin 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 carcter de la lnea.
ID de trabajo
[usr000@linuxpc usr000]$ sleep 5 & [1] 13403 ID de proceso [usr000@linuxpc usr000]$

Al instante, podemos ejecutar otro comando.

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

Podemos confirmar los procesos en segundo plano con el


comando ps o jobs.

(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 &

crea un proceso en segundo plano.

aqu hay tambin

[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

7.3(2) Suspensin 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 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

START 21:06 21:06 21:08

TIME 0:00 0:00 0:00

COMMAND -bash vi arch1 ps -u

El proceso existe, pero no est en accin.


LINUX Bsico (7. Shells(2)) 17

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 [usr000@linuxpc usr000]$ fg 1

un proceso detenido

1 se puede omitir
Me llamo Takashi Sugasawa. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

se ha resucitado.

LINUX Bsico (7. Shells(2))

18

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 [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

detenido est en accin en segundo plano

Usando el comando fg, podemos cambiar el estado de un


proceso desde segundo plano hasta primer plano tambin.
LINUX Bsico (7. Shells(2)) 19

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]$ jobs vi arch1 [usr000@linuxpc [1]+ Stopped [usr000@linuxpc [1]+ vi arch1 & [usr000@linuxpc [1]+ Stopped

vi est suspendido. usr000]$ bg trata de resucitar el proceso hacia segundo plano. usr000]$ jobs vi arch1 pero, no puede.

LINUX Bsico (7. Shells(2))

20

7.3(3) Terminacin 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 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.

LINUX Bsico (7. Shells(2))

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

LINUX Bsico (7. Shells(2))

22

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.
which sleep ls -l /bin/sleep root 12444 feb 18 whoami sleep 1000 & ps -u -p 14745 VSZ RSS TTY 3780 528 pts/2 STAT START S 10:57 TIME COMMAND 0:00 sleep 1000 2003 /bin/sleep [usr000@linuxpc usr000]$ /bin/sleep [usr000@linuxpc usr000]$ -rwxr-xr-x 1 root [usr000@linuxpc usr000]$ usr000 [usr000@linuxpc usr000]$ [1] 14745 [usr000@linuxpc usr000]$ USER PID %CPU %MEM usr000 14745 0.1 0.8

propietario del proceso

Cuando un proceso accede a un fichero, esto informacin se usa.

LINUX Bsico (7. Shells(2))

23

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 ejecucin

permisos del fichero (ls -l)

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

Permisos octales absolutos de chmod


chmod modo archivo1 [archivo2 ...] 1000 2000 4000 0100 0200 0400 0010 0020 0040 0001 0002 0004 Activacin del bit STI Activacin del bit SETGID Activacin del bit SETUID Permiso de ejecucin. Permiso de escritura. Permiso de lectura. Permiso de ejecucin. Permiso de escritura. Permiso de lectura. Permiso de ejecucin. Permiso de escritura. Permiso de lectura. para todos los dems para el grupo para el propietario

LINUX Bsico (7. Shells(2))

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

LINUX Bsico (7. Shells(2))

26

Formula de permisos relativo de chmod


chmod formula archivo1 [archivo2 ...]

Quin Operador Permiso Quin


u g o a el propietario. el grupo. todos los dems. todos los usuarios.

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

LINUX Bsico (7. Shells(2))

[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

LINUX Bsico (7. Shells(2))

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

[usr000@linuxpc usr000]$ ls -l /usr/bin/passwd -r-s--x--x 1 root root 16336 feb 13

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.

LINUX Bsico (7. Shells(2))

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

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 Bsico (7. Shells(2))

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

Si quita el permiso de escritura para otros usuarios, puede


defender el contenido del archivo contra otros usuarios.
[usr001@linuxpc usr001]$ whoami usr001 [usr001@linuxpc usr001]$ date >> /home/tmp/arch1 -bash: /home/tmp/arch1: Permiso denegado

otro usuario

LINUX Bsico (7. Shells(2))

32

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.
4096 sep 21 09:30 /tmp

[usr000@linuxpc usr000]$ ls -ld /tmp drwxrwxrwt 3 root root

LINUX Bsico (7. Shells(2))

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

Este vez, otros usuarios no pueden editar ni eliminar el archivo.


[usr001@linuxpc usr001]$ whoami otro usuario usr001 [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': Operacin no permitida

LINUX Bsico (7. Shells(2))

34

Muchas gracias por su atencin ! Hasta pronto !


En la prxima hora, vamos a aprender sobre el shell scripts.

LINUX Bsico (7. Shells(2))

35

Anda mungkin juga menyukai