Todos los ficheros en UNIX tienen un propietario y además están asociados a un grupo. Aunque un usuario puede pertenecer a varios grupos, no puede estar trabajando simultáneamente en más de uno en la misma shell. Los ficheros sólo pueden tener un grupo, que por lo general será el grupo en que el usuario estaba trabajando en el momento de crearlo.
Los permisos se establecen para tres tipos de usuarios: el propietario, los miembros del grupo y el resto de usuarios. Solamente el propietario puede modificar los permisos de un fichero.
Por otra parte todos los ficheros en UNIX tienen asociados tres tipos de permisos:r Lectura w Escritura x Ejecución
Para poder verlos podemos usar el comando ls con la opción -l
-rw-r--r-- 1 fcabrera agn 23845 Oct 2 1997 text3 drwxr-xr-x 5 fcabrera agn 512 Feb 17 10:19 unix
El primer caracter de cada línea nos da información sobre el tipo de fichero. En este caso el primero sería un fichero normal y el segundo un directorio.
Después hay nueve caracteres. Los tres primeros corresponden a los permisos del propietario del fichero, que se indica en la tercera columna (fcabrera). Los tres siguientes corresponden a los permisos del grupo, que se indica en la cuarta columna (agn). Los tres últimos corresponden a los permisos del resto de usuarios.
Los tres caracteres para el propietario, grupo u otros representan los permisos de lectura (r) escritura (w) y ejecución (x) por este orden. Si se tiene permiso aparece la letra correspondiente y si no el signo -.
El significado de los permisos es diferente para ficheros y directorios:
Permiso Fichero Directorio
r Leer el ficheo Ver el nombre de los
ficheros que contiene
w Escribir en el Crear, renombrar o borrar
un fichero del directorio
x Ejecutar un programa Situarnos en él
o shell script Leer un fichero
Escribir en un fichero
Ejecutar un fichero.
Crear, renombrar o borrar
un fichero del directorio
Antes de pasar a ver como se modifican los perimisos es conveniente entender
como funcionan los grupos y algunos comandos relacionados con estos.
En un sistema UNIX pueden haber definidos varios grupos. Para ver cuales
son estos grupos podemos usar el comando:
dispgid
Para ver a que grupo pertenecemos ejecutamos:
groups
y si queremos saber a que grupo pertenece otro usuario:
groups username
También podemos cambiar el grupo al que pertenece un fichero propio
siempre que pertenezcamos al grupo al que queramos cambiarlo.
chgrp group file
Cuando entramos en la cuenta estamos en un grupo por defecto. Si
queremos cambiar a otro grupo al que pertenezcamos usamos el comando:
newgrp group
Para volver al grupo anterior tecleamos:
exit
Si queremos saber en que grupo estamos trabajando en un determinado momento
usamos el comando:
id
Para cada fichero hay tres números, asociados a los permisos del propietario, grupo y otros. Este número se obtiene sumando los valores asociados a los permisos que tenga el fichero. Estos valores son:
r w x
4 2 1
Así pues, un fichero con sólo permiso de lectura tendría el valor 4, lectura y escritura 6, etc.
Para dar los permisos que queramos a un fichero existe el comando chmod con el que asignamos un número a los permisos de propietario, grupo y otros. Por ejemplo:
propietario grupo otros
chmod 640 file1 rw- r-- ---
chmod 754 file1 rwx r-x r--
chmod 664 file1 rw- rw- r--
Este comando puede usarse de otro modo sin hacer uso directamente de los
números por ejemplo:
chmod go+rw filename
da permisos de lectura y escritura al grupo y otros (u, g, o representan
propietario grupo y otros respectivamente). Si utilizamos el signo menos
quitamos estos permisos.
Se pueden modificar también los permisos que tienen por defecto los ficheros cuando se crean. Normalmente un directorio se crea con permisos 777 y un fichero 666. El comando umask permite modificar estos valores. Por ejemplo umask 022 significa que hay que restar este valor al que los permisos tienen por defecto, es decir en este caso los permisos por defecto al crear directorios y ficheros serían respectivamente 755 y 644.
Para que se ejecute cada vez que entremos en una sesión podemos incluir el comando en el fichero .cshrc (.tcshrc).