SlideShare a Scribd company logo
1 of 35
Download to read offline
LINUX Básico


                   TAKASHI SUGASAWA




 LINUX Básico (7. Shells(2))          1
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
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
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
• 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
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
• 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
• 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
• 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
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
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
[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
Con “-aux”, presenta todos los procesos en el sistema detalladamente.
[usr000@linuxpc usr000]$ ps -aux
USER       PID %CPU %MEM   VSZ RSS        TTY        STAT   START   TIME   COMMAND
root         1 0.0 0.2 1368 136           ?          S      Sep17   0:05   init
root         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   [ksoftirqd
root         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/DM
root         7 0.0 0.0       0   0        ?          SW     Sep17   0:15   [kscand/No
root         8 0.0 0.0       0   0        ?          SW     Sep17   0:00   [kscand/Hi
root        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/ming
root      1717   0.0   0.0   1352    4 tty6          S      Sep17   0:00   /sbin/ming
root      9201   0.0   0.2   1492 128 ?              S      Sep18   0:01   in.telnetd
root      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   -bash
root     13202   0.0   0.9   1492 584 ?              S      09:37   0:00   in.telnetd
root     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   -bash
root     13268   0.1   0.6   1348 388 tty1           S      10:07   0:00   /sbin/ming
usr000   13272   0.0   1.0   2620 664 pts/2          R      10:07   0:00   ps -auxm




                             LINUX Básico (7. Shells(2))                            13
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
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
• 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
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
• 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
• 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
• 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
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
[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
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
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
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
[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
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
[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
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
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
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
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
• 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
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
¡ 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

More Related Content

What's hot

Consola y Comandos Básicos de Linux (I)
Consola y Comandos Básicos de Linux (I)Consola y Comandos Básicos de Linux (I)
Consola y Comandos Básicos de Linux (I)Julio Caiza
 
Comandos Basicos De Linux
Comandos Basicos De LinuxComandos Basicos De Linux
Comandos Basicos De Linuxguest238e87
 
Linux basico-3.PDF
Linux basico-3.PDFLinux basico-3.PDF
Linux basico-3.PDFULEAM
 
Trabajo sistemas operativos de camilo pinzon
Trabajo sistemas operativos de camilo pinzonTrabajo sistemas operativos de camilo pinzon
Trabajo sistemas operativos de camilo pinzonManuel Chaparro
 
Administración básica de ubuntu server parte 3
Administración básica de ubuntu server   parte 3Administración básica de ubuntu server   parte 3
Administración básica de ubuntu server parte 3Santiago Márquez Solís
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuariosjuliananena
 
Maria jose hernandez c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...
Maria jose hernandez   c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...Maria jose hernandez   c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...
Maria jose hernandez c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...MariaJoseHernndez2
 
Comandos de linux
Comandos de linuxComandos de linux
Comandos de linuxyaser6700
 
Tutorial 18pag
Tutorial 18pagTutorial 18pag
Tutorial 18pageckoby
 
Taller de Instalación y configuración de gnu/linux
Taller de Instalación y configuración de gnu/linuxTaller de Instalación y configuración de gnu/linux
Taller de Instalación y configuración de gnu/linuxRemigio Salvador Sánchez
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuariospaonenajessi
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuariospaonenajessi
 
Instalacionoracle10 g
Instalacionoracle10 gInstalacionoracle10 g
Instalacionoracle10 gronyweb
 
Comandos más utilizados en linux
Comandos más utilizados en linuxComandos más utilizados en linux
Comandos más utilizados en linuxAldo Vilches Godoy
 

What's hot (19)

Curso-Taller GNU-Linux Dia2
Curso-Taller GNU-Linux Dia2Curso-Taller GNU-Linux Dia2
Curso-Taller GNU-Linux Dia2
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Agilidad en shell de linux
Agilidad en shell de linuxAgilidad en shell de linux
Agilidad en shell de linux
 
Consola y Comandos Básicos de Linux (I)
Consola y Comandos Básicos de Linux (I)Consola y Comandos Básicos de Linux (I)
Consola y Comandos Básicos de Linux (I)
 
Comandos Basicos De Linux
Comandos Basicos De LinuxComandos Basicos De Linux
Comandos Basicos De Linux
 
Linux basico-3.PDF
Linux basico-3.PDFLinux basico-3.PDF
Linux basico-3.PDF
 
Trabajo sistemas operativos de camilo pinzon
Trabajo sistemas operativos de camilo pinzonTrabajo sistemas operativos de camilo pinzon
Trabajo sistemas operativos de camilo pinzon
 
Comandos básicos GNU/Linux
Comandos básicos GNU/LinuxComandos básicos GNU/Linux
Comandos básicos GNU/Linux
 
Administración básica de ubuntu server parte 3
Administración básica de ubuntu server   parte 3Administración básica de ubuntu server   parte 3
Administración básica de ubuntu server parte 3
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuarios
 
Maria jose hernandez c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...
Maria jose hernandez   c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...Maria jose hernandez   c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...
Maria jose hernandez c.i. 27.878.738 - seccion pnf if-02 t1 f2 - administra...
 
Comandos de linux
Comandos de linuxComandos de linux
Comandos de linux
 
tarea taller
tarea tallertarea taller
tarea taller
 
Tutorial 18pag
Tutorial 18pagTutorial 18pag
Tutorial 18pag
 
Taller de Instalación y configuración de gnu/linux
Taller de Instalación y configuración de gnu/linuxTaller de Instalación y configuración de gnu/linux
Taller de Instalación y configuración de gnu/linux
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuarios
 
Monousuarios y multiusuarios
Monousuarios y multiusuariosMonousuarios y multiusuarios
Monousuarios y multiusuarios
 
Instalacionoracle10 g
Instalacionoracle10 gInstalacionoracle10 g
Instalacionoracle10 g
 
Comandos más utilizados en linux
Comandos más utilizados en linuxComandos más utilizados en linux
Comandos más utilizados en linux
 

Viewers also liked

Linux basico-4.PDF
Linux basico-4.PDFLinux basico-4.PDF
Linux basico-4.PDFULEAM
 
Manual para-instalar-oracle-database-11 g-r2-en-centos-6
Manual para-instalar-oracle-database-11 g-r2-en-centos-6Manual para-instalar-oracle-database-11 g-r2-en-centos-6
Manual para-instalar-oracle-database-11 g-r2-en-centos-6shac Rob
 
Deep Dive: More Oracle Data Pump Performance Tips and Tricks
Deep Dive: More Oracle Data Pump Performance Tips and TricksDeep Dive: More Oracle Data Pump Performance Tips and Tricks
Deep Dive: More Oracle Data Pump Performance Tips and TricksGuatemala User Group
 
Comandos Editor VI
Comandos Editor VIComandos Editor VI
Comandos Editor VIUsa
 
Exportacion e importacion de los datos en oracle
Exportacion e importacion de los datos en oracleExportacion e importacion de los datos en oracle
Exportacion e importacion de los datos en oracleEdgar Sandoval
 
Less17 moving data
Less17 moving dataLess17 moving data
Less17 moving dataAmit Bhalla
 
Oracle data pump
Oracle data pumpOracle data pump
Oracle data pumpmarcxav72
 
Examining Oracle GoldenGate Trail Files
Examining Oracle GoldenGate Trail FilesExamining Oracle GoldenGate Trail Files
Examining Oracle GoldenGate Trail FilesBobby Curtis
 
Transferencia de datos en Oracle
Transferencia de datos en OracleTransferencia de datos en Oracle
Transferencia de datos en OracleCarmen Soler
 
Mantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11gMantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11gCarmen Soler
 
Transferencia de bases de datos entre sistemas gestores
Transferencia de bases de datos entre sistemas gestoresTransferencia de bases de datos entre sistemas gestores
Transferencia de bases de datos entre sistemas gestoresTotus Muertos
 
Oracle Goldengate training by Vipin Mishra
Oracle Goldengate training by Vipin Mishra Oracle Goldengate training by Vipin Mishra
Oracle Goldengate training by Vipin Mishra Vipin Mishra
 

Viewers also liked (13)

Linux basico-4.PDF
Linux basico-4.PDFLinux basico-4.PDF
Linux basico-4.PDF
 
Manual para-instalar-oracle-database-11 g-r2-en-centos-6
Manual para-instalar-oracle-database-11 g-r2-en-centos-6Manual para-instalar-oracle-database-11 g-r2-en-centos-6
Manual para-instalar-oracle-database-11 g-r2-en-centos-6
 
Deep Dive: More Oracle Data Pump Performance Tips and Tricks
Deep Dive: More Oracle Data Pump Performance Tips and TricksDeep Dive: More Oracle Data Pump Performance Tips and Tricks
Deep Dive: More Oracle Data Pump Performance Tips and Tricks
 
Comandos Editor VI
Comandos Editor VIComandos Editor VI
Comandos Editor VI
 
Exportacion e importacion de los datos en oracle
Exportacion e importacion de los datos en oracleExportacion e importacion de los datos en oracle
Exportacion e importacion de los datos en oracle
 
Less17 moving data
Less17 moving dataLess17 moving data
Less17 moving data
 
Oracle data pump
Oracle data pumpOracle data pump
Oracle data pump
 
Examining Oracle GoldenGate Trail Files
Examining Oracle GoldenGate Trail FilesExamining Oracle GoldenGate Trail Files
Examining Oracle GoldenGate Trail Files
 
Transferencia de datos en Oracle
Transferencia de datos en OracleTransferencia de datos en Oracle
Transferencia de datos en Oracle
 
Mantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11gMantenimiento de la base de datos Oracle 11g
Mantenimiento de la base de datos Oracle 11g
 
Transferencia de bases de datos entre sistemas gestores
Transferencia de bases de datos entre sistemas gestoresTransferencia de bases de datos entre sistemas gestores
Transferencia de bases de datos entre sistemas gestores
 
Less17 Util
Less17  UtilLess17  Util
Less17 Util
 
Oracle Goldengate training by Vipin Mishra
Oracle Goldengate training by Vipin Mishra Oracle Goldengate training by Vipin Mishra
Oracle Goldengate training by Vipin Mishra
 

Similar to Linux basico-7.PDF

Linux basico-8.PDF
Linux basico-8.PDFLinux basico-8.PDF
Linux basico-8.PDFULEAM
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDFULEAM
 
Unidad 9 - Instalación y configuración Linux
Unidad 9 - Instalación y configuración LinuxUnidad 9 - Instalación y configuración Linux
Unidad 9 - Instalación y configuración Linuxvverdu
 
Introducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXIntroducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXJose Pla
 
Actividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emersonActividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emersonEmerson Gonzalez IF04 T I
 
Linux for bioinformatics
Linux for bioinformaticsLinux for bioinformatics
Linux for bioinformaticscursoNGS
 
01 practicas de laboratorio
01 practicas de laboratorio01 practicas de laboratorio
01 practicas de laboratorioFree Lancer
 
Como instalar Unix(Johanna)
Como instalar Unix(Johanna)Como instalar Unix(Johanna)
Como instalar Unix(Johanna)JohannaCamila
 
Cómo crear una distribución Linux
Cómo crear una distribución LinuxCómo crear una distribución Linux
Cómo crear una distribución LinuxMauro Parra-Miranda
 
Tema1 redhat
Tema1 redhatTema1 redhat
Tema1 redhatmmartinv
 
Linux basico-5.PDF
Linux basico-5.PDFLinux basico-5.PDF
Linux basico-5.PDFULEAM
 
Como instalar unix ...lili
Como instalar unix ...liliComo instalar unix ...lili
Como instalar unix ...lilijassley 2000
 

Similar to Linux basico-7.PDF (20)

Linux basico-8.PDF
Linux basico-8.PDFLinux basico-8.PDF
Linux basico-8.PDF
 
Linux basico-6.PDF
Linux basico-6.PDFLinux basico-6.PDF
Linux basico-6.PDF
 
Unidad 9 - Instalación y configuración Linux
Unidad 9 - Instalación y configuración LinuxUnidad 9 - Instalación y configuración Linux
Unidad 9 - Instalación y configuración Linux
 
Introducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUXIntroducción a GNU - POSIX - LINUX
Introducción a GNU - POSIX - LINUX
 
Linux
LinuxLinux
Linux
 
Actividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emersonActividad v administración y comandos básicos if04 emerson
Actividad v administración y comandos básicos if04 emerson
 
Linux for bioinformatics
Linux for bioinformaticsLinux for bioinformatics
Linux for bioinformatics
 
01 practicas de laboratorio
01 practicas de laboratorio01 practicas de laboratorio
01 practicas de laboratorio
 
Unix JCRB
Unix JCRBUnix JCRB
Unix JCRB
 
Como instalar Unix(Johanna)
Como instalar Unix(Johanna)Como instalar Unix(Johanna)
Como instalar Unix(Johanna)
 
Cómo crear una distribución Linux
Cómo crear una distribución LinuxCómo crear una distribución Linux
Cómo crear una distribución Linux
 
Tema1 redhat
Tema1 redhatTema1 redhat
Tema1 redhat
 
Linux basico-5.PDF
Linux basico-5.PDFLinux basico-5.PDF
Linux basico-5.PDF
 
Transcripcion yamy
Transcripcion yamyTranscripcion yamy
Transcripcion yamy
 
Como instalar unix ...lili
Como instalar unix ...liliComo instalar unix ...lili
Como instalar unix ...lili
 
Linux básico
Linux básicoLinux básico
Linux básico
 
arquitectura-de-linux
arquitectura-de-linuxarquitectura-de-linux
arquitectura-de-linux
 
Genesis Campos
Genesis CamposGenesis Campos
Genesis Campos
 
Mary cervantes
Mary cervantesMary cervantes
Mary cervantes
 
Curso básico linux
Curso básico linuxCurso básico linux
Curso básico linux
 

More from ULEAM

Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_JessSistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_JessULEAM
 
capitulo5-2011-110612183514-phpapp01
capitulo5-2011-110612183514-phpapp01capitulo5-2011-110612183514-phpapp01
capitulo5-2011-110612183514-phpapp01ULEAM
 
CAPITULO-2-2011
CAPITULO-2-2011CAPITULO-2-2011
CAPITULO-2-2011ULEAM
 
CAP-3
CAP-3CAP-3
CAP-3ULEAM
 
Linux basico-1.PDF
Linux basico-1.PDFLinux basico-1.PDF
Linux basico-1.PDFULEAM
 
Linux basico-2.PDF
Linux basico-2.PDFLinux basico-2.PDF
Linux basico-2.PDFULEAM
 
UBUNTU-1
UBUNTU-1UBUNTU-1
UBUNTU-1ULEAM
 
Capitulo 1
Capitulo 1Capitulo 1
Capitulo 1ULEAM
 
Instalación de Ubuntu
Instalación de UbuntuInstalación de Ubuntu
Instalación de UbuntuULEAM
 
Manual de kicad
Manual de kicadManual de kicad
Manual de kicadULEAM
 
Manual de python
Manual de pythonManual de python
Manual de pythonULEAM
 
Manual de bouml
Manual de boumlManual de bouml
Manual de boumlULEAM
 

More from ULEAM (13)

Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_JessSistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess
 
capitulo5-2011-110612183514-phpapp01
capitulo5-2011-110612183514-phpapp01capitulo5-2011-110612183514-phpapp01
capitulo5-2011-110612183514-phpapp01
 
CAPITULO-2-2011
CAPITULO-2-2011CAPITULO-2-2011
CAPITULO-2-2011
 
CAP-3
CAP-3CAP-3
CAP-3
 
Linux basico-1.PDF
Linux basico-1.PDFLinux basico-1.PDF
Linux basico-1.PDF
 
Linux basico-2.PDF
Linux basico-2.PDFLinux basico-2.PDF
Linux basico-2.PDF
 
UBUNTU-1
UBUNTU-1UBUNTU-1
UBUNTU-1
 
W7
W7W7
W7
 
Capitulo 1
Capitulo 1Capitulo 1
Capitulo 1
 
Instalación de Ubuntu
Instalación de UbuntuInstalación de Ubuntu
Instalación de Ubuntu
 
Manual de kicad
Manual de kicadManual de kicad
Manual de kicad
 
Manual de python
Manual de pythonManual de python
Manual de python
 
Manual de bouml
Manual de boumlManual de bouml
Manual de bouml
 

Linux basico-7.PDF

  • 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
  • 13. Con “-aux”, presenta todos los procesos en el sistema detalladamente. [usr000@linuxpc usr000]$ ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 1368 136 ? S Sep17 0:05 init root 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 [ksoftirqd root 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/DM root 7 0.0 0.0 0 0 ? SW Sep17 0:15 [kscand/No root 8 0.0 0.0 0 0 ? SW Sep17 0:00 [kscand/Hi root 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/ming root 1717 0.0 0.0 1352 4 tty6 S Sep17 0:00 /sbin/ming root 9201 0.0 0.2 1492 128 ? S Sep18 0:01 in.telnetd root 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 -bash root 13202 0.0 0.9 1492 584 ? S 09:37 0:00 in.telnetd root 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 -bash root 13268 0.1 0.6 1348 388 tty1 S 10:07 0:00 /sbin/ming usr000 13272 0.0 1.0 2620 664 pts/2 R 10:07 0:00 ps -auxm LINUX Básico (7. Shells(2)) 13
  • 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
  • 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. 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