Permisos en Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Ola a todos. Esta é a tradución dun artigo do libro RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 e EX300.

Empurrón: Espero que o artigo sexa útil non só para os principiantes, senón que tamén axude aos administradores máis experimentados a axilizar os seus coñecementos.

Entón, imos.

Permisos en Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Para acceder aos ficheiros en Linux, utilízanse permisos. Estes permisos asígnanse a tres obxectos: o propietario do ficheiro, o propietario do grupo e outro obxecto (é dicir, todos os demais). Neste artigo, aprenderás a aplicar permisos.

Este artigo comeza cunha visión xeral dos conceptos básicos, seguido dunha discusión sobre os permisos especiais e as listas de control de acceso (ACL). Ao final deste artigo, tratamos a configuración de permisos predeterminados a través de umask, así como a xestión de atributos de usuario estendidos.

Xestión da propiedade dos ficheiros

Antes de discutir os permisos, debes ter en conta o papel do propietario do ficheiro e do directorio. A propiedade dos ficheiros e directorios é vital para xestionar os permisos. Nesta sección, primeiro aprenderás como podes ver o propietario. Despois aprenderá a cambiar o propietario e usuario do grupo para ficheiros e directorios.

Mostrando o propietario dun ficheiro ou directorio

En Linux, cada ficheiro e cada directorio ten dous propietarios: un usuario e un propietario de grupo.

Estes propietarios establécense cando se crea un ficheiro ou directorio. O usuario que crea o ficheiro pasa a ser o propietario dese ficheiro e o grupo principal ao que pertence o mesmo usuario tamén pasa a ser propietario dese ficheiro. Para determinar se vostede, como usuario, ten permiso para acceder a un ficheiro ou directorio, o shell verifica a propiedade.

Isto ocorre na seguinte orde:

  1. O shell comproba se es o propietario do ficheiro ao que queres acceder. Se es o propietario, obtén permisos e o shell deixa de comprobar.
  2. Se non es o propietario do ficheiro, o shell comprobará se es membro dun grupo que ten permisos sobre o ficheiro. Se es membro deste grupo, accederás ao ficheiro cos permisos que o grupo estableceu e o shell deixará de comprobar.
  3. Se non es usuario nin propietario dun grupo, concédelles os dereitos doutros usuarios (Outros).

Para ver as asignacións de propietarios actuais, pode usar o comando ls-l. Este comando mostra o usuario e propietario do grupo. Abaixo podes ver a configuración do propietario dos directorios no directorio /home.

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

Co comando ls pode mostrar o propietario dos ficheiros nun directorio determinado. Ás veces pode ser útil obter unha lista de todos os ficheiros do sistema que teñen un determinado usuario ou grupo como propietario. Para iso podes usar atopar. Argumento atopar-usuario pode utilizarse para este fin. Por exemplo, o seguinte comando enumera todos os ficheiros que son propiedade do usuario linda:

find / -user linda

Tamén podes usar atopar para buscar ficheiros que teñan un determinado grupo como propietario.

Por exemplo, o seguinte comando busca todos os ficheiros pertencentes ao grupo usuarios:

find / -group users

Cambio de propietario

Para aplicar os permisos axeitados, o primeiro que hai que ter en conta é a propiedade. Hai un comando para iso chown. A sintaxe deste comando é fácil de entender:

chown кто что

Por exemplo, o seguinte comando cambia o propietario do directorio /home/account polo usuario linda:

chown linda /home/account

Equipo chown ten varias opcións, unha delas especialmente útil: -R. Podes adiviñar o que fai porque esta opción tamén está dispoñible para moitos outros comandos. Isto permítelle establecer de forma recursiva o propietario, o que lle permite establecer o propietario do directorio actual e todo o que está a continuación. O seguinte comando cambia a propiedade do directorio /home e todo o que está abaixo para o usuario linda:

Agora os propietarios ven así:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

Imos facer:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

Agora o usuario lisa converteuse no propietario do directorio da conta:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

Cambiar o propietario dun grupo

Hai dúas formas de cambiar a propiedade dun grupo. Podes facelo usando chown, pero hai un comando especial chamado chgrpque fai o traballo. Se queres usar o comando chown, use . ou : diante do nome do grupo.

O seguinte comando cambia calquera propietario do grupo /home/account ao grupo de contas:

chown .account /home/account

