estudio de la terminal

Upload: lonceph

Post on 09-Jul-2015

48 views

Category:

Documents


0 download

TRANSCRIPT

EL MODO DE ELIMINAR KERNELS ANTIGUOS vamos a la terminal y tecleamos: dpkg selections | grep linux-image con esto veremos el listado de kernels instalados en nuestro sistema ahora ... ejecutamos el comando : sudo aptitude purge nombre_de_la_imagen ENCONTRAR LA INFORMACION DE LA MEMORIA DEL SISTEMA gedit /proc/meminfo con este siguiente comando miramos los segmentos de memoria compartida ipcs -m cuando el kernel arranca crea los primeros procesos llamados procesos de inicio, los procesos de inicio se cargan en la memoria virtual

con el comando ls -F -R mostramos los directorios que se encuentran asi como tambien su contenido completo, en pocas palabras se utiliza este comando para mostrar todo lo que hay en esa carpeta en especifico incluyendo sus archivos. Se utiliza el comando ls -sail para mostrar la lista completa de parametros el comando touch crea un nuevo archivo que nosotros le especifiquemos por ejemplo: touch test cuando al comando touch se le pasa como argumento esto: -m este modificara o actualizara el tiempo en el archivo al cual se le pase el comando por ejemplo: touch -m test : este ahora mostrara el tiempo actual con el comando ls ahora cuando se le pasa como argumento a el comando touch la terminacion -t podremos actualizar la fecha de creacion del archivo, veamos su sintaxis: touch -t ao_mes_dia_hora nombre_del_archivo ejemplo: le daremos una nueva fecha de creacion al archivo test1 esta sera : 25 de febrero de 1985 a las 11:00 am touch -t 198502251100 test

comando cp utilizamos el comando cp para copiar un archivo y directorios y enviarlos a una ubicacin especifica en el sistema de archivos sintaxis: cp origen_del_archivo nombre destino tambien en la ubicacion actual puedes crear una copia del archivo con diferente nombre ejemplo: cp test test2 si ejecutamos el comando ls -il veremos que los inodos son diferentes (logicamente) el parametro -R en el comando cp es muy poderoso, permite recursivamente copiar todos los archivos de un directorio LINKEANDO ARCHIVOS sintaxis : cp -l archivo_acopiar nuevo_archivo con este comando linkeamos el archivo a copiar con el original (esto significa que un cambio en el archivo original originara un cambio tambien en el archivo linkeado y al reves , un cambio en el linkeado originara un cambio en el original) checa con el comando ls -il los inodos y estos son iguales (el archivo original y el linkeado)

CREADO DE ENLACE SUAVE sintaxis cp -s archivo_original archivo_nuevo con este comando crearemos un enlace suave de test1 : esto significa que los inodos del archivo nuevo va a ser diferente del original y que el tamao tambien sera diferente . EL COMANDO MV mv mueve los archivos de un lugar a otro en el mundo linux cambiar el nombre a los archivos se le conoce tambien como mover. Por ejemplo cd /home/tron/Desktop touch test1 cp -s test1 test2 mv test1 test2 si ejecutamos la ultima orden el archivo test1 ahora se llamara test2 pero si lo queremos hacer al reves nos marcara un error diciendo que son el mismo archivo ejemplo: mv test1 test2 ELIMINAR ARCHIVOS comando rm rm -r tambien elimina la carpeta ELIMINAR DIRECTORIOS comando rmdir rm -r tambien elimina la carpeta y su contenido MOSTRAR LAS ESTADISTICAS DE ARCHIVO comando: stat con este comando mostramos informacion detallada acerca de un determinado archivo MOSTRAR EL TIPO DE ARCHIVO comando : file MOSTRAR EL CONTENIDO DE UN ARCHIVO EN TERMINAL comando : cat sintaxis : cat nombre_archivo parametro -n: enumera los renglones del archivo

parametro -b : este parametro enumera lo reglones y deja de enumerar aquellos renglones que no tengan cadenas de texto o informacion. Parametro -s comprime los espacios en blanco y muestra la informacion comprimida (reducida) en la terminal COMANDO MORE cuando mostramos un arcivo con el comando cat notamos que es algo molesto el no poder mirar linea por linea el contenido cuando el archivo tiene demasiado texto. Con more se soluciona

sintaxis : more nombre_archivo COMANDO LESS este comando en si es todo un programa entero ( un more avanzado) , sus parametros nos permiten realizar bsquedas avanzadas, saltos , etc sintaxis: less archivo cuando entras , nos muestra el archivo, para poder salir solo presionamos la tecla q, si deseamos ver todos sus parmetros en la ayuda entonces presionamos la tecla h COMANDO TAIL

