Se eu fizer um arquivo executável em um sistema, ele permanecerá assim se eu movê-lo para outro?

3

Se tornar um arquivo executável com chmod +x <file> , a mudança ainda será aplicada mesmo se eu mover o arquivo para outro sistema?

Isso se aplicaria mesmo se eu distribuísse o arquivo para um grande número de usuários, como por meio do Sourceforge?

    
por DevRobot 03.11.2015 / 17:24

1 resposta

2

Tl; dr

Tanto para mover como para copiá-lo depende da ferramenta usada para mover / copiar o arquivo e para copiar também na umask do usuário. No entanto:

  • Se o arquivo for movido: normalmente SIM , como para uma ferramenta destinada a mover arquivos para alterar arbitrariamente as permissões dos arquivos movidos, faz pouco sentido;
  • Se o arquivo for copiado: geralmente NO , como por convenção, os arquivos copiados têm permissões 666 menos a umask do usuário, que por padrão é 002 ; Não importa as permissões do arquivo original, em 99% dos casos, um arquivo copiado terá permissões 664 ;
  

Copiando um arquivo = ~ lendo um arquivo e escrevendo em outra posição = ~ criando um novo arquivo com o conteúdo do arquivo original .

As permissões de um arquivo copiado / movido de / para o mesmo sistema de arquivos ou copiado / movido de / para outro sistema de arquivos dependem:

  1. Na ferramenta copiando / movendo o arquivo.
  2. Ao copiar, também no umask do usuário, como copiar um arquivo = ~ ler um arquivo e gravá-lo em outra posição = ~ criar um novo arquivo com o conteúdo do arquivo original, assim restrições que se aplicam a arquivos recém-criados também aplicar aos arquivos copiados.

Então, é totalmente até a combinação dos dois. No entanto:

  • A convenção é que um arquivo copiado de / para o mesmo sistema de arquivos ou de / para outro sistema de arquivos terá as permissões definidas como 666 pela ferramenta; o umask padrão é 002 , portanto, em 99% dos casos, o arquivo terá permissões 664 ;
  • A convenção é que um arquivo movido de / para o mesmo sistema de arquivos ou de / para outro sistema de arquivos terá as permissões definidas para as permissões do arquivo original pelo ferramenta;

O download de um arquivo da Internet não tem nada a ver com metadados, pois os metadados são uma coisa do sistema de arquivos; As permissões definidas para um arquivo baixado da Internet são definidas seguindo as mesmas "regras" que se aplicam a um arquivo copiado de / para o mesmo sistema de arquivos ou de / para outro sistema de arquivos, isto é, dependendo da ferramenta e da umask do usuário. >

Portanto, quando você faz o download de um arquivo da Internet, as permissões do arquivo baixado geralmente são definidas como 664 :

% wget 'http://downloads.sourceforge.net/project/resolutionx/ResolutionX.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fresolutionx%2F&ts=1446571625&use_mirror=netassist'
--2015-11-03 18:28:07--  http://downloads.sourceforge.net/project/resolutionx/ResolutionX.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fresolutionx%2F&ts=1446571625&use_mirror=netassist
Resolving downloads.sourceforge.net (downloads.sourceforge.net)... 216.34.181.59
Connecting to downloads.sourceforge.net (downloads.sourceforge.net)|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://netassist.dl.sourceforge.net/project/resolutionx/ResolutionX.tar.gz [following]
--2015-11-03 18:28:08--  http://netassist.dl.sourceforge.net/project/resolutionx/ResolutionX.tar.gz
Resolving netassist.dl.sourceforge.net (netassist.dl.sourceforge.net)... 62.205.134.42, 2a01:d0:0:37::2
Connecting to netassist.dl.sourceforge.net (netassist.dl.sourceforge.net)|62.205.134.42|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8280 (8,1K) [application/x-gzip]
Saving to: ‘ResolutionX.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fresolutionx%2F&ts=1446571625&use_mirror=netassist’

ResolutionX.tar.gz? 100%[=====================>]   8,09K  --.-KB/s   in 0,007s 

2015-11-03 18:28:22 (1,07 MB/s) - ‘ResolutionX.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fresolutionx%2F&ts=1446571625&use_mirror=netassist’ saved [8280/8280]

% ls -l
total 12
-rw-rw-r-- 1 user user 8280 set  1 11:55 ResolutionX.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fresolutionx%2F&ts=1446571625&use_mirror=netassist

No entanto, arquivos extraídos de um tarball terão as permissões definidas com base nas restrições específicas do Tar ;

Se o usuário que extrair o tarball for root ou se o Tar for chamado de passar a opção -p , --preserve-permissions ou --same-permissions , as permissões dos arquivos extraídos serão definidas para as permissões dos arquivos originais:

user@user-X550CL ~/tmp % touch foo
user@user-X550CL ~/tmp % chmod 777 foo
user@user-X550CL ~/tmp % tar cf foo.tar foo
user@user-X550CL ~/tmp % rm foo
user@user-X550CL ~/tmp % tar xf foo.tar -p
user@user-X550CL ~/tmp % ls -l
total 12
-rwxrwxrwx 1 user user     0 nov  4 07:45 foo
-rw-rw-r-- 1 user user 10240 nov  4 07:45 foo.tar

Se o usuário que extraiu o tarball não raiz e Tar não é chamado passando o -p , --preserve-permissions ou --same-permissions switch, as permissões dos arquivos extraídos serão configuradas para as permissões dos arquivos originais menos a umask do usuário :

user@user-X550CL ~/tmp % tar xf foo.tar   
user@user-X550CL ~/tmp % ls -l
total 12
-rwxrwxr-x 1 user user     0 nov  4 07:45 foo
-rw-rw-r-- 1 user user 10240 nov  4 07:45 foo.tar
    
por kos 04.11.2015 / 07:52