podes usar chown para cambiar o propietario dun usuario e/ou grupo de varias maneiras. Aquí tes algúns exemplos:

  • chown lisa myfile1 establece o usuario lisa como propietario de myfile1.
  • chown lisa.sales myfile establece o usuario lisa como propietario do ficheiro myfile e tamén establece o grupo de vendas como propietario do mesmo ficheiro.
  • chown lisa:sales myfile o mesmo que o comando anterior.
  • chown .sales meu ficheiro establece o grupo de vendas como propietario de myfile sen cambiar o propietario do usuario.
  • chown :vendas o meu ficheiro o mesmo que o comando anterior.

Podes usar o comando chgrppara cambiar o propietario do grupo. Considere o seguinte exemplo, onde pode usar chgrp establecer o propietario do directorio de contas no grupo de vendas:

chgrp .sales /home/account

Como con chown, pode usar a opción -R с chgrp, así como cambiar recursivamente o propietario do grupo.

Comprensión do propietario predeterminado

Quizais teña notado que cando un usuario crea un ficheiro, aplícase a propiedade predeterminada.
O usuario que crea o ficheiro pasa a ser automaticamente o propietario dese ficheiro e o grupo principal dese usuario pasa a ser automaticamente o propietario dese ficheiro. Este é normalmente o grupo que aparece no ficheiro /etc/passwd como o grupo principal do usuario. Non obstante, se o usuario é membro de máis dun grupo, o usuario pode cambiar o grupo principal efectivo.

Para mostrar o grupo principal efectivo actual, o usuario pode usar o comando grupos:

[root@server1 ~]# groups lisa
lisa : lisa account sales

Se o usuario actual de linda quere cambiar o grupo principal efectivo, usará o comando novogrpseguido do nome do grupo que quere establecer como novo grupo primario efectivo. Despois de usar o comando novogrp o grupo principal estará activo ata que o usuario introduza un comando saír ou non pechar sesión.

O seguinte mostra como o usuario linda usa este comando, con vendas como grupo principal:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

Despois de cambiar o grupo principal efectivo, todos os ficheiros novos creados polo usuario terán ese grupo como propietario do grupo. Para volver á configuración orixinal do grupo principal, utiliza saír.

Para poder usar o comando novogrp, o usuario debe ser membro do grupo que quere utilizar como grupo principal. Ademais, pódese usar un contrasinal de grupo para un grupo mediante o comando gpasswd. Se o usuario utiliza o comando novogrppero non é membro do grupo de destino, o shell solicita o contrasinal do grupo. Despois de introducir o contrasinal de grupo correcto, establecerase un novo grupo principal efectivo.

Xestión dos dereitos fundamentais

O sistema de permisos Linux foi inventado na década de 1970. Dado que as necesidades informáticas eran limitadas naqueles anos, o sistema básico de permisos era bastante limitado. Este sistema de permisos usa tres permisos que se poden aplicar a ficheiros e directorios. Nesta sección, aprenderá a usar e cambiar estes permisos.

Comprender os permisos de lectura, escritura e execución

Tres permisos básicos permítenche ler, escribir e executar ficheiros. O efecto destes permisos é diferente cando se aplican a ficheiros ou directorios. Para un ficheiro, o permiso de lectura dálle dereito a abrir o ficheiro para ler. Polo tanto, pode ler o seu contido, pero iso significa que o seu ordenador pode abrir o ficheiro para facer algo con el.

Un ficheiro de programa que precisa acceso a unha biblioteca debe, por exemplo, ter acceso de lectura a esa biblioteca. Polo tanto, o permiso de lectura é o permiso máis básico que precisa para traballar con ficheiros.

Cando se aplica a un directorio, a lectura permítelle mostrar o contido dese directorio. Debes ter en conta que este permiso non che permite ler os ficheiros do directorio. O sistema de permisos de Linux non coñece a herdanza, e a única forma de ler un ficheiro é usar permisos de lectura nese ficheiro.

Como probablemente podes adiviñar, o permiso de escritura, se se aplica a un ficheiro, permite escribir no ficheiro. Noutras palabras, permítelle cambiar o contido dos ficheiros existentes. Non obstante, non lle permite crear nin eliminar novos ficheiros nin cambiar os permisos dos ficheiros. Para iso, cómpre dar permiso de escritura ao directorio onde quere crear o ficheiro. Nos directorios, este permiso tamén permite crear e eliminar novos subdirectorios.

