Linux basico-7.PDF

617 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
617
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
46
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Linux basico-7.PDF

  1. 1. LINUX Básico TAKASHI SUGASAWA LINUX Básico (7. Shells(2)) 1
  2. 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. 3. LINUX Básico7. 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. 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. 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), forGNU/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. 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. 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 2004do lu ma mi ju vi sá 1 2 3 4 5 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 LINUX Básico (7. Shells(2)) 7
  8. 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á ensá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 -ltotal 4drwxrwxr-x 2 usr000 usr000 4096 sep 18 14:01 bin[usr000@linuxpc usr000]$ ls -l bintotal 40-rwxr-xr-x 1 usr000 usr000 38620 sep 18 13:46 date2[usr000@linuxpc usr000]$ date2 ya se puede ejecutarsáb sep 18 14:03:06 ECT 2004 “date2” sin ruta de acceso. LINUX Básico (7. Shells(2)) 8
  9. 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]$ date3sá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. 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. 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. 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 procesoCon “-u”, presenta la información detallada. S: Sleep (durmiente) R: Run (ejecutable)[usr000@linuxpc usr000]$ ps -uUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDusr000 8763 0.0 2.2 4444 1388 pts/0 S 11:21 0:04 -bashusr000 9138 0.0 1.0 2592 636 pts/0 R 17:18 0:00 ps -u Propietario del procesoCon “-x”, presenta los procesos de su usuario, incluido los procesos de otroterminal. Nombre del terminal[usr000@linuxpc usr000]$ ps -uxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDusr000 8763 0.0 2.2 4444 1388 pts/0 S 11:21 0:04 -bashusr000 9088 0.0 2.1 4416 1348 pts/1 S 16:53 0:00 -bashusr000 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
  13. 13. Con “-aux”, presenta todos los procesos en el sistema detalladamente.[usr000@linuxpc usr000]$ ps -auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.2 1368 136 ? S Sep17 0:05 initroot 2 0.0 0.0 0 0 ? SW Sep17 0:00 [keventd]root 3 0.0 0.0 0 0 ? SW Sep17 0:00 [kapmd]root 4 0.0 0.0 0 0 ? SWN Sep17 0:00 [ksoftirqdroot 9 0.0 0.0 0 0 ? SW Sep17 0:00 [bdflush]root 5 0.0 0.0 0 0 ? SW Sep17 0:00 [kswapd]root 6 0.0 0.0 0 0 ? SW Sep17 0:00 [kscand/DMroot 7 0.0 0.0 0 0 ? SW Sep17 0:15 [kscand/Noroot 8 0.0 0.0 0 0 ? SW Sep17 0:00 [kscand/Hiroot 10 0.0 0.0 0 0 ? SW Sep17 0:01 [kupdated]root 11 0.0 0.0 0 0 ? SW Sep17 0:00 [mdrecover (Omisión)root 1716 0.0 0.0 1352 4 tty5 S Sep17 0:00 /sbin/mingroot 1717 0.0 0.0 1352 4 tty6 S Sep17 0:00 /sbin/mingroot 9201 0.0 0.2 1492 128 ? S Sep18 0:01 in.telnetdroot 9202 0.0 0.3 2276 212 ? S Sep18 0:00 [login]usr000 9203 0.0 1.3 4432 828 pts/2 S Sep18 0:00 -bashroot 13202 0.0 0.9 1492 584 ? S 09:37 0:00 in.telnetdroot 13203 0.0 1.8 2276 1120 ? S 09:37 0:00 [login]usr000 13204 0.1 2.2 4440 1388 pts/0 S 09:37 0:02 -bashroot 13268 0.1 0.6 1348 388 tty1 S 10:07 0:00 /sbin/mingusr000 13272 0.0 1.0 2620 664 pts/2 R 10:07 0:00 ps -auxm LINUX Básico (7. Shells(2)) 13
  14. 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. 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. 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. 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 -uUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDusr000 13945 0.4 2.2 4452 1384 pts/0 S 21:06 0:00 -bashusr000 13976 0.1 1.6 4128 1004 pts/0 T 21:06 0:00 vi arch1usr000 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. 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. 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]$ fgsleep 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. 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. 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. 22. [usr000@linuxpc usr000]$ sleep 10000 & crea un proceso en[1] 14087 segundo plano.[usr000@linuxpc usr000]$ ps PID TTY TIME CMD13945 pts/0 00:00:02 bash14087 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 CMD13945 pts/0 00:00:02 bash14089 pts/0 00:00:00 ps no hay LINUX Básico (7. Shells(2)) 22
  23. 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]$ whoamiusr000[usr000@linuxpc usr000]$ sleep 1000 &[1] 14745[usr000@linuxpc usr000]$ ps -u -p 14745USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDusr000 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. 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 - xpermisos 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 elpermiso 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. 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
  26. 26. [usr000@linuxpc usr000]$/home/usr000[usr000@linuxpc usr000]$ cp /bin/sleep sleep2[usr000@linuxpc usr000]$ ls -l sleep2-rwxr-xr-x 1 usr000 usr000 12444 sep 20 11:57 sleep2[usr000@linuxpc usr000]$ chmod 4755 sleep2[usr000@linuxpc usr000]$ ls -l sleep2-rwsr-xr-x 1 usr000 usr000 12444 sep 20 11:57 sleep2[usr000@linuxpc usr000]$ chmod 2755 sleep2[usr000@linuxpc usr000]$ ls -l sleep2-rwxr-sr-x 1 usr000 usr000 12444 sep 20 11:57 sleep2[usr000@linuxpc usr000]$ chmod 1755 sleep2[usr000@linuxpc usr000]$ ls -l sleep2-rwxr-xr-t 1 usr000 usr000 12444 sep 20 11:57 sleep2[usr000@linuxpc usr000]$ chmod 7755 sleep2[usr000@linuxpc usr000]$ ls -l sleep2-rwsr-sr-t 1 usr000 usr000 12444 sep 20 11:57 sleep2[usr000@linuxpc usr000]$ chmod 7644 sleep2[usr000@linuxpc usr000]$ ls -l sleep2-rwSr-Sr-T 1 usr000 usr000 12444 sep 20 11:57 sleep2 LINUX Básico (7. Shells(2)) 26
  27. 27. Formula de permisos relativo de “chmod” chmod formula archivo1 [archivo2 ...] Quién Operador PermisoQuié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. 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. 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. 30. Hay un archivo “secreto” en el directorio base de “usr000”. Otros usuariosexcepto “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 denegadoEn 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 delusuario “usr000”.[usr001@linuxpc usr001]$ ls -l /home/usr000/cat-SUID-rwsr-xr-x 1 usr000 usr000 14364 feb 18 2003 /home/usr000/cat-SUIDUsando 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. 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 denegadoEn el mismo directorio, hay otro comando “cat-SGID”, especial del comando“cat” también, que tiene el bit SETGID activado. Este comando se ejecuta enla 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-SGIDUsando 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. 32. 7.4(5) STI • Por ejemplo, en el directorio “/home/tmp”, cualquiera puede crear archivos y directorios.[usr000@linuxpc usr000]$ ls -ld /home/tmpdrwxrwxrwx 2 root root 4096 sep 21 11:45 /home/tmp[usr000@linuxpc usr000]$ ls -l /home/tmp/arch1ls: /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]$ whoamiusr001 otro usuario[usr001@linuxpc usr001]$ date >> /home/tmp/arch1-bash: /home/tmp/arch1: Permiso denegado LINUX Básico (7. Shells(2)) 32
  33. 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]$ whoamiusr001 otro usuario[usr001@linuxpc usr001]$ ls -ld /home/tmpdrwxrwxrwx 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/arch1rm: ¿borrar el fichero regular `/home/tmp/arch1 protegido contra escritura? (s/n) s[usr001@linuxpc usr001]$ ls -l /home/tmp/arch1ls: /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 /tmpdrwxrwxrwt 3 root root 4096 sep 21 09:30 /tmp LINUX Básico (7. Shells(2)) 33
  34. 34. En el directorio “/home/tmp2” también, cualquiera puede almacenar archivos,pero el bit STI está activado.[usr000@linuxpc usr000]$ ls -ld /home/tmp2drwxrwxrwt 2 root root 4096 sep 21 12:22 /home/tmp2[usr000@linuxpc usr000]$ ls -l /home/tmp2/arch1ls: /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/arch1Este vez, otros usuarios no pueden editar ni eliminar el archivo.[usr001@linuxpc usr001]$ whoamiusr001 otro usuario[usr001@linuxpc usr001]$ date >> /home/tmp2/arch1-bash: /home/tmp2/arch1: Permiso denegado[usr001@linuxpc usr001]$ rm /home/tmp2/arch1rm: ¿borrar el fichero regular `/home/tmp2/arch1 protegido contraescritura? (s/n) srm: no se puede borrar `/home/tmp2/arch1: Operación no permitida LINUX Básico (7. Shells(2)) 34
  35. 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

×