despliega el ultimo grupo de lineas de un archivo sintaxis : tail [parametros] nombre_archivo -n : le indicas cuantas lineas desde el final del archivo debe mostrarte ejemplo: tail -n 3 archivo.txt eto mostrara las ultimas 3 lineas del archivo COMANDO HEAD al contrario de tail, este comando muestra las primeras lineas del archivo COMANDO PS comando importante que muestra lotes de informacion de procesos que corren en nuestro sistema en ese momento parametros:

UID : es el usuario responsable de lanzar ese proceso PID : es el id del proceso PPID : es el PID del proceso padre C : tiempo de vida en el procesador del proceso STIME : tiempo en el sistema del proceso desde que arranco TTY: el terminal desde que este proceso arranco (device terminal) TIME: tiempo de CPU acumulado requerido al correr el proceso CMD : nombre del programa que esta corriendo con el argumento -f se muestra en columnas la informacin anterior que se explica.

Con el argumento -l se expande la informacin : ps -F: banderas (flags) del sistema asignadas al proceso por el kernel S : estado del proceso (0= corriendo en el procesador, R= esperando a correr, S= durmiendo, Z= zombie, T= proceso parado) PRI : prioridad del proceso ( grandes numeros son de prioridad mas baja) NI : es usado para determinar prioridades ADDR : direccion en memoria del proceso SZ : apriximacion de cantidad de espacio swap requerida si el proceso se intercambia WCHAN : direccion de la funcion del kernel cuando el proceso esta durmiendo ps -efH : ordena en forma gerarjica los procesos ( con el numero de PID) ps -e - - forest : con este comando ordena en forma de arbol la informacion de los procesos

COMANDO TOP

el comando top muestra informacin en tiempo real de los procesos

SEALES QUE SE PUEDEN ENVIAR A PROCESOS LINUX

COMANDO KILL el comando kill permite que se envien seales a los procesos , basado en el id del proceso (PID) kill -9 -1 : mata todos los procesos que se puedan matar COMANDO KILLALL detiene a los procesos utilizando sus nombres ejemplo killall -i xterm pide confirmacion antes de matar el proceso xterm killall -I xterm mata el proceso , este no hace la diferencia entre maysculas y minsculas del nombre del proceso COMANDO MOUNT por default el comando mount despliega una lista actual de dispositivos montados en el sistema mount monta y desmonta dispositivos media , el sistema de archivos linux combina discos media con un directorio virtual , para poder usar un nuevo dispositivo en el sistema se nesesita un lugar en el directorio virtual 4 piezas de informacion que el comando mount proveee la ubicacion del dispositivo el punto de montaje de el directorio virtual cuando el dispositivo es montado el tipo de sistema de archivos el estatus de acceso del dispositivo montado

para montar manualmente un dispositivo en el directorio virtual, primero hay que loggearse como root, despues se ejecuta el siguiente comando mount tipo dispositivo directorio tipo se refiere al tipo de sistema de archivos del dispositivo dispositivo se refiere a la ubicacion de los archivos del dispositivo para el disp de medios directorio se refiere a la ubicacion en el directorio virtual para el punto de montaje

el la actualidad en el mundo linux es comun realizar el trabajo sobre imagenes .ISO , para poder montar una imagen .ISO en un directorio virtual se debe utilizar -o y el parametro LOOP como en el siguiente caso: #creamos una carpeta mkdir directorio_pruebas # ahora ejecutamos el siguiente comando mount -t iso9660 -o loop mi_imagen..iso directorio_pruebas ahora ... vamos a montar un directorio sobre otro directorio de la siguiente forma sudo mount bind directorio_a_montar COMANDO UMOUNT es usado para desmontar dispositivos sintaxis : umount [directorio | dispositivo] ejemplo: para desmontar la imagen iso anterior recurrimos a lo siguiente sudo umount /home/tron/directorio_pruebas COMANDO DF con el comando df se muestra cada uno de los sistemas de archivos que contienen datos . Una utilidad popular para df es colocarle -h el cual nos mostrara en mb o gb la cantidad de datos en un dispositivo sintaxis : df -h COMANDO DU muestra el uso disco de un directorio en especifico, trata de una manera rpida de determinar si hay espacios vacos en el sistema. du -h : nuestra el espacio en mb o gb du -s : suma las cantidades de mb se puede combinar de esta forma du -s -h para mostrar el total en mb o Gb directorio_de_destino

COMANDO SORT cuando se trabaja con grandes cantidades de informacin , es til utilizar el comando sort, aplica un mtodo de clasificacin (sorting) al fichero sort -n ordena de menor a mayor sin argumentos el comando sort clasifica el archivo separando nmeros de caracteres,etc. Sort se puede utilizar con otros comandos p/e