O permiso de execución é o que necesitas para executar o ficheiro. Nunca se instalará por defecto, o que fai que Linux sexa case completamente inmune aos virus. Só alguén con permisos de escritura no directorio pode aplicar permiso de execución.

O seguinte resume o uso dos permisos básicos:

Permisos en Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Usando chmod

O comando úsase para xestionar os permisos. chmod... Usando chmod pode establecer permisos para o usuario (usuario), grupos (grupo) e outros (outros). Podes usar este comando en dous modos: modo relativo e modo absoluto. No modo absoluto, utilízanse tres díxitos para establecer os permisos básicos.

Permisos en Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Ao configurar os permisos, calcula o valor que necesitas. Se queres configurar ler/escribir/executar para o usuario, ler/executar para o grupo e ler/executar para outros en /somefile, usa o seguinte comando chmod:

chmod 755 /somefile

Cando usas chmod deste xeito, todos os permisos actuais son substituídos polos permisos que definiches.

Se queres cambiar os permisos relativos aos permisos actuais, podes usar chmod en modo relativo. Usando chmod en modo relativo traballas con tres indicadores para indicar o que queres facer:

  1. Primeiro especificas para quen queres cambiar os permisos. Para iso, pode escoller entre usuario (u), grupo (g) e outros (o).
  2. A continuación, usa unha instrución para engadir ou eliminar permisos do modo actual, ou configuralos absolutamente.
  3. Ao final usas r, w и xpara especificar os permisos que quere establecer.

Ao cambiar os permisos no modo relativo, pode saltar a parte "a" para engadir ou eliminar permisos para todos os obxectos. Por exemplo, este comando engade permiso de execución para todos os usuarios:

chmod +x somefile

Cando se traballa en modo relativo, tamén pode usar comandos máis complexos. Por exemplo, este comando engade permiso de escritura a un grupo e elimina o permiso de lectura para outros:

chmod g+w,o-r somefile

Ao usar chmod -R o+rx /data estableces o permiso de execución para todos os directorios, así como para os ficheiros do directorio /data. Para configurar o permiso de execución só para os directorios e non para os ficheiros, use chmod -R o+ rX /datos.

A X en maiúscula garante que os ficheiros non obteñan permiso de execución a menos que o ficheiro xa teña definido o permiso de execución para algúns obxectos. Isto fai que X sexa un xeito máis intelixente de xestionar os permisos de execución; isto evitará establecer este permiso nos ficheiros onde non sexa necesario.

Dereitos ampliados

Ademais dos permisos básicos dos que acabas de ler, Linux tamén ten un conxunto de permisos avanzados. Estes non son os permisos que estableces por defecto, pero ás veces proporcionan un complemento útil. Nesta sección, aprenderás que son e como configuralos.

Comprensión dos permisos estendidos de SUID, GUID e Sticky Bit

Hai tres permisos avanzados. O primeiro deles é o permiso para establecer un identificador de usuario (SUID). Nalgúns casos especiais, pode aplicar este permiso aos ficheiros executables. Por defecto, un usuario que executa un executable executa ese ficheiro cos seus propios permisos.

Para os usuarios comúns, isto normalmente significa que o uso do programa é limitado. Non obstante, nalgúns casos, o usuario necesita permisos especiais, só para realizar unha tarefa específica.

Considere, por exemplo, unha situación na que un usuario necesita cambiar o seu contrasinal. Para iso, o usuario debe escribir o seu novo contrasinal no ficheiro /etc/shadow. Non obstante, os usuarios non root non poden escribir este ficheiro:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

O permiso SUID ofrece unha solución a este problema. A utilidade /usr/bin/passwd usa este permiso por defecto. Isto significa que ao cambiar o contrasinal, o usuario pasa a ser temporalmente root, o que lle permite escribir no ficheiro /etc/shadow. Podes ver o permiso SUID con ls-l como s nunha posición na que normalmente esperarías ver x para permisos personalizados:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

O permiso SUID pode parecer útil (e nalgúns casos é), pero ao mesmo tempo é potencialmente perigoso. Se non se aplica correctamente, pode ceder accidentalmente os permisos de root. Polo tanto, recomendo usalo só co máximo coidado.

