Permisos básicos de ficheiros e carpetas
Moitas veces precísase restrinxir o acceso a unha carpeta ou ficheiro a unha serie de usuarios ou grupos. Nesta sección veremos como facelo.
Introdución aos permisos
Lémbrense os usuarios creados en pasos previos.
Nome Nome real Grupo primario Grupo secundario Perfil administrador administrador administrador sudo, ... Administrador carlos Carlos Carrión g-profes g-usuarios, ... Estándar (Usuario de escritorio) noa Profe- Noa Pin Pin g-profes g-usuarios, sudo, ... Administrador roi Roi Paz Paz g-alum g-usuarios, ... Estándar (Usuario de escritorio)
Con respecto ao que se fixo en pasos previos, modificouse o usuario carlos: establecendo como grupo primario g-profes, e como grupo secundario g-usuarios.
Noa e Carlos parécense en que pertencen ao grupo g-profes, pero noa pode administrar o sistema e carlos non. Nese senso o usuario profesor carlos e o usuario alumno roi, teñen os mesmos poucos privilexios.
A usuaria noa pode administrar o sistema ao igual que o usuario chamado administrador, pero este último non pertence nin ao grupo g-profes nin g-usuarios.
Ao grupo g-usuarios só pertencen os usuarios: carlos, noa e roi.
Usuario e grupo propietario
Toda carpeta e todo ficheiro teñen un usuario propietario e un grupo propietario do mesmo:
Entrouse no sistema como a usuaria noa. Esta usuaria accedeu á carpeta do usuario administrador. Usa a visualización en formato lista, engade as columnas: propietario, grupo e permisos e súbeos para enriba na lista. (véxase unha sección anterior para mirar como configurar nautilus con esta visualización).
Na imaxe obsérvase que o usuario propietario de cada carpeta e arquivo é o usuario administrador.
O grupo propietario é o grupo chamado administrador.
Cando un usuario crea unha carpeta/ficheiro:
- Quen é o usuario propietario?: O usuario que a creou
- Quen é o grupo propietario?: O grupo principal ao que pertence ese usuario.
Aínda así, o grupo propietario pódese cambiar despois a calquera outro grupo, aínda que o usuario non teña nada que ver con el.
Permisos básicos
Os permisos básicos en GNU/Linux son moi sinxelos, e por tanto presentan como veremos algunhas limitacións. Nesta sección estudarase o xusto para que se entenda o seu funcionamento.
A unha carpeta ou ficheiro pódenselle adxudicar permisos a tres tipos de usuarios:
- Usuario propietario (U).
- Grupo propietario (G), que non ten porque ser grupo principal do usuario propietario.
- Outros (O), que non sexa o usuario propietario nin ningún usuario que pertenza ao grupo propietario.
Os permisos seguen un patrón coñecido como UGO: usuario, grupo e outros.
Existen tres permisos independentes:
Permiso Ficheiro Carpeta r (Read) Ver contido Ver o contido w (Write) Escribir/modificar Crear/modificar obxectos x (eXecute) Executar Acceder á carpeta (sen ver o contido).
A cada tipo de usuario pódeselle asignar unha combinación dos tres permisos anteriores. Por exemplo para o usuario propietario, sobre un ficheiro, poderíanse asignar calquera das combinacións seguintes:
- - - Ningún permiso. O usuario non pode facer nada co arquivo. - - x Pode executar o ficheiro, se é executable. Non pode modificalo nin ver o seu contido. - w - Pode modificar o arquivo (engadirlle/extraerlle contido). Non pode executalo nin velo. - w x Pode executar e modificar o ficheiro pero non pode velo. r - - Pode ver o contido do ficheiro, pero non modificalo nin executalo. r – x Pode ver o contido e executar o ficheiro. Non pode modificalo. r w - Pode ver o contido e modificalo ficheiro. Non pode executalo. r w x O usuario pode, ver o contido do ficheiro, modificalo e executalo se é un arquivo executable.
A alguén asaltaralle a dúbida de como poder modificar un ficheiro sen poder ver o seu contido. Pois si se pode, existen comandos para iso, pero escápanse aos obxectivos que se perseguen neste material.
Neste enlace podes afondar máis no coñecemento dos permisos básicos en GNU/Linux
Volvamos sobre a imaxe anterior:
Na columna permisos vese que a secuencia comeza cunha letra ou un guión:
- l:link, enlace, acceso a un directorio
- d:directory, directorio, carpeta
- -: arquivo, ficheiro
A continuación séguelle tres grupos de permisos. Véxase por exemplo a carpeta Música:
- drwxr-xr-x:
- d:indica que é unha carpeta (directorio).
- rwx: os 3 primeiros permisos corresponden ao usuario propietario (U) (administrador). Este pode facer de todo.
- r-x: os 3 segundos permisos corresponden ao grupo propietario (G) (administrador). Calquera usuario que pertenza a este grupo pode ver o contido e acceder á carpeta Música.
- r-x: os 3 últimos permisos corresponden a todos os demais usuarios, outros (O): (roi, noa, carlos). Neste exemplo en Música poden ver o seu contido e acceder a ela.
Por hoxe, xa está ben de texto e comecemos co modo gráfico.
A imaxe seguinte amosa os permisos da carpeta Música en modo gráfico (botón dereito sobre ela e seleccionar Propiedades):
Como se pode observar, noa (lémbrese que é noa quen está fozando nas intimidades do usuario administrador), non pode realizar ningún cambio, pois ela non é a dona da carpeta. Só dous usuarios poden cambiar os permisos dunha carpeta/ficheiro: o creador e o usuario root, como se verá máis adiante.
Finalmente, observar os permisos dun arquivo. Noa segue sen poder facer nada, pois non é a dona do arquivo.
Modificar os permisos
Noa volve á súa carpeta.
Notar que o grupo propietario en cada un dos obxectos é g-profes, e o usuario carlos tamén pertence a el.
Na lapela Permisos da carpeta Música da usuaria noa, pódese observar que o usuario propietario é ela mesma. Nese cartafol, noa ten ós máximos permisos (crear e eliminar ficheiros, rwx). O grupo propietario é g-profes. Calquera que pertenza a ese grupo (por exemplo carlos) pode acceder ós ficheiros contidos nesa carpeta. Calquera outro usuario distinto dos anteriores tamén pode acceder aos ficheiros desa carpeta.
Na ventá da dereita fixarse, que permisos hai, por defecto, sobre cada carpeta de usuario. Calquera pode entrar a fisgar na carpeta de calquera usuario. Para solucionar iso, noa decide que só ela vai ter acceso á súa carpeta. Pero ademais tamén configura os permisos que deben ter todos os ficheiros que hai dentro da carpeta, e propaga eses permisos a todo ficheiro e carpeta que haxa dentro de noa. Isto último non sería preciso se só se quere que ninguén máis para acceda a carpeta de noa, con configurar a carpeta raíz noa, xa é suficiente, xa ninguén máis vai poder entrar.
O resultado da acción anterior produciu que os permisos da carpeta nai noa se propagaran ás carpetas/ficheiros fillos. Observar que noa non pode cambiar o propietario da carpeta (isto ten lóxica, se noa ten unha carpeta, por exemplo, con contido comprometido non sería xusto que lle pasase a propiedade (o problema) a outro usuario), aínda que si pode cambiarlle o grupo propietario para un grupo ao que ela pertenza, como por exemplo g-usuarios. CONCLUSIÓN: noa pode cambiar os permisos, pero non a propiedade das carpetas/ficheiros das que é dona.
Abrir como administrador (root)
Ós únicos que poden cambiar os permisos dun ficheiro/carpeta son o seu dono e o usuario root. E o único que pode cambiar as propiedades dun ficheiro/carpeta é o usuario root.
Así que se noa quere cambiar os permisos de ficheiros ou carpetas das que non é dona, o que pode facer é iniciar o explorador de ficheiros Nautilus como usuario root (Lémbrese que nun apartado anterior explicamos como executar comandos como root usando o comando sudo)
Afinar permisos nunha estrutura de carpetas
Crear toda unha árbore de carpetas, nas que os profes poidan facer unhas cousas, os alumnos outras, etc, etc, é materia dun manual de administración. Pero aínda así, imos ver unha estrutura simple na que os profes poidan intercambiar información cos seus alumnos.
Introdución: pensar
Como sempre, aplicaremos a regra baseada no Principio de Pareto e moi usado polo americanos 80% think, 20% do (80% pensar, 20% facer).
Preténdese:
- 1º.- Que ás carpetas home de cada alumno poidan entrar os profesores para ver o seu contido.
- 2º.- Que só o alumno en cuestión poida escribir/modificar na súa propia home.
- 3º.- Que á carpeta home de cada profesor só poida acceder o profesor en cuestión.
- 4º.- Que haxa un espazo comun nos que os profesores que accedan poidan crear cousas propias de profes. Que só poidan acceder os profes.
- 5º.- Que haxa un espazo común onde os profes poidan deixar material para o alumnado, e que este poida acceder e recollelo, pero non modificalo nin escribir.
Lémbrense os usuarios que existen e os grupos aos que pertencen
Nome Nome real Grupo primario Grupo secundario Perfil administrador administrador administrador sudo, ... Administrador carlos Carlos Carrión g-profes g-usuarios, ... Estándar (Usuario de escritorio) noa Profe- Noa Pin Pin g-profes g-usuarios, sudo, ... Administrador roi Roi Paz Paz g-alum g-usuarios, ... Estándar (Usuario de escritorio)
O grupo g-usuarios ten como membros a: carlos, noa, roi.
O grupo g-profes ten como membros a: carlos, noa.
O grupo g-alum ten como membros a: roi.
O usuario administrador non pertence a ningún dos tres grupos anteriores.
Véxase graficamente o que se pretende. Isto non ten moito senso se se trata de 20 ordenadores e en todos se realiza o mesmo. O bo sería que logo isto estivese compartido para usar dende outro equipo. Verase na seguinte sección.
Na carpeta /home crearase unha carpeta chamada comun, á que poidan acceder todos os que pertenzan ao grupo g-usuarios en modo lectura/execución (o usuario administrador non vai poder acceder e os demais non van poder crear nada dentro de /home/comun). Na carpeta profes, poderán acceder os usuarios que pertenzan ao grupo g-profes e realizar o que desexen. O mesmo sucederá na carpeta /home/comun/alumnos, pero ademais os outros (aqueles que pasaron o filtro de g-usuarios en /home/comun) poderán acceder para Ler/Executar. Os outros, neste caso que se está a ver, é o usuario alumno roi.
Un pouco enrevesado, verdade?. Pois si, porque estes son os permisos básicos, nun curso de administración poderíanse ver ferramentas de afine máis precisas como as ACL (Listas de Control de Acceso) e a súa flexibilidade, como se comentará despois.
Xa se fixo o 80% (think, pensar), pásese ó 20% (do, facer)
Crear a estrutura de carpetas: facer
Vaise comezar por crear /home/comun e súa estrutura.
A imaxe é unha maqueta/plano do que se pretende:
Afinar permisos das carpetas home dos usuarios: facer
Continúase coas carpetas home do alumnado.
Conclusión
Os permisos básicos son moi simples, pero pola contra moi pouco flexibles. Problemas que presenta o anterior:
- Como roi é dono da súa carpeta pode cambiar os permisos e non deixar entrar aos profes, ou deixar entrar a todos os demais usuarios á súa carpeta. Home, sempre queda abrirlle un expediente ao alumno, pero cando un se dea conta ao mellor xa é tarde.
- Se mañá se dan de alta conserxes que pertenzan ao grupo g-usuarios, aínda que sexa como secundario, van poder entrar na carpeta /home/comun/alumnos, cando aí non deberían entrar. Poden entrar porque outros poden acceder a esa carpeta.
Ao ter só tres tipos de usuarios, UGO (user, group, other) aos que asignarlle permisos a anterior configuración vese moi limitada. Sería interesante dispor de Listas de Control de Acceso (ACL, Access Control List), nas que poder afinar moito máis os permisos.
Listas de control de acceso: ACL
As Listas de Control de Acceso (ACL: Access Control List) veñen a suplir as eivas mencionadas anteriormente. Nunha ACL pódese especificar explicitamente quen pode facer que cousas e quen non non pode facer outras.
A imaxe amosa un exemplo de ACLs xestionadas co programa Eiciel feito por Roger Ferrer Ibáñez.
O uso de ACLs e a creación dunha estrutura máis complexa de carpetas que albergase os datos do alumnado, organizado por cursos e materias e do profesorado, dividido en departamentos, etc, que albergase a información de todos os usuarios dunha rede é algo complexo e escápase aos obxectivos deste manual, sería materia dun manual de administración de redes con Linux. Pódese seguir unha mostra do que se pode chegar a facer en: Servizos de rede e deseño dunha infraestrutura de dominio con GNU/Linux
Instalar Eiciel e activar as ACLs
ACL é un paquete, que en Ubuntu xa ben instalado por defecto, pero hai que indicar sobre que partición (teñen que ter formato ext3 ou ext4) se desexa aplicar.
Afinar os permisos con ACL
Neste exemplo vaise poñer explicitamente que na carpeta /home/comun/alumnos os membros de g-alumnos poidan entrar e ver o seu contido pero non outros.
As ACL só poden ser editadas/cambiadas polo dono da carpeta/ficheiro ou polo usuario root. O mesmo que sucedía cos permisos básicos.
Comandos para a configuración dos permisos
Como xa se pode imaxinar, este método de configuración dos permisos antóllase pouco práctico para sistemas con moitos usuarios e moitas carpetas. Pódensenos quedar usuarios atrás (como o caso de carlos), ou confundirse nun permiso dunha carpeta. Hai que ser moi sistemático e revisalo con moita tranquilidade. Isto pódese realizar en modo gráfico se o número de usuarios é manexable (20 – 40).
Cando se está falando de moitos usuarios o aconsellable é usar scripts ou guións (programas pequenos) que conteñan comandos que cambian propietarios e permisos en carpetas e ficheiros. Deste xeito o administrador pode realizar un programiña que faga todo ese traballo por el, se se equivoca o programa equivócase en todos, haberá que corrixilo para que o faga ben en todos os casos. Os comandos a usar en cada caso son:
- chown: (change owner, cambiar propietario). Para cambiar o usuario e grupo propietario.
- chmod: (change mode, cambiar modo). Para cambiar os permisos.
Permisos dunha unidade Windows
Se se editan os permisos dalgunha carpeta dentro de win-linux, carpeta na que está montada unha partición formatada en fat, non se pode cambiar ningún permiso. Os permisos anteriores non son aplicables para unidades FAT / NTFS de MS Windows.
Como se pode ver na imaxe, pódese probar a facer cambios nos propietarios e permisos dentro da carpeta win-linux... Non deixa facer ningún cambio.