du | sort -n estos son los argumentos para sort

BUSQUEDA DE DATOS a menudo en archivos de gran tamao nosotros tenemos que buscar una linea especifica de datos en algn lugar del archivo, en lugar de buscar manualmente a travs de todo el archivo , podemos dejar que el comando grep busque por nosotros. COMANDO GREP sintaxis grep [opciones] patrn [archivo] el comando gfrep da como salida las lineas que contienen el patrn indicado. Para realizar una bsqueda inversa (no mostrar las lineas del patrn que buscas) se le aade la opcin -v ejemplo : grep -v c test1.txt con la opcion -n nos muestra el numero de la linea en donde se encuentra el patron ejemplo : grep -n c test1.txt si lo unico que buscas es el numero total de lineas que tienen el patron se coloca la opcion -c ejemplo : grep -c c test1.txt si lo que necesitas es buscar un juego de patrones se usa la opcion -e COMANDO LOCATE busca archivos por nombre o mediante el patron colocado sintaxis : locate [opcion] patron con locate -c PATRON solamente te va a enviar el numero de archivos que contengan el patrn colocado COMPRIMIR DATOS COMANDO BZIP2 es especialmente utilizado en cuando se comprimen grandes cantidades de archivos (binarios). Sus utilidades son .. bzip2 .... compresion de archivos bzcat .... para desplegar el contenido de texto de archivos que estan comprimidos bunzip2 ... descomprimir archivos compresos con esxtension .bz2 bzip2recover ... trata de recuperar archivos compresos daados COMANDO GZIP gzip ... para comprimir archivos gzcat ... para desplegar el contenido de un archivo compreso gunzip ... descomprimir el archivo

COMANDO ZIP el comando zip en linux contiene 4 utilidades zip... crea un archivo comprimido que contiene archivos y directorios zipcloak .. crea y encripta un archivo comprimido que contiene archivos y directorios zipnote ... extrae los comentarios de un archivo .zip zipsplit ... divide un archivo .zip en otros mas pequeos de un tamao fijo unzip ... extrae los archivos de un archivo comprimido el poder del comando zip radica en la habilidad de comprimir todo el directorio de archivos en un solo archivo compreso. ARCHIVANDO DATOS por mucho el comando mas popular y utilizado en el mundo linuz es tar COMANDO TAR el comando tar fue originalmente usado para escribir archivos en una cinta de dispositivo. Formato: tar funcin [opciones] objeto1 objeto2

ejemplo : empaquetar un directorio con tar tar -cvf archivo.tar micarpeta/ v : muestra las operaciones que va realizando c : crea archivo tar f: indica que se le dara un nombre al archivo tar ejemplo : extraer los archivos empaquetados tambin utilizamos el comando tar para extraer los archivos: tar vxf archivo.tar se puede extraer solo los archivos de nuestro interes de ezte modo:tar -xvf mi_archivo.tar "*.jpg"

para mirar los archivos en un empaquetado ejecutamos el siguiente comando

tar -tf archivo.tar USANDO ENTORNO DE VARIABLES EN LINUX El shell usa una caracterstica llamada variables de entorno para almacenar informacin acerca de la sesin en shell, esta caracterstica tambin permite almacenar datos en a memoria que pueda ser facilmente accesible por algn programa o script que se encuentre corriendo en el shell. Hay 2 tipos de variables de entorno: variables locales variables globales las variables de entonrno globales son visibles desde una sesin en el shell y algunos procesos hijos que el shell genera. Las variables locales son nicamente visibles cuando son creadas dentro de esa sesin shell. Se utilizan variables de entorno globales cuando aplicaciones con procesos hijos requieren informacin de los procesos padres. COMANDO PRINTENV Este comando sirve para visualizar las variables de entorno globales. COMANDO ECHO sirve para desplegar individualmente el valor de una variable de entorno en pantalla ejemplo echo $HOME VARIABLES DE ENTORNO LOCALES COMANDO SET el comando set despliega todo un conjunto de variables de entorno para procesos en especifico. AJUSTE DE LAS VARIABLES DE ENTORNO GLOBALES se utiliza el comando export ejemplo test=testeando una cadena larga echo $test testeando una cadena larga export test bash echo $test testeando una cadena larga REMOVER UNA VARIABLE DE ENTORNO GLOBAL COMANDO UNSET utilizando el ejemplo anterior para remover la variable de entorno echo $test testeando una cadena larga unset test echo $test