A maioría dos administradores nunca necesitarán usalo; só o verá nalgúns ficheiros onde o sistema operativo debería configuralo por defecto.

O segundo permiso especial é o identificador de grupo (SGID). Este permiso ten dous efectos. Cando se aplica a un ficheiro executable, dálle ao usuario que executa o ficheiro os permisos do propietario do grupo do ficheiro. Entón, SGID pode facer máis ou menos o mesmo que SUID. Non obstante, SGID practicamente non se utiliza para este fin.

Do mesmo xeito que co permiso SUID, SGID aplícase a algúns ficheiros do sistema como configuración predeterminada.

Cando se aplica a un directorio, o SGID pode ser útil porque pode usalo para establecer o propietario do grupo predeterminado para os ficheiros e subdirectorios creados nese directorio. De forma predeterminada, cando un usuario crea un ficheiro, o seu grupo principal efectivo establécese como propietario do grupo para ese ficheiro.

Isto non sempre é moi útil, especialmente porque os usuarios de Red Hat/CentOS teñen o seu grupo principal configurado nun grupo co mesmo nome que o usuario, e do que o usuario é o único membro. Así, por defecto, os ficheiros que cree o usuario compartiranse en masa.

Imaxina unha situación na que os usuarios linda e lori traballan na contabilidade e son membros dun grupo conta. Por defecto, estes usuarios son membros dun grupo privado do que son o único membro. Non obstante, ambos usuarios son membros do grupo de contas, pero tamén como parámetro secundario do grupo.

A situación predeterminada é que cando algún destes usuarios crea un ficheiro, o grupo principal pasa a ser o propietario. Polo tanto, por defecto, linda non pode acceder aos ficheiros creados por lori, e viceversa. Non obstante, se creas un directorio de grupo compartido (por exemplo, /groups/account) e asegúrate de que se aplica o permiso SGID a ese directorio e de que a conta do grupo está definida como propietario do grupo para ese directorio, todos os ficheiros creados nese directorio e todos os dos seus subdirectorios , tamén obtén a conta do grupo como propietario do grupo por defecto.

Por este motivo, o permiso SGID é un permiso moi útil para configurar directorios de grupos públicos.

O permiso SGID móstrase na saída ls-l como s na posición onde normalmente atoparías permiso para executar un grupo:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

O terceiro dos permisos especiais é o pegajoso. Este permiso é útil para protexer ficheiros contra a eliminación accidental nun ambiente onde varios usuarios teñen acceso de escritura ao mesmo directorio. Se se usa un bit adhesivo, un usuario só pode eliminar un ficheiro se é o propietario do ficheiro ou directorio que contén o ficheiro. Por este motivo, úsase como permiso predeterminado para o directorio /tmp e tamén pode ser útil para directorios de grupos públicos.

Sen o bit pegajoso, se o usuario pode crear ficheiros nun directorio, tamén pode eliminar ficheiros dese directorio. Nun entorno de grupo público, isto pode ser molesto. Imaxina aos usuarios linda e lori, que teñen permisos de escritura no directorio /data/account e obteñen eses permisos ao ser membros do grupo de contas. Polo tanto, linda pode eliminar ficheiros creados por lori e viceversa.

Cando aplica o bit adhesivo, o usuario só pode eliminar ficheiros se se cumple unha das seguintes condicións:

  • O usuario é o propietario do ficheiro;
  • O usuario é o propietario do directorio onde se atopa o ficheiro.

Ao usar ls-l, podes ver o pegajoso como t na posición na que normalmente vería o permiso de execución para outros:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

Aplicación de dereitos ampliados

Para aplicar SUID, SGID e sticky bit tamén podes usar chmod. SUID ten un valor numérico de 4, SGID ten un valor numérico de 2 e o bit adhesivo ten un valor numérico de 1.

Se queres aplicar estes permisos, debes engadir un argumento de catro díxitos a chmod, cuxo primeiro díxito fai referencia a permisos especiais. A seguinte liña, por exemplo, engadirá o permiso SGID ao directorio e establecerá rwx para o usuario e rx para o grupo e outros:

chmod 2755 /somedir

Isto é pouco práctico se necesitas ver os permisos actuais establecidos antes de traballar chmod en modo absoluto. (Corres o risco de sobrescribir os permisos se non o fai). Por iso, recomendo executar en modo relativo se precisa aplicar algún dos permisos especiais:

  1. Para uso SUID chmod u+s.
  2. Para uso SGID chmod g+s.
  3. Para uso pegajoso chmod + t, seguido do nome do ficheiro ou directorio para o que quere establecer permisos.

