Un consejo, solo utilizar la cuenta de root (administrador) para tareas de administracion. Para trabajar normalmente con el sistema NO hacerlo como root, ya que se tiene acceso completo a todo el sistema y es facil de estropear cosas si no se sabe lo que se hace.
Aqui teneis un ejemplo que le ocurrio al autor de esta seccion trabajando como root:
Sólo utilizo la cuenta de root para administración del sistema, pero un día estuve demasiado tiempo trabajando con ella para intentar empaquetar un rpm, resulta que lo instalé mal y creé el directorio/usr/src/redhat/usr/src/redhat/SRC/
, claro eso no era lo que quería, así que tecleé:root@asimovI src]$ cd .. root@asimovI /]$ rm -rf *Yo pensaba que estaba dentro del segundo src, pero estaba en el primero, menos mal que me di de cuenta pronto y pulséCtrl+c
para abortar el comando de borrado mientras se estaba borrando el directorioX11R6
, así que no corrompí por completo el sistema, sólo tuve que volver a instalar algunos paquetes. Pero ¿y si no me doy cuenta?, pues que no podría haber hecho nada ya que hubiese borrado todo el contenido de/usr
no existirían librerias, comandos, etc, teniendo que haber instalado el sistema operativo de nuevo.
Despues de este ejemplo, volvemos a recomendar lo que dijimos al principio, utilizar la cuenta de root solo en los casos necesarios y siempre teniéndole un respeto al poder que da. Estar seguros al 100% de lo que haceis como root, para no estropear el sistema. Una buena costumbre es nunca hacer login con root, sino trabajar como un usuario normal y cuando se necesite ser root hacer un su
, y tan pronto como deje de ser necesario tener el privilegio hacer un exit
, para volver a trabajar como usuario normal.
Aquí veremos como abrir y cerrar una cuenta de usuario.
Abrir una nueva cuenta.
El abrir una nueva cuenta, no es más que añadir una entrada en el archivo/etc/passwd
del sistema. Una entrada en este archivo tiene la siguiente forma:
<user>:<encrip>:<UID>:<GID>:<informacion>:<home>:<shell> user: Es el nombre de usuario. encrip: Es la clave encriptada. UID: Es el número UID con el que nos identificará el kernel. GID: El numero de grupo principal GID al que pertenecemos. información: Información varia, tal como nombre completo del usuario, número de teléfono, e-mail, etc. home: Es el directorio home del usuario, es decir, el directorio al que accedemos justo después de hacer entrar en el sistema. shell: Es el shell que se abrirá para ejecutar las órdenes que de el usuario.Hay utilidades que hacen que añadir cuentas de usuario sea más fácil. Entre ellas están el comando
adduser
o useradd
y passwd
. Lo pasos para crear un usuario son:
[root@asimovI /root] adduser mario [root@asimovI /root] passwd marioPara más información hacer
man adduser
, sobre todo si se quiere poner caducidad a las claves.
Hay otras utilidades más vistosas y fáciles de usar e intuitivas ya que son bajo X-Windows, un ejemplo de éstas son en el contol-panel
de redhat, el YaST en SuSE, el gestor de usuarios de Kde, etc.
Hay que aclarar que si el campo de la clave encriptada del fichero /etc/passwd
no contiene ningun valor, no sera necesario la utilizacion de una clave para entrar en el sistema. Esto es totalmente desaconsejable por los problemas de seguridad que puede crear.
Sin embargo es útil, por ejemplo, cuando nos olvidamos de la clave de root, la solución es arrancar con un disket de rescate, luego montar la partición de linux, y borrar la clave encriptada de la entrada de root en el fichero
/etc/passwd
. Luego reiniciamos el equipo, entramos como root y ejecutamos passwd root
para poner la nueva contraseña.
Borrar una cuenta de usuario.
El comando a utilizar es userdel
el cual tiene la siguiente sintaxis:
userdel [-r][login]Este comando borra el usuario login, y si se añade la opción
-r
también borra su directorio de usuario.
Para borrar una cuenta de usuario tambien se pueden utilizar las utilidades gráficas que comentamos antes, de una forma muy intuitiva.
A todos nos a ocurrido alguna vez, que al intentar ejecutar un comando/programa hemos obtenido como respuesta command not found
.
Esto significa que el shell no encontro el comando que queriamos ejecutar. Las causas mas comunes suelen ser:
./programa
, donde programa es el nombre del ejecutable.
comando --help
, para ver si hace falta añadir variables de entorno, para el uso del mismo.Permission denied
.
El error es bien claro, el ejecutable existe pero no tenemos permiso para ejecutarlo, comprueba que lo podemos ejecutar, es decir, tiene una x en el grupo al que pertenezcamos: dueño, grupo, u otros. Mas informacion sobre permisos en la subseccion ¿Cómo se cambian los permisos de ficheros y directorios?.
Por ultimo, podemos obtener un error en el que se nos informa que cierta librería no se encuentra.
Ejecuta el comando:
[asimov@asimovI bin] ldd comandoEsto mostrará todas las librerías compartidas que el comando/programa utiliza/necesita para funcionar.
Si no tenemos algunas, las tenemos que instalar, pero si las tenemos tenemos que comprobar que /sbin/ld
(el cargador de librerías dinámicas) sabe donde están, para ello hemos de añadir una entrada en el fichero /etc/ld.so.conf
que consiste en poner el directorio donde esta la libreria, luego ejecutamos /sbin/ldconfig -D
para cerciorarnos que la lee.
El formato de diskettes en Linux depende del tipo de formato que se le desee dar al diskette (tipo MSDOS, tipo FAT32/VFAT, tipo Ext2 de Linux, minix, etc.). En general simplemente hay que usar uno de los comandos mkfs disponibles, que creara el sistema de ficheros pertinente:
Para formatear diskettes en formato Linux-ext2
mkfs.ext2 [opciones] /dev/fd0o bien su equivalente:
mke2fs [opciones] /dev/fd0El usuario que formate deberá tener permiso de escritura para la disketera (normalmente
/dev/fd0
). Para eso debe estar en el grupo
de usuarios floppy o que /dev/fd0
tenga permisos 666 (para todo el
mundo).
Para formatear diskettes en formato msdos
mkfs.msdos [opciones] /dev/fd0o bien:
mkdosfs [opciones] /dev/fd0Otro comando disponible si tenemos instaladas las mtools es mformat:
mformat a:Este ultimo comando formateara el diskett en formato ms-dos.
Por último, existen otros programas como fdformat o superformat (ver paquete fdutils) que tambien sirven para dar formato a diskettes.
NOTA: Formatos del tipo ext2 y ms-dos son los que se utilizan mas usualmente en linux. Hay que aclarar que un diskett con formato ext2 No sera posible leerlo bajo ms-dos o Windows, solamente bajo Linux. Un diskett con formato ms-dos podra ser leido indistintamente por ms-dos, windows o Linux (si tenemos soporte en el kernel para trabajar con este formato).
Montar un sistema de ficheros/dispositivo a nivel usuario no es más que hacerlo disponible en el árbol de directorios de nuestro sistema. Como ya sabeis, en Linux vemos todos los sistemas de ficheros/dispositivos en un sólo árbol de directorios, no existen letras a:, c:, etc., así nos da igual que el contenido de un directorio sea un sistema de ficheros msdos, vfat, ext2, otro que está en una máquina remota, etc. Esta abstracción tiene un inconveniente, hay que montarlo, es decir, indicarle al kernel de Linux que a través del directorio XXXX, accedemos al sistema de ficheros/dispositivo yyy. Esto se hace con el comando mount (man mount
, para detalles).
Montar un sistemas de ficheros/dispositivo a nivel kernel, no es más que rellenar unas tablas de registro. Es decir, ver si el sistema de ficheros está soportado, es decir, si existe la tabla de funciones con las que manejarlo. Luego registrar estas funciones y enlazar el directorio al sistema de ficheros. Esto es más bien lo que hace la llamada al sistema mount, la cual es llamada mediante el comando del mismo nombre.
Los parametros necesarios para montar un sistema de ficheros son:
/dev/hda1, /dev/hdb, /dev/sda1
,..., none si es el /proc
, ya que se realiza sobre la memoria).
Ejemplo: Montar el cdrom en el directorio /dev/cdrom.
mount -t <sistema de ficheros> <Dispositivo> <Directorio> mount -t iso9660 /dev/hdb /mnt/cdromSupongo que ya comprendereis el inconveniente de esto: Cada vez que se quiere acceder a un cdrom se ha de ejecutar el comando anterior, en vez de teclear
d:
(como en otros sistemas operativos). Pero la versatilidad y la flexibilidad que ofrece hace que no se tenga en cuenta ese inconveniente (como usuario accedo dentro de un directorio sin que me pase por la cabeza que ese fichero está al otro lado del planeta utilizando para ello el protocolo nfs).
Existen otras formas de reducir la línea de comandos, para ello (entre otras cosas) existe el fichero fstab. En él se indican los sistemas de ficheros sobre los que trabajamos normalmente: el sistema de ficheros en el que tenemos los directorios de linux, el /proc, la partición dos, el cdrom, y el floppy.
El fichero /etc/fstab funciona de la siguiente manera:
Partimos de un ejemplo de contenido de /etc/fstab
:
# <device> <mountpoint> <filesystemtype> <options> <dump> <fsckorder> /dev/hda2 / ext2 defaults 1 1 /dev/hda3 /usr ext2 defaults 1 2 /dev/sda1 /home ext2 defaults 1 2 /dev/hdb /mnt/cdrom iso9660 user,noexec,nodev,nosuid,ro,noauto 0 0 /dev/fd0 /mnt/floppy vfat user,noexec,nodev,nosuid,rw,noauto 0 0 none /proc proc defaults 0 0 /dev/hda4 swap swap defaults 0 0 /dev/hda1 /mnt/dos vfat exec,dev,suid,rw,auto 0 0Con la informacion contenida en este fichero, el sistema haria lo siguiente al arrancar el sistema:
/dev/hda1
se montaria en el subdirectorio /mnt/dos
/dev/hda2
se montaria en el subdirectorio /
/dev/hda3
se montaria en el subdirectorio /usr
/dev/hda4
se montaria en el subdirectorio como swap
/dev/sda1
se montaria en el subdirectorio /home
Proc
se montaria en el subdirectorio /proc
/dev/fd0
y un CD-Rom /dev/hdb
, aunque no los monta automaticamente al arrancar por haber definido la opcion noauto
./etc/fstab
:
En la columna de dispositivo se indica el dispositivo/particion a montar, en la punto de montaje se indica el directoria mediante el cual vamos a acceder al sistema de archivos. En la columna de tipo de sistema de ficheros se indica el sistema de ficheros que se usara sobre el dispositivo.
Las opciones significan lo siguiente:
El fichero /etc/fstab
de nuestro ejemplo nos permitiría hacer lo siguiente para montar un diskett o CD-Rom:
mount /mnt/cdrom mount /mnt/floppyCuando dejamos de utilizar un sistema de ficheros, tenemos que darlo de baja (desmontarlo), para eliminar todas las referencias del kernel a él. El comando utilizado para esto es
umount
.
Para desmontar un sistema de ficheros/dispositivo:
umount <directorio|dispositvo>ej:
umount /mnt/floppy umount /dev/fd0NOTA: Es necesario ejecutar el comando
umount
cada vez que cambiemos un diskett, ya que no siempre cuando se escribe en un dispositivo, se realiza automáticamente un volcado al dispositivo (por eso se pueden perder datos si se apaga el ordenador a lo bruto). Además si cambiamos el disket sin hacer umount, el kernel piensa que hay el sistema de ficheros anterior y cuando guarda alguna información lo hace con referencia al retirado, perdiéndose todo.
Este es un punto a tener en cuenta con el uso de disketts, ya que el mecanismo para retirar un diskett es mecanico, no existe posibilidad de impedir por medio de software que alguien saque un diskett de la disquetera. No ocurre lo mismo con el CD-Rom, ya que el sistema bloqueara la posibilidad de extraerlo cuando este montado.
Solo tenemos que ejecutar los siguientes comandos con un diskette vacío dentro de la diskettera:
[sromero@localhost]$ /sbin/mke2fs /dev/fd0 [sromero@localhost]$ [ -d /fd ] || mkdir /fd [sromero@localhost]$ mount /dev/fd0 /fd [sromero@localhost]$ cp /boot/boot.b /fd [sromero@localhost]$ cp /vmlinuz /fd [sromero@localhost]$ echo image=/fd/vmlinuz label=linux | /sbin/lilo -C - -b /dev/fd0 -i /fd/boot.b -c -m /fd/map [sromero@localhost]$ umount /fd [sromero@localhost]$rmdir /fdLo que hacen estos comandos es:
/sbin/mke2fs /dev/fd0 -> Formatea el diskette con formato ext2 [ -d /fd ] || mkdir /fd -> Si no existe el directorio /fd lo crea mount /dev/fd0 /fd -> monta el diskette en dicho directorio. cp /boot/boot.b /fd cp /vmlinuz /fd -> Copia el kernel de Linux y el archivo de boot al diskette. Si nuestro kernel no se llama vmlinuz (por ej bzImage o zImage) o no está en el raíz debemos cambiar esto. echo image=... -> Activa el kernel en el diskette. umount /fd -> Desmontamos el disco rmdir /fd -> Borramos el dir /fdSi alguno de los paths o nombres cambia los deberemos cambiar dentro del diskette.
Los ficheros tar no son ficheros comprimidos, sino empaquetados. Tar es un empaquetador, es decir, es algo parecido a un compresor como arj o zip, pero sin compresión. Se dedica a incluir todos los ficheros juntos en el mismo archivo, preservando las estructuras de directorios y permisos de los mismos. Como veremos, lo podremos comprimir gracias al programa GZip.
Hay 2 operaciones básicas con tar: empaquetado y desempaquetado. Si estamos en un directorio y queremos empaquetar todos los ficheros de este directorio y los que cuelgan de él, basta con ejecutar la orden:
tar -cvf fichero.tar * c = compress (más bien, empaquetar) v = verbose (para que nos diga lo que hace) f = file (empaquetar en un fichero) * (empaquetar todos los ficheros, podría haber sido *.doc, etc.)Si disponemos de un fichero .tar y queremos desempaquetarlo:
tar -xvf fichero.tar x = eXtract (desempaquetar).También es posible listar los contenidos de un fichero .tar antes de desempaquetarlo, mediante la orden tar tvf fichero.tar .
Por otra parte, el ficheros con extensión gz son ficheros comprimidos. A diferencia de arj o zip, el contenido de un fichero GZ es un solo fichero, es decir, cuando comprimimos fichero.txt con este compresor (llamado gzip) obtenemos un fichero.txt.gz de tamaño mucho menor. Con GZ no es posible empaquetar ficheros, es decir, la compresión se realiza a un sólo fichero.
Para comprimir un fichero con gz, se utiliza el comando:
gzip ficheroPara descomprimirlo:
gunzip fichero.gzLa combinación de tar y gz es lo que permite el tener multiples ficheros comprimidos en un sólo archivo. Es decir, si empaquetamos un directorio con tar y luego comprimimos ese archivo tar con gz, obtenemos un tar.gz comprimido con múltiples ficheros.
La compresión y descompresión es posible hacerla en 2 pasos (primero tar y luego usar gz) o bien usar el flag -z de tar para ello:
Compresión:
tar -cvzf fichero.tar.gz *Descompresion:
tar -xvzf fichero.tar.gzOtro formato que se ha puesto de moda es bzip2, con el mismo sistema de funcionamiento que Gzip, y cuyos nombres de ejecutable son
bzip2
(comprimir) y bunzip2
(descomprimir). Este compresor
obtiene mejor compresión que Gzip y su funcionamiento es igual
de sencillo, aunque tarda mas en comprimir y utiliza mas recursos.
Estos compresores/descompresores/empaquetadores son una gran
y libre alternativa a formatos comerciales como zip, arj
y rar
,
tambien disponibles para Linux (comandos zip, unzip, rar y unarj).
Para descomprimir ficheros arj mediante unarj, simplemente
hace falta ejecutar el comando unarj x fichero.arj
. El compresor
es shareware y se debe obtener en la Web de sus programadores.
Zip es el programa destinado a hacer Linux capaz de leer y
escribir los ficheros en formato .zip (generados por pkzip o
winzip
): Para ello tenemos los comandos zip e unzip, que nos
permitiran comprimir y descomprimir ficheros sueltos, directorios
completos, directorios con recursividad, etc:
Para comprimir todos los ficheros de un directorio en un zip:
zip fichero.zip *Para comprimir este directorio y todos los que cuelguen del mismo:
zip -r fichero.zip *La descompresión se realiza mediante unzip:
unzip fichero.zipEl programa rar también es un buen compresor que podemos encontrar en diferentes formatos (rpm, deb, tar.gz) en Internet. Su uso es identico a la versión MSDOS:
Comprimir:
rar a fichero.rar *Descomprimir:
rar x ficheroPara más información sobre cualquiera de los des/compresores basta con consultar la página man del mismo, mediante "man comando".
Los paquetes rpm son archivos que llevan incluidos dentro de ellos todos los ficheros que componen un determinado programa. Internamente están comprimidos, pero nosotros sólo debemos pensar en ellos en términos de Instalación, Actualización, Borrado y Consultas. Dentro del rpm van los ficheros del programa a instalar, su descripcion, a que directorios van a ir instalados, scripts de auto-configuración en algunos casos, etc.
La sintaxis de rpm es rpm -accion nombre_del_paquete
Acciones:
rpm -i archivo (instalar) rpm -e paquete (desinstalar) rpm -u paquete (actualizar) rpm -qi paquete (pedir info)Ejemplos:
rpm -i Par-1.50-1.i386.rpm rpm -e Par rpm -u Par rpm -qi ParSupongamos el fichero
programa-1.0.rpm
que no tenemos instalado
y que acabamos de bajar de Internet. Procedemos a su instalación:
rpm -i programa-1.0.rpmTras eso el programa estará instalado en nuestro Linux y podremos ejecutarlo y usarlo normalmente. Tal vez nuestro problema es que no sabemos como se llama el ejecutable y los demás ficheros de configuración que le acompañan. Para solucionar eso hacemos una consulta (query) del paquete ya instalado:
rpm -ql programaLa acción -ql significa "query list", y nos mostrará en pantalla la lista de ficheros instalados de este programa y sus directorios destinos. Si por ejemplo deseamos ver sólo los fichero sean instalados en los directorios bin (los ejecutables) podemos hacer uso de grep, la herramienta de Linux que sólo nos mostrará aquellas líneas que contengan una cadena determinada:
rpm -ql programa | grep binEsto nos mostrará sólo los ficheros de "programa" que hayan sido instalados en directorios bin.
Si queremos saber que hace un paquete instalado, podemos verlo con la opción "query info" (-qi):
rpm -qi programaComo ejemplo, veamos la salida para el paquete fetchmail de Linux:
Name : fetchmail Relocations: (not relocateable) Version : 5.0.0 Vendor: Red Hat Software Release : 1 Install date: dom 30 may 1999 16:00:12 CEST Group : Applications/Internet Size : 565413 Packager : Red Hat Software http://developer.redhat.com/bugzilla Summary : A remote mail retrieval and forwarding utility. Description : Fetchmail is a remote mail retrieval and forwarding utility intended for use over on-demand TCP/IP links, like SLIP or PPP connections. Fetchmail supports every remote-mail protocol currently in use on the Internet (POP2, POP3, RPOP, APOP, KPOP, all IMAPs, ESMTP ETRN) for retrieval. Then Fetchmail forwards the mail through SMTP, so you can read it through your normal mail client.Si el programa no nos gusta, la deinstalación es muy sencilla:
rpm -e programaObviamente, no tenemos porqué instalar los programas para ver su contenido o información. Los podremos ver antes de la instalación insertando un comando p antes de la acción:
rpm -qpi fichero.rpm rpm -qpl fichero.rpmSi queremos ver la lista de RPMs instalados disponemos del comando "query all" (-qa):
rpm -qaPara verlo en formato pausado, podemos usar una tubería:
rpm -qa | lessEs posible que tras un tiempo obtengamos la versión 2.0 del programa que ya disponemos instalado. En esto caso hay 2 opciones: bien eliminar el programa anterior (-e) e instalar este nuevo (-i), o, simplemente, actualizar el programa a la versión 2.0 con el comando -U (de Update):
rpm -U programa-2.0.rpmPor último, si al tratar de instalar un paquete rpm aparece el siguiente error:
Data type X not supprtedEsto es debido a que nuestra versión de rpm es muy antigua, al menos más que el rpm que estamos tratando de instalar, y que este tiene algún tipo de compresión o elemento que nuestro rpm no entiende. Bastará entonces con actualizar nuestro ejecutable del RPM.
Cabe decir que también existen front-ends al programa rpm, es decir, programas en modo gráfico (o texto) que realizan las acciones del programa RPM mediante pulsaciones nuestras del ratón. Es el front-end el que se encarga de pasarle a RPM los parámetros correctos para que se realice la acción pedida por el usuario. Entre estos programas tenemos glint, gnorpm, purp, kpackage, xrpm, etc.
Al igual que el formato RPM, los .DEB encapsulan todos los ficheros
y scripts vinculados a un determinado programa pero para la
distribución Debian. Además de disponer de herramientas de instalación como
dselect, se incluye la posibilidad de instalación manual mediante las
diferentes opciones del programa dpkg
:
Instalación de paquetes deb:
dpkg -i nombre_del_paquete.debPara hacer consultas:
dpkg -s nombre_del_paquete (admite comodines)Para desinstalar:
dpkg -r nombre_del_paqueteEl resto de opciones de dpkg puede verse con
man dpkg
.
Alien es un programa que permite convertir un paquete binario entre los formatos rpm (Redhat, Suse), deb (Debian) y tgz (Slackware):
Conversion a .DEB:
alien --to-deb paquete.elqueseaConversion a .RPM:
alien --to-rpm paquete.elqueseaConversion a .TGZ:
alien --to-tgz paquete.elqueseaExisten otros flags (como -i) que permiten directamente tras la conversión realizar la instalación del paquete generado. Alien realiza la conversión descomprimiendo el paquete original y generando el nuevo paquete, diciéndonos el lugar del árbol de directorios donde dejará el paquete recién generado, según la distribución (por ejemplo, en Redhat en
/usr/src/redhat/RPMS/
).
Lo primero que hay que decir es, que para conseguir toda la informacion sobre los comandos involucrados en el tema de permisos podeis consultar man chmod, man chown
y man chgrp
Informacion de un fichero/directorio
Cuando obtienes informacion sobre un fichero/directorio, existen diferentes campos que te dicen que clase de permisos el fichero/directorio tiene.
Ej: [user@localhost]# ls -l -rwxr-x--- 1 pepito depart1 4348 Nov 24 16:19 testEn la primera columna se pueden ver una serie de letras
-rwxr-x---
, estas letras nos dicen quien en el sistema, y que clases de permisos tiene el fichero test
.
Estas letras estan agrupadas en tres grupos con tres posiciones cada uno, mas una primera posicion que nos dice de que clase de archivo se trata (los mas normales (d) directorios, o (-) archivos de datos). En nuestro ejemplo la primera posicion es (-) con lo cual el archivo test, es un archivo de datos (binario/ejecutable en este caso).
El primer grupo de tres (rwx en nuestro caso) nos dice que clase de permisos tiene el dueño del fichero (u)(user/owner)).
El segundo grupo de tres (r-x en nuestro caso) nos dice que clase de permisos tiene el grupo del fichero (g)(group).
Y el ultimo grupo de tres (--- en nuestro caso) nos dice que clase de permisos tienen todos los demas usuarios del sistema sobre este fichero(o)(others).
r :significa permiso para leer w :significa permiso para escribir x :significa permiso para ejecutarLa segunda columna
pepito
, nos dice quien es el dueño del fichero,(pepito en este caso). depart1
, nos dice cual es el grupo del fichero (depart1 en este caso). 4348
, nos dice el tamaño del fichero. Nov 24 16:19
, nos dice cual es la fecha y hora de la ultima modificacion. test
, nos dice cual es el nombre del fichero/directorio. Asi pues, el fichero test
de nuestro ejemplo tiene los siguientes permisos:
pepito puede leer, escribir/modificar, y ejecutar el fichero test.
depart1 puede leer, y ejecutar pero no escribir/modificar.
Los demas usuarios no pueden hacer nada, ni leerlo, ni escribir/modificar, ni ejecutarlo.
Como cambiar los permisos/dueño/grupo de un fichero/directorio?:
Para cambiar el dueño del fichero: chown usuario fichero
Para cambiar el grupo del fichero: chgrp usuario fichero
Para cambiar los permisos se utiliza el comando: chmod permisos fichero
Los permisos se pueden especificar de diferentes maneras, una serie de ejemplos, es lo mejor para comprenderlo:
chmod ugo+rwx test (da permisos rwx a todos, user,group,others) chmod ugo-x test (quita permiso x (ejecucion) a todos, user,group,others) chmod o-rwx test (quita permisos rwx a others) chmod u=rwx,g=rx test (da permisos rwx a user, rx a group y ninguno a others)Asi podrias continuar con todas las posibles combinaciones de letras, es cuestion de usar la imaginacion ;-)
Existe otro metodo que utiliza numeros, en vez de letras para asignar permisos, la siguiente tabla nos puede ayudar un poco a comprender esta manera:
r w x VALOR DECIMAL 0 0 0 0 (000 binario es 0 en decimal) 0 0 1 1 ......... 0 1 0 2 ......... 0 1 1 3 ......... 1 0 0 4 (100 binario es 4 en decimal) 1 0 1 5 ......... 1 1 0 6 ......... 1 1 1 7 (111 binario es 7 en decimal)
1 significa activado y 0 desactivado, o sea 101 activa r
y x
, y desactiva w
.
Sabiendo esto solo tenemos que usar el valor decimal, un ejemplo aclarara esto.
chmod 750 test da permisos rwx al usuario (7=111) da permisos r-x al grupo (5=101) da permisos --- a los demas (0=000)
Para apagar el equipo tienes que hacerte superusuario y hacer:
[asimovI@localdomain root]# shutdown -t3 -h now
Esto pararía todos los procesos en curso, haría sync
, entraría en el runlevel 0, y desmontaría todas las particiones. El proceso de parada llegaría cuando se observa system halted
, y si la fuente lo permite y se compiló el kernel con esa opción, el ordenador se apaga automaticamente sin necesidad de pulsar el boton de apagado.
La opción h viene de halt
(parar), y hace que se mantenga parado después de todo el proceso de apagado. La opción now
indica que lo haga ahora, esta opción se puede sustituir por un número los minutos a esperar antes de realizar el shutdown
.
Para reiniciar el equipo tienes que hacerte superusuario y hacer:
[asimovI@localdomain root]# shutdown -t3 -r nowPues como habías imaginado hace lo mismo que la anterior pero en vez de ponerse en
system halted
se pone en system reboot
y reinicia.
Existe otro método que consiste el accionar tres teclas, sí, esas que tanto hay que usar en otros sistemas operativos ( aunque cada vez menos ya que apenas los usamos), las CAS (Ctrl+Alt+Supr). Pues bien, en el proceso de arranque de Linux, cuando lee la /etc/inittab
existe una entrada que asocia estas tres teclas a un comando. Si lo ves verás que lo asocia al comando anterior.
# Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r nowUn consejo:
En los métodos anteriores es necesario ser superusuario ya que el comando shutdown
lo requiere. Cosa lógica ya que sino cualquier usuario de la máquina lo podría echar abajo. Esto hace bastante incómodo el apagarlo, por lo que un consejo práctico es ir a la /etc/inittab
y cambiar la -r
por la -h
del comando que se une a las CAS, esto asociará el apagar el sistema a las tres teclas y no al reiniciarlo. Con esto ya no es necesario hacerse superusuario, sino estar sentado delante del ordenador a apagar.
Nota: En los kerneles 2.2.x hay que modificar una línea en el /etc/rc.d/*halt
. En dónde llame al halt, hay que añadirle la opción -p. Si no lo que hace es reboot.