VARIABLES DE ENTORNO POR DEFAULT hay variables de entorno especificas que el shell usa por default para definir el entorno del sistema, tu puedes siempre contar con este conjunto de variables en el sistema Linux. La mas importante variable de entorno es PATH. Cuando se ejecuta un comando en el shell, el shell debe buscar en el sistema el programa . PATH define el directorio donde buscara los comandos.

COMO EJECUTAR LAS LISTAS ANTERIORES echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games AGREGAR UN NUEVO DIRECTORIO AL PATH PATH=$PATH:/home/tron/Escritorio asi agregamos un nuevo directorio al PATH en el cual podemos tener algn ejecutable y llamarlo desde

la linea de comandos. LOCALIZACION DE VARIABLES DE ENTORNO EN EL SISTEMA existen 3 formas en las que corre el shell *entrada por default *shell interactivo *no interactivo (al correr scripts) ENTRADA POR DEFAULT cuando te registras en el sistema , el shell te da entrada y a la vez nesesita de 4 archivos de inicios de procesos. El orden de los procesos en el shell son los siguientes: /etc/profile $HOME/.bash profile $HOME/.bash login $HOME/.profile /etc/profile es el archivo de inicio por default del shell. Todo usuario que esta en el sistema ejecuta este archivo de inicio cuando inicia una sesion en el shell. Los otros 3 archivos de inicio son especificamente para cada usuario y pueda ser personalizado para cada requerimiento especifico . CONTENIDO DE PROFILE cat /etc/profile CONTENIDO DE PROFILE.D ls -l /etc/profile.d SHELL INTERACTIVA cuando corres el shell sin loguearte a eso se le llama shell interactiva. El codigo lo podemos mostrar en ubuntu con more /etc/bash.bashrc tambien el /home/usuario/.bashrc VARIABLES TIPO ARRAY una buena caracteristica de las variables de entorno es que pueden utilizar arreglos, un variable de tipo arreglo es aquella que puede tener multiples valores . Ejemplo en el shell test=(uno dos tres) echo $test uno

para referencia a cada uno se hace los siguiente echo ${test[1]} dos para desplegar todo el array entero echo ${test[*]} para remover un elemento del array unset test[1] (remueve al elemento de la segunda posicion) USO DEL COMANDO ALIAS el comando alias te permite crea un alias (nombre) para los comandos comunes (junto con sus parmetros) , te ayuda a mantener su escritura al mnimo. Se puede mirar una lista de los alias activos con el comando: alias -p podemos crear nuestros propios alias usando el comando alias, Ejemplo: alias tron='ps' cuando en el shell ejecutes la palabra tron entonces llamara al comando ps, sin duda resulta cmodo utilizar un alias cuando el nombre comando es largo o difcil de memorizar. SEGURIDAD EN LINUX (linux security) el centro de la seguridad en un sistema linux es la cuenta de usuario, cada usuario que accede al sistema cuenta con una unica cuenta de usuario asignada. Los permisos de usuario tienen un seguimiento usando una ID, esta ID es asignada al usuario cuando la cuenta de usuario es creada. UID es un valor numerico unico para cada usuario, sin embargo tu no debes de accdeer al sistema usando tu UID, en su lugar usa el acceso por nombre la cual es acceder utilizando una cadena de 8 o mas caracteres EL ARCHIVO /ETC/PASSWD el archivo /etc/passwd contiene varias piezas de informacin acerca de el usuario. Al usuario root siempre se le asigna 0 en el UID. El passsword se muestra en el archivo con una x en las versiones mas recientes los passwords de los usuarios se encuentran eln archivos separados (/etc/shadow).

EL ARCHIVO /ETC/SHADOW el archivo /ect/shadow provee de mas control al sistema linux asi como tambien de gestion de passwords, unicamente el usuario root tiene acceso al archivo /etc/shadow, marcando asi mayor seguridad que /etc/passwd. El archivo /etc/shadow contiene un registro para cada cuenta de usuario en el sistema. En el archivo se mira algo como esto: tron: $6$sZUh5t8i$Xpub9oUj7N7l9x8YMQ6L9tmtiewRgzRQO4ZRiFK9ZBskQCjfg2.O2OpimmowhJG AGGL3CuNO45oZ9CLgCOWwL1:15096:0:99999:7::: AGREGANDO NUEVOS USUARIOS la herramienta primaria usada para agregar nuevos usuarios en el sistema linux es el comando usseradd COMANDO USERADD este comando provee de una manera facil de crear una nueva cuenta de usuario y de montar una directorio de estructura /HOME para el usuario creado. Useradd -D nos muestra es status actual de nuestra cuenta GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/sh SKEL=/etc/skel CREATE_MAIL_SPOOL=no el comando useradd permite la administracion y configuracion de /HOME, primero se crea un directorio /HOME temporal, esto nos permite colocar archivos por default para el sistema en todos los directorios /HOME automaticamente. Revisemos el siguiente archivo ls -al /etc/skeel tron@tron-linux:~$ ls -al /etc/skel/ total 32 drwxr-xr-x 2 root root 4096 2011-04-25 18:04 . drwxr-xr-x 139 root root 12288 2011-05-23 12:11 .. -rw-r--r-- 1 root root 220 2011-03-31 13:26 .bash_logout -rw-r--r-- 1 root root 3353 2011-03-31 13:26 .bashrc -rw-r--r-- 1 root root 179 2010-09-15 06:41 examples.desktop -rw-r--r-- 1 root root 675 2011-03-31 13:26 .profile checa que estos archivos son los archivos de inicio standar para las variables de entorno del shell. El sistema automaticamente copia estos archivos en todos los directorios /HOME de usuario que tu creas.