A táboa resume todo o que precisa saber sobre a xestión de permisos especiais.

Permisos en Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Exemplo de traballo con dereitos especiais

Neste exemplo, usa permisos especiais para facilitar aos membros do grupo compartir ficheiros no directorio do grupo compartido. Asignas o bit de ID ao ID de grupo establecido, así como ao bit adhesivo, e ves que, unha vez configurados, engádense funcións para facilitar que os membros do grupo traballen xuntos.

  1. Abre un terminal onde sexas o usuario linda. Podes crear un usuario co comando Linda, engade o contrasinal pase linda.
  2. Cree o directorio /data na raíz e o subdirectorio /data/sales co comando mkdir -p /data/sales. Completa cd /datos/vendaspara ir ao directorio de vendas. Completa toca linda1 и toca linda2para crear dous ficheiros baleiros propiedade de linda.
  3. Executar su-lisa para cambiar o usuario actual ao usuario lisa, que tamén é membro do grupo de vendas.
  4. Executar cd /datos/vendas e desde ese directorio executa ls-l. Verá dous ficheiros que foron creados polo usuario linda e pertencen ao grupo linda. Completa rm -f linda*. Isto eliminará ambos ficheiros.
  5. Executar toca lisa1 и toca lisa2para crear dous ficheiros que son propiedade do usuario lisa.
  6. Executar su- para elevar os teus privilexios a root.
  7. Executar chmod g+s,o+t /data/salespara establecer o bit identificador de grupo (GUID) así como o bit adhesivo no directorio do grupo compartido.
  8. Executar su-linda. Logo fai toca linda3 и toca linda4. Agora debería ver que os dous ficheiros que creou son propiedade do grupo de vendas, que é o propietario do grupo do directorio /data/sales.
  9. Executar rm -rf lisa*. O bit adhesivo impide que estes ficheiros sexan eliminados en nome do usuario linda, xa que non es o propietario destes ficheiros. Teña en conta que se o usuario linda é o propietario do directorio /data/sales, pode eliminar estes ficheiros de todos os xeitos.

Xestión de ACL (setfacl, getfacl) en Linux

Aínda que os permisos estendidos comentados anteriormente engaden unha funcionalidade útil á forma en que Linux xestiona os permisos, non lle permite conceder permisos a máis dun usuario ou grupo no mesmo ficheiro.

As listas de control de acceso ofrecen esta función. Ademais, permiten aos administradores establecer os permisos predeterminados dun xeito complexo, onde os permisos establecidos poden variar dun directorio a outro.

Comprensión das ACL

Aínda que o subsistema ACL engade unha gran funcionalidade ao teu servidor, ten unha desvantaxe: non todas as utilidades o admiten. Polo tanto, pode perder a súa configuración ACL ao copiar ou mover ficheiros e o software de copia de seguranza pode fallar na copia de seguridade da súa configuración ACL.

A utilidade tar non admite ACL. Para asegurarse de que a configuración da ACL non se perda ao crear unha copia de seguranza, use estrela en lugar de alcatrán. estrela funciona coas mesmas opcións que tar; só engade soporte para a configuración ACL.

Tamén pode facer unha copia de seguranza de ACL con obterfacl, que se pode restaurar mediante o comando setfacl. Para crear unha copia de seguridade, use getfacl -R /directorio > ficheiro.acls. Para restaurar a configuración desde un ficheiro de copia de seguranza, use setfacl --restore=ficheiro.acl.

A falta de apoio por parte dalgunhas ferramentas non debería ser un problema. As ACL adoitan aplicarse aos directorios como unha medida estrutural e non a ficheiros individuais.
Polo tanto, non haberá moitos deles, senón só algúns, aplicados en lugares intelixentes do sistema de ficheiros. Polo tanto, restaurar as ACL orixinais coas que traballaches é relativamente fácil, aínda que o teu software de copia de seguridade non as admita.

Preparación do sistema de ficheiros para ACL

