如果我在一个系统上创建一个文件可执行文件,如果我将它移动到另一个系统,它是否会保留?

如果使用chmod +x 创建一个文件可执行chmod +x ,即使我将文件移动到另一个系统,仍会应用更改吗?

即使我将文件分发给大量用户,例如通过Sourceforge,这是否适用?

文艺青年最爱的

移动和复制都取决于用于移动/复制文件的工具,以及复制用户的umask。 然而:

  • 如果文件被移动:通常是YES ,因为用于移动文件的工具任意改变移动文件的权限没有多大意义;
  • 如果文件被复制:通常为NO ,按照惯例,复制文件具有权限666减去用户的umask,默认为002 ; 无论原始文件的权限如何,99%的情况下复制的文件都有权限664 ;

复制文件=〜读取文件并将其写入另一个位置=〜 使用原始文件的内容创建新文件

从/向同一文件系统复制/移动或从/向另一个文件系统复制/移动的文件的权限取决于:

  1. 在工具上复制/移动文件。
  2. 复制时,也可以在用户的​​umask上复制文件=〜读取文件并将其写入另一个位置=〜使用原始文件的内容创建新文件,因此适用于新创建文件的约束也适用于复制文件。

所以这完全取决于两者的结合。 然而:

  • 惯例是,从/到同一文件系统或从/到另一个文件系统复制的文件将由该工具将权限设置为666 ; 默认的umask是002 ,因此在99%的情况下文件将具有权限664 ;
  • 惯例是,从/向同一文件系统移动或从/向另一个文件系统移动的文件将具有通过该工具设置为原始文件的权限的权限;

从Internet下载文件与元数据无关,因为元数据是文件系统的东西; 设置为从因特网下载的文件的权限是根据适用于从/向同一文件系统复制的文件或从/到另一个文件系统的相同“规则”设置的,即取决于工具和用户的umask。


因此,当您从Internet下载文件时,下载文件的权限通常设置为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 

但是, 从tarball中提取的文件将具有基于Tar特定约束设置的权限 ;

如果提取tarball的用户是root或者调用了tar,则传递-p--preserve-permissions --same-permissions--same-permissions开关,提取文件的权限将被设置为原始文件的权限:

 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 

如果提取tarball的用户不是 root 并且 没有调用tar传递-p--preserve-permissions --same-permissions--same-permissions开关,则提取文件的权限将被设置为原始文件的权限减去用户的权限umask

 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