Ahora vamos a crear un nuevo usuario de pruebas sudo useradd -d /home/puto especificar una fecha de expiracion sudo useradd -e 2011-05-30 puto ahora un usuario sin directorio de inicio sudo useradd -M puto nota: al crear un usuario puedes checar los archivos /etc/passwd y /etc/shadow y notaras que esta el nombre de usuario registrado.

LISTA DE PARAMETROS

REMOVER USUARIO COMANDO USERDEL ejemplo: sudo userdel test cuando tiene creado un directorio al usar useradd -d entonces es recomendable utilizar userdel con el parametro -r ejemplo: sudo userdel -r test COMANDOS DE UTILIDAD PARA LA MODIFICACION DE CUENTAS DE USUARIO USERMOD edita los campos de una cuenta de usuario , tambien especifica el grupo al que pertenece ya sea primario o secundario ejemplo: cambiar el login de la cuenta useradd -d /home/puto puto usermod -l putote puto ARGUMENTOS DE USERMOD -l cambia el nombre de la cuenta del usuario -p cambia el password de la cuenta -U desbloquea la cuenta COMANDOS PASSWD Y CHPASSWD una forma rapida de cambiar el password de un suario es con el comando passwd tron@tron-linux:~$ sudo passwd brujo Introduzca la nueva contrasea de UNIX:

Vuelva a escribir la nueva contrasea de UNIX: passwd: contrasea actualizada correctamente tron@tron-linux:~$ tron@tron-linux:~$ tron@tron-linux:~$ su brujo Contrasea: $ con el argumento -e forzamos a que el usuario en la proxima sesion tenga que cambiar su contrasea. El comando chpasswd lee una lista de usuarios y sus contraseas de la entrada standar de la terminal y puedes utilizar la informacion para actualizar un grupo de usuarios cada liena debe tener el siguiente formato: usuario:password COMANDO CHSH, CHFN Y CHAGE son comandos especializados para funciones especificas. El comando chsh permite de manera rapida cambiar el shell del usuario. tron@tron-linux:/etc$ chsh Contrasea: Cambiando la shell de acceso para tron Introduzca el nuevo valor, o presione ENTER para el predeterminado Shell de acceso [/bin/bash]: tron@tron-linux:/etc$ para encontrar todos los nombres de shells de tu sistema y poder asi cambiarlos con chsh ejecuta el siguiente comando: more /etc/shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh /usr/bin/esh /bin/dash /bin/bash /bin/rbash COMANDO FINGER el comando finger permite que tu busques de manera facil informacion acerca de usuarios en el sistema. Ejemplo tron@tron-linux:~$ finger tron Login: tron Name: tron

Directory: /home/tron Shell: /bin/bash On since Fri May 27 14:50 (CDT) on tty7 from :0 20 minutes 36 seconds idle On since Fri May 27 15:00 (CDT) on pts/0 from :0.0 No mail. No Plan. COMANDO CHFN el comando chfn nos permite de manera interactiva realizar cambios de usuario e informacion en una cuenta, por ejemplo : tenemos el usuario brujo, vamos a ejecutar el comando seguido de el nombre de usuario: tron@tron-linux:~$ sudo chfn brujo Cambiando la informacin de usuario para brujo Introduzca el nuevo valor, o presione ENTER para el predeterminado Nombre completo []: brujo Nmero de habitacin []: 1 Telfono del trabajo []: 2913395 Telfono de casa []: 12345 Otro []: no tron@tron-linux:~$ finger brujo Login: brujo Name: brujo Directory: /home/brujo Shell: /bin/sh Office: 1, 291-3395 Home Phone: x1-2345 Never logged in. No mail. No Plan. tron@tron-linux:~$ nota: toda la informacion de salida en el comando finger se encuentra en /etc/passwd COMANDO CHAGE el comando chage te permite darle una fecha de expiracin al passwword del usuario, es muy util este comando para expirar cuentas que se crean de manera temporal o si se te ha olvidado eliminar usuarios. COMANDO DATE el comando date imprime la hora y fecha actual en el sistema **********************+ NOTA : FALTA CHECAR EL TEMA DE GRUPOS EN LINUX ********************** CAMBIANDO LA CONFIGURACION DE SEGURIDAD si ya se ha creado un archivo o directorio, y nesesitas cambiar la configuracion de seguridad en el , hay unas cuantas utilidades diferentes disponibles en linux, esta seccion muestra como cambiar los permisos existentes del propietario por default y la configuracion para un archivo o directorio en un grupo.