Antes de comezar a traballar con ACL, é posible que necesites preparar o teu sistema de ficheiros para admitir ACL. Dado que os metadatos do sistema de ficheiros deben ampliarse, non sempre hai soporte predeterminado para as ACL no sistema de ficheiros. Se recibe unha mensaxe de "operación non compatible" ao configurar ACL para un sistema de ficheiros, é posible que o seu sistema de ficheiros non admita ACL.

Para solucionar isto, cómpre engadir a opción montaxe acl en /etc/fstab para que o sistema de ficheiros estea montado con soporte ACL por defecto.

Cambiando e visualizando a configuración de ACL con setfacl e getfacl

Para configurar unha ACL precisa o comando setfacl. Para ver a configuración actual da ACL, necesitas obterfacl. Equipo ls-l non mostra ningunha ACL existente; só mostra un + despois da lista de permisos, o que indica que as ACL tamén se aplican ao ficheiro.

Antes de configurar as ACL, sempre é unha boa idea mostrar a configuración actual da ACL obterfacl. No seguinte exemplo, podes ver os permisos actuais, como se mostra con ls-l, e tamén como se mostra con obterfacl. Se observas o suficiente, verás que a información que se mostra é exactamente a mesma.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Como resultado da execución do comando obterfacl a continuación podes ver que os permisos móstranse para tres obxectos diferentes: usuario, grupo e outros. Agora imos engadir unha ACL para dar permisos de lectura e execución tamén ao grupo de vendas. comando para isto setfacl -mg:sales:rx /dir. Neste equipo -m indica que hai que cambiar a configuración actual da ACL. Despois diso g:vendas:rx dille ao comando que configure a ACL de lectura e execución (rx) para o grupo (g) vendas. A continuación podes ver como é o comando, así como a saída do comando getfacl despois de cambiar a configuración actual da ACL.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Agora que entendes como configurar unha ACL de grupo, é fácil entender as ACL para usuarios e outros usuarios. Por exemplo, o comando setfacl -mu:linda:rwx /data dá permisos ao usuario linda no directorio /data sen facelo propietario nin cambiar a asignación do propietario actual.

Equipo setfacl ten moitas funcións e opcións. Unha opción é especialmente importante, o parámetro -R. Se se usa, a opción configura a ACL para todos os ficheiros e subdirectorios que existen actualmente no directorio onde estableceu a ACL. Recoméndase que use sempre esta opción cando cambie as ACL de directorios existentes.

Traballar con ACL predeterminadas

Unha das vantaxes de usar ACL é que pode conceder permisos a varios usuarios ou grupos nun directorio. Outra vantaxe é que pode activar a herdanza traballando coas ACL predeterminadas.

Ao establecer a ACL predeterminada, determina os permisos que se establecerán para todos os elementos novos creados no directorio. Teña en conta que a ACL predeterminada non cambia os permisos dos ficheiros e subdirectorios existentes. Para cambialos, tamén cómpre engadir unha ACL normal.

Isto é importante saber. Se queres usar unha ACL para configurar varios usuarios ou grupos para acceder ao mesmo directorio, debes configurar a ACL dúas veces. Primeiro uso setfacl -R -mpara cambiar a ACL dos ficheiros actuais. Despois usa setfacl-md:para coidar todos os elementos novos que tamén se van crear.

Para configurar a ACL predeterminada só precisa engadir a opción d despois da opción -m (a orde importa!). Así que usa setfacl -md:g:sales:rx /datase queres que as vendas grupais lean e executen o que se crea no directorio /data.

Cando se usan ACL predeterminadas, tamén pode ser útil establecer ACL para outros. Isto xeralmente non ten moito sentido porque tamén pode cambiar os permisos dos outros que o usen chmod. Non obstante, o que non podes facer chmod, é especificar os dereitos que se deben conceder a outros usuarios por cada ficheiro novo que se crea. Se queres evitar que outros consigan permisos en calquera cousa creada en /data, por exemplo, usa setfacl -md:o::- /data.

As ACL e os permisos normais non sempre están ben integrados. Poden xurdir problemas se aplica unha ACL predeterminada a un directorio, despois engádense elementos a ese directorio e despois tenta cambiar os permisos normais. Os cambios que se aplican aos permisos habituais non se reflectirán ben na vista xeral da ACL. Para evitar problemas, configure primeiro os permisos normais e despois as ACL predeterminadas (e intente non cambialos de novo despois).

Exemplo de xestión de dereitos elevados usando ACL