CAMBIANDO PERMISOS: COMANDO CHMOD el comando chmod permite que cambies la configuracin de seguridad para los archivos o directorio el formato es el siguiente: chmod [opciones] [modo] [archivo] el parmetro modo permite configurar la seguridad del archivo usando modo octal o simblico, el modo octal es bastante sencillo, solo debes de utilizar los 3 dgitos octales, ejemplo: tron@tron-linux:~/Escritorio$ ls -l ever -rwxr-xr-x 1 tron tron 7178 2011-05-19 13:01 ever tron@tron-linux:~/Escritorio$ chmod 760 ever tron@tron-linux:~/Escritorio$ ls -l ever -rwxrw---- 1 tron tron 7178 2011-05-19 13:01 ever el formato de modo simblico es el siguiente: u: para el usuario g para el grupo o: para otros (todos los dems) a: para todos los mencionados anteriormente los siguientes smbolos son usados al indicar si deseas (+)agregar permisos a los permisos existentes (-)sustraer permisos (=) establecer los permisos los ltimos smbolos son los siguientes: X : asigna permiso de ejecucin nicamente si el objeto es un directorio o si al leerlo tiene permisos de ejecucin. s t u g o : establece UID o GID en ejecucin : para guardar el programa siguiente : establece los permisos de usuario : establece los permisos de grupo : establece los permisos de los anteriores (usuario y grupo)

usamos para este ejemplo lo siguiente: tron@tron-linux:~/Escritorio$ chmod o+r test2 tron@tron-linux:~/Escritorio$ ls -l test2 -rwxrw-r-- 1 tron tron 0 1985-03-23 11:00 test2 tron@tron-linux:~/Escritorio$ los signos o+x agregan permisos de lectura a todos ahora utilizando o-x....

tron@tron-linux:~/Escritorio$ chmod -r test2 tron@tron-linux:~/Escritorio$ ls -l test2 -rwxrw---- 1 tron tron 0 1985-03-23 11:00 test2 tron@tron-linux:~/Escritorio$ tron@tron-linux:~/Escritorio$ more test2 test2: Permiso denegado esto quita los permisos de ejecucion bueno ahora chequemos estas lineas... tron@tron-linux:~/Escritorio$ ps > test2 tron@tron-linux:~/Escritorio$ chmod +r test2 tron@tron-linux:~/Escritorio$ cat test2 PID TTY TIME CMD 1816 pts/0 00:00:00 bash 3148 pts/0 00:00:00 ps tron@tron-linux:~/Escritorio$ chmod -rw test2 chmod: test2: los nuevos permisos son ----w----, y no --------tron@tron-linux:~/Escritorio$ ls -l test2 -----w---- 1 tron tron 84 2011-06-12 01:31 test2 tron@tron-linux:~/Escritorio$ chmod -w test2 chmod: test2: los nuevos permisos son ----w----, y no --------tron@tron-linux:~/Escritorio$ ls -l test2 -----w---- 1 tron tron 84 2011-06-12 01:31 test2 tron@tron-linux:~/Escritorio$ ps > test2 bash: test2: Permiso denegado tron@tron-linux:~/Escritorio$ como en la parte anterior habiamos quitado los permisos de lectura pero no de escritura podemos escribir sobre test2, para eso mandamos por una pipe la informacion del comando ps y que sobreescriba lo anterior que tenia escrito, ahora le damos permisos de lectura al archivo (chmod +r test2) y visualizamos su contenido con cat, de nuevo quitamos los permisos de lectura y despues de escritura a nivel de grupo, chequemos que se mantiene una w , ahora queremos enviar por tuberia de nuevo el comando ps al archivo, pero este nos lo niega mostrandonos permiso denegado CAMBIANDO DE PROPIETARIO algunas veces nesesitamos camibiar de propietario el archivo, por ejemplo cuando alguien se va de la empresa y tener que pasar el trabajo a otro trabajador , eontonces tendriamos que cambiar el archivo de propietario. COMANDO CHOWN el comando chown nos sirve para de manera sencilla cabiar de propietario algun archivo o varios formato: chown opciones propietario[.grupo] archivo ejemplo

tron@tron-linux:~/Escritorio$ sudo chown brujo test2 [sudo] password for tron: tron@tron-linux:~/Escritorio$ stat test2 File: test2 Size: 84 Blocks: 8 IO Block: 4096 fichero regular Device: 815h/2069d Inode: 1313940 Links: 1 Access: (0775/-rwxrwxr-x) Uid: ( 1001/ brujo) Gid: ( 1000/ tron) Access: 2011-06-12 01:56:08.652900001 -0500 Modify: 2011-06-12 01:31:37.516900002 -0500 Change: 2011-06-12 01:56:07.636900002 -0500 tron@tron-linux:~/Escritorio$ ahora volvemos a cambiar de dueo al archivo..... y notemos con stat como ha cambiado el propietario tron@tron-linux:~/Escritorio$ sudo chown tron test2 tron@tron-linux:~/Escritorio$ stat test2 File: test2 Size: 84 Blocks: 8 IO Block: 4096 fichero regular Device: 815h/2069d Inode: 1313940 Links: 1 Access: (0775/-rwxrwxr-x) Uid: ( 1000/ tron) Gid: ( 1000/ tron) Access: 2011-06-12 02:11:32.312900001 -0500 Modify: 2011-06-12 01:31:37.516900002 -0500 Change: 2011-06-12 02:11:31.296900001 -0500 tron@tron-linux:~/Escritorio$ COMPARTIENDO ARCHVOS probablemente tu ya has descubierto como crear grupos para crear y compartir archivos en el sistema. sin embargo hay cosas que son algo mas complicadas para el completo entorno de la comparticin de archivos. cuando tu creas un nuevo archivo, Linux asigna los permisos usando por default UID y GID, para permitir que que otros accedan a los archivos tu necesitas cambiar todos los permisos de seguridad para todo grupo o asignar el archivo a un grupo diferente por default que contenga otros usuarios. hay 3 bit adicionales de informacin que almacena Linux para cada archivo en determinado directorio. el conjunto id de usuario (SUID): cuando el archivo es ejecutado por el usuario, el programa corre bajo los permisos de el propietario. el conjunto de grupo id (SGID): para un archivo, el programa corre bajo los permisos de el grupo, para un directorio, nuevos archivos creados en el directorio usan el directorio de grupo como grupo por default. el bit pegajoso : el archivo se mantiene en la memoria (se pega) una ves finalizado el proceso.

el bit SGID es importante en la comparticion de archivos , SGID utiliza el comando chmod en valor octal.