Neste exemplo, seguirá cos directorios /data/account e /data/sales que creou anteriormente. Nos exemplos anteriores, asegurouse de que o grupo de vendas ten permisos en /data/sales e o grupo de contas ten permisos en /data/account.

En primeiro lugar, asegúrate de que o grupo de contas obtén permisos de lectura no directorio /data/sales e que o grupo de vendas obtén permisos de lectura no directorio /data/account.

Despois estableces as ACL predeterminadas para asegurarte de que todos os ficheiros novos teñan os permisos correctos para todos os elementos novos.

  1. Abre un terminal.
  2. Executar setfacl -mg:account:rx /data/sales и setfacl -mg:sales:rx /data/account.
  3. Executar obterfaclpara asegurarse de que os permisos estaban configurados como quería.
  4. Executar setfacl -md:g:account:rwx,g:sales:rx /data/salespara establecer a ACL predeterminada para o directorio de vendas.
  5. Engade unha ACL predeterminada para o directorio /data/account usando setfacl -md:g:sales:rwx,g:account:rx /data/account.
  6. Verifique que a configuración da ACL estea en vigor engadindo un novo ficheiro a /data/sales. Completa toque /data/sales/newfile e executar getfacl /data/sales/newfile para comprobar os permisos actuais.

Establecendo permisos predeterminados con umask

Arriba, aprendeu a traballar coas ACL predeterminadas. Se non está a usar unha ACL, hai unha opción de shell que determina os permisos predeterminados que obterá: máscara (máscara inversa). Nesta sección, aprenderás a cambiar os permisos predeterminados con máscara.

Quizais teña notado que cando crea un ficheiro novo, establécense algúns permisos predeterminados. Estes permisos están determinados pola configuración máscara. Esta configuración de shell aplícase a todos os usuarios ao iniciar sesión. En parámetro máscara utilízase un valor numérico, que se resta dos permisos máximos que se poden establecer automaticamente para o ficheiro; a configuración máxima para ficheiros é 666 e para directorios é 777.

Non obstante, aplícanse algunhas excepcións a esta regra. Podes atopar unha visión xeral completa da configuración máscara na táboa seguinte.

Dos números utilizados en máscara, como no caso dos argumentos numéricos para o comando chmod, o primeiro díxito refírese aos permisos do usuario, o segundo díxito refírese aos permisos do grupo e o último refírese aos permisos predeterminados establecidos para outros. Significado máscara o 022 predeterminado dá 644 para todos os ficheiros novos e 755 para todos os directorios novos creados no teu servidor.

Visión xeral completa de todos os valores numéricos máscara e os seus resultados na táboa seguinte.

Permisos en Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Un xeito sinxelo de ver como funciona a configuración de umask é o seguinte: comeza cos permisos predeterminados do ficheiro definidos en 666 e resta a umask para obter os permisos efectivos. Fai o mesmo para o directorio e os seus permisos predeterminados de 777.

Hai dúas formas de cambiar a configuración de umask: para todos os usuarios e para usuarios individuais. Se quere configurar a umask para todos os usuarios, debe asegurarse de que se teña en conta a configuración de umask ao iniciar os ficheiros do contorno de shell, tal e como se especifica en /etc/profile. O enfoque correcto é crear un script de shell chamado umask.sh no directorio /etc/profile.d e especificar a umask que quere usar nese script de shell. Se a umask se cambia neste ficheiro, aplícase a todos os usuarios despois de iniciar sesión no servidor.

Unha alternativa para configurar o umask a través de /etc/profile e ficheiros relacionados, onde se aplica a todos os usuarios que inician sesión, é cambiar a configuración de umask nun ficheiro chamado .profile que se crea no directorio de inicio de cada usuario.

A configuración aplicada neste ficheiro só aplícase ao usuario individual; polo tanto, este é un bo método se necesitas máis detalles. Persoalmente, gústame que esta función cambie a umask predeterminada para o usuario root a 027 mentres que os usuarios normais se executan coa umask predeterminada de 022.

Traballar con atributos de usuario estendidos

Esta é a sección final sobre os permisos de Linux.

Cando se traballa con permisos, sempre hai unha relación entre un usuario ou obxecto de grupo e os permisos que teñen os obxectos de usuario ou grupo nun ficheiro ou directorio. Un método alternativo para protexer ficheiros nun servidor Linux é traballar con atributos.
Os atributos fan o seu traballo independentemente de que o usuario acceda ao ficheiro.