ejemplo: creamos un directorio tron@tron-linux:~/Escritorio$ mkdir directoriotest ls -l drwxr-xr-x 2 tron tron creamos un grupo tron@tron-linux:~/Escritorio$ sudo addgroup shared Aadiendo el grupo `shared' (GID 1002) ... Hecho. cambiamos de grupo al directorio tron@tron-linux:~/Escritorio$ sudo chgrp shared directoriotest/ tron@tron-linux:~/Escritorio$ ls -l drwxr-xr-x 2 tron shared 4096 2011-06-28 09:46 directoriotest 4096 2011-06-28 09:46 directoriotest

tron@tron-linux:~/Escritorio$ umask 002 tron@tron-linux:~/Escritorio$ tron@tron-linux:~/Escritorio$ cd directoriotest/ tron@tron-linux:~/Escritorio/directoriotest$ touch archivotest tron@tron-linux:~/Escritorio/directoriotest$ ls -l total 0 -rw-rw-r-- 1 tron tron 0 2011-06-28 09:56 archivotest todos los miembros del grupo nesesitan tener una valor de umask para que pueda estar en modo de escritura para todos los miembros (en este ejemplo colocamos umask en 002).

ahora todos los usuarios de este grupo (shared) pueden acceder al archivo (archivotest).

CONSTRUCCION DE SCRIPTS BASICOS USANDO MULTIPLES COMANDOS si buscas ejecutar 2 comandos de manera simultanea , los 2 comandos deben estar separados por un semicolon o una linea vertical ejemplo: tron@tron-linux:~/Escritorio/directoriotest$ date | who tron tty7 2011-06-28 07:43 (:0) tron pts/0 2011-06-28 08:12 (:0.0 al realizar esto estamos dando los pasos base en un script, para crear un script nesesitaremos de un editor (emacs,vi,vim,gedit). CREANDO UN ARCHIVO SCRIPT lo primero que nesesitamos sera un editor de textos . El simbolo # nos sirve para comentar una linea dentro del archivo, ejemplo: #este script despliega el comando who who en lo particular cuando elaboro un script le doy la terminacion .sh y en terminal lo ejecuto de este modo: tron@tron-NET:~/Escritorio$ sh test.sh tron tty7 2011-07-25 16:37 (:0) tron pts/0 2011-07-25 16:38 (:0.0) (si logran notar se ejecuta el comando who del script) ahora vamos a ver como agregar mensajes de texto al script y que los despliegue en la salida, para realizarlo utilizamos el comando echo , cuando lo utilices ejemplo en la consola tron@tron-NET:~/Escritorio$ echo hola hola tron@tron-NET:~/Escritorio$ ahora utilizando el script, veamos el contenido del script

y al ejecutarlo nos muestra lo siguiente tron@tron-NET:~/Escritorio$ sh prueba.sh tron tty7 2011-07-25 16:37 (:0) tron pts/0 2011-07-25 16:38 (:0.0) hola tron@tron-NET:~/Escritorio$ USANDO VARIABLES correr comandos individuales en un script es muy util, pero tiene sus limitaciones , a menudo uno busca incorporar otros datos en los comandos para que procese informacion, para eso existen las variables. Las variables almacenan temporalmente la informacion que el script utiliza con los comandos. VARIABLES DE ENTORNO el shell mantiene las variables de entorno que utiliza para mantener especifica informacion del sistema, por ejemplo el nombre del sistema , el nombre del usuario, el ID, el directorio /home del usuario, podemos desplegar las varibles de entorno activas utilizando el comando set COMANDO SET muestra las variables de entorno activas ejemplo: $ set BACKSPACE=Delete BASH=/bin/bash EUID=1000 HISTFILE=/home/rich/.bash history HISTFILESIZE=1000

HISTSIZE=1000 HOME=/home/rich HOSTNAME=testing HOSTTYPE=i586 LANG=en LANGUAGE=en US:en LINES=24 LOGNAME=rich ....... ahora ... vamos a utilizar las variables de entorno activas en un script, las variables deben ir precedidas de un signo de dolar, miremos este ejemplo de script (utilizando vim): # desplegando informacion del sistena echo "usuario: $USER" echo "home : $HOME" ahora lo ejecutamos tron@tron-NET:~/Escritorio$ sh prueba.sh usuario: tron home : /home/tron tron@tron-NET:~/Escritorio$ tenga en cuenta que las variables de entorno en el comando echo se sustituyen por sus valores actuales cuando el script arranca ahora imaginemos que con el comando echo queremos mostrar una cantidad con el signo de dolar, tal ves hariamos lo siguiente: tron@tron-NET:~$ echo the first is $13 the first is 3 si ustedes checan el signo de dolar toma el primer argumento y despliega el segundo como salida, para evitar eso y que nos marque el signo de dolar realizamos lo siguiente: tron@tron-NET:~$ echo este es \$23 este es $23 tron@tron-NET:~$ esto es mejor, la barra invertida permite la impresion del signo de dolar sin tomarlo como variable. VARIABLES DE USUARIO ademas de las variables de entorno, el shell permite que tu ajustes y uses tus propias variables , las viariables que son definidas por el usuario sus datos son temporalmente almacenados y usadas a lo largo del script . Valores pueden ser asignados a las variables

ejemplo : var1=3 var2=-23 var3=testeado var4= otro testeado mas ahora veamos como quedan estas variables en nuestro script anterior: # desplegando informacion del sistena echo "usuario: $USER" echo "home : $HOME" var1=2 var2=-23 var3=testeo var4="otro testeo" echo $var1 echo "el valor de var1 es $var1" echo "$var3 y $var4" ~ ~ nota : al definir una variable recuerda no dejar espacio entre el nombre de la variable y su valor p/e error : var1 = 3 correccion : var1=3 ahora ejecutamos nuestro script : (en linea de comandos : sh nombre_de_script.sh) ejemplo con el script anterior : tron@tron-NET:~/Escritorio$ sh prueba.sh usuario: tron home : /home/tron 2 el valor de var1 es 2 testeo y otro testeo tron@tron-NET:~/Escritorio$ ahora veamos el modifiquemos el script anterior y pasemos el valor de una variable a otra: var1=2 var2=$var1 var3=testeo var4="otro testeo" echo $var1 echo "$var2"

~ ~ la salida sera la siguiente: 2 2 note usted que cuando se desea pasar el valor de una variable a otra se tiene que colocar el signo de dolar antepuesto a la variable que se va a pasar (var2=$var1). LA TILDE