Do mesmo xeito que coas ACL, os atributos do ficheiro poden ter que incluír a opción montar.

Esta é unha opción usuario_xattr. Se recibe unha mensaxe de "operación non compatible" cando traballa con atributos de usuario estendidos, asegúrese de establecer o parámetro montar en /etc/fstab.

Moitos atributos están documentados. Algúns atributos están dispoñibles pero aínda non se implementaron. Non os uses; non che traerán nada.

Abaixo amósanse os atributos máis útiles que pode aplicar:

A Este atributo garante que o tempo de acceso ao ficheiro non cambie.
Normalmente, cada vez que se abre un ficheiro, o tempo de acceso ao ficheiro debe rexistrarse nos metadatos do ficheiro. Isto afecta negativamente o rendemento; polo que para ficheiros aos que se accede regularmente, o atributo A pódese usar para desactivar esta función.

a Este atributo permítelle engadir pero non eliminar un ficheiro.

c Se está a usar un sistema de ficheiros que admite a compresión a nivel de volume, este atributo de ficheiro garante que o ficheiro se comprime a primeira vez que se activa o mecanismo de compresión.

D Este atributo garante que as modificacións dos ficheiros se escriban no disco inmediatamente en lugar de almacenarse na memoria caché primeiro. Este é un atributo útil nos ficheiros de bases de datos importantes para asegurarse de que non se perdan entre a caché de ficheiros e o disco duro.

d Este atributo garante que o ficheiro non se gardará nas copias de seguranza onde se utilice a utilidade de volcado.

I Este atributo permite a indexación do directorio no que está habilitado. Isto proporciona un acceso máis rápido aos ficheiros para sistemas de ficheiros primitivos como Ext3 que non usan a base de datos B-tree para o acceso rápido aos ficheiros.

i Este atributo fai que o ficheiro sexa inmutable. Polo tanto, non se poden facer cambios no ficheiro, o que é útil para os ficheiros que necesitan protección adicional.

j Este atributo garante que, nun sistema de ficheiros ext3, o ficheiro se escriba primeiro no diario e despois nos bloques de datos do disco duro.

s Sobreescribe os bloques nos que se gardou o ficheiro a 0s despois de eliminar o ficheiro. Isto garante que o ficheiro non se poida restaurar unha vez eliminado.

u Este atributo almacena información sobre a eliminación. Isto permítelle desenvolver unha utilidade que traballe con esta información para rescatar ficheiros eliminados.

Se queres aplicar os atributos, podes usar o comando charla. Por exemplo, use chattr +s algún ficheiropara aplicar atributos a algún ficheiro. Necesitas eliminar un atributo? Despois usa chattr -s algún ficheiroe será eliminado. Para obter unha visión xeral de todos os atributos que se aplican actualmente, use o comando lsattr.

Resumo

Neste artigo, aprendeu a traballar con permisos. Le sobre os tres permisos básicos, os permisos avanzados e como aplicar ACL nun sistema de ficheiros. Tamén aprendeu a usar a opción umask para aplicar os permisos predeterminados. Ao final deste artigo, aprendeu a usar atributos estendidos polo usuario para aplicar unha capa adicional de seguridade do sistema de ficheiros.

Se che gustou esta tradución, escribe sobre ela nos comentarios. Haberá máis motivación para facer traducións útiles.

Corrixiron algúns erros tipográficos e gramaticais no artigo. Reduciuse algúns parágrafos voluminosos a outros máis pequenos para unha mellor lexibilidade.

En lugar de "Só alguén con dereitos administrativos sobre o directorio pode aplicar o permiso de execución". corrixido en "Só alguén con permisos de escritura no directorio pode aplicar permiso de execución.", o que sería máis correcto.

Grazas polos comentarios berez.

Substituído:
Se non es o propietario do usuario, o shell comprobará se es membro dun grupo, tamén coñecido como o grupo do ficheiro.

No:
Se non es o propietario do ficheiro, o shell comprobará se es membro dun grupo que ten permisos sobre o ficheiro. Se es membro deste grupo, accederás ao ficheiro cos permisos que o grupo estableceu e o shell deixará de comprobar.

Grazas polo teu comentario CryptoPirate

Fonte: www.habr.com

Engadir un comentario