另外用 QQ 举例子是不恰当的,QQ 明显是可以重名的,但 QQ 号是不重复的。但 linux 用户不同,不仅用户名相同,连 id 都可以相同。这就像数据库中表的主键一样,QQ 号是主键,linux 用户的 id 也是主键。那么主键是不能重复的。 说白了:我可以在我的四台虚拟机上让用户不重名,但我不能保证我和互联网上某一台机器不重名
如果一个黑客专心攻击一台电脑的话。 三大系统最安全的就是 Linux 系统。 我记得几年前有个黑客大赛,一群黑客团队轮番攻击三台电脑,率先攻破一台电脑并且删除其中用户的重要文件,就能获得丰厚奖金。 Mac OS X 刚开赛,立即被攻破。 Windows 坚持了一天,仍然在第二天被攻破。 Linux 坚持到大赛结束,仍然没有任何团队将其攻破。
一个黑客,在自己的系统里创建了一个脚本文件,owner 是 lzc(在黑客的 Linux 上),然后,假设如你所说,把这个放到你的 Linux 里,那个脚本就能运行以你的 LInux 里的 lzc 身份为所欲为了是不是? 我不是反对这点,而是你这是在忽略了一个重大环节下的错觉。
那个黑客为什么能把脚本移动到你的 Linux 里?
这说明,他取得了你的 Linux 的权限! 黑客要做的还是取得目标系统的权限,没有什么变容易了……
所以说那个脚本在你的 Linux 里的 owner,是要看通过哪个用户把文件移过去,你拿虚拟机用 scp 试试就知道了,正如你前面拿 root 和 lzc 打开 U 盘会有两个不同的结果一样。
而那个 QQ 的例子里面,你说 user id 是主键,实际上用户是依托于系统的,一个文件的所属关系不只是用户,还要系统。正如不会出现 2 个一模一样的 QQ 号,Linux 世界也没有两个一样的文件。
为什么说你是错觉呢?你把第二台 Linux 用户名设置成 coffin 或者别的试试,你会发现,拿 coffin 打开 U 盘把文件传过来,owner 变成了 coffin,错觉就在于——你的两台 Linux 用户名一样。
2 楼 coffin 童鞋所说的 “不要管文件在第一个 Linux 里面的 owner,而是看你是用哪个身份将文件从 U 盘拷到第二个系统里,这个决定了文件在第二个系统里的 owner。
也就是说,你既然你能把文件从别的地方拷到你的系统里来——那你理所应当是它的 owner——在这个系统里。” —— 这个说法是错误的
我原先的理解,文件在用 U 盘拷贝来拷贝去的过程中 owner 不变。—— 这也是错误的。
我测试的结果是, 你用哪个用户打开的 U 盘,U 盘中的文件的 owner 就是哪个用户。
我测试的过程如下:我在第一台主机上用 lzc 用户新建 text 文件,然后 lzc 登出,再用 dasusr1 用户登录,并将 text 拷贝到 U 盘中(我不用 lzc 直接拷贝是因为 2 楼 coffin 说 U 盘中文件的 owner 是文件的拷贝者,所以我特地换另一个用户拷贝文件),再分别用 root、dasusr1、holdbelief 等身份登录(lzc、root、dasusr1 位于同一个虚拟机中,holdbelief 位于另一个非虚拟机 linux 机器中,总之为了避免错误,我进行了各种测试,我有很多台笔记本,也有很多虚拟机),当我用 root 登录打开 U 盘后,text 的 owner 变成了 root,同理 dasusr1 和 holdbelief 登录时 owner 分别变成了 dasusr1 和 holdbelief。
可见拷贝到 U 盘中的文件的 owner 是变化的,但不是拷贝者,而是拷贝之后用哪个身份查看 U 盘中的该文件,那个身份就是 owner。
请大家检查我这样的测试有什么疏漏的地方吗?如果没有应该可以证明我的结论。
但我不知道这和文件系统有关系吗?我的 U 盘是 fat 文件系统,如果是 ext4 结论是否相同我会再做测试。
经测试:以上结论只适用于 FAT 文件系统的 U 盘在 linux 之间拷贝文件,如果 U 盘是 Ext4 文件系统,则 U 盘中文件的 owner 是拷贝者。
大概是因为 FAT 文件系统中的权限模式和 linux 不一样,linux 只能谁打开 U 盘,谁就是 U 盘中所有文件的 owner,这样处理了。
我又测试了一下,好像 FAT32 本来就没有权限控制。这次我是在 windows 上测试的,FAT32 的 U 盘中的文件,点击右键,没有·「安全」选项卡;ntfs 文件系统 U 盘中的文件上点击右键,出现了·安全」选项卡。
结论是:
1、如果是 linux 自身的文件系统(ext4,其他的没有做测试)的 U 盘,那么 U 盘中文件的 owner 是该文件的拷贝者。
2、如果是 windows 的文件系统(FAT32、ntfs)的 U 盘放在 linux 上使用,那么谁打开的 U 盘,U 盘中的文件的 owner 就是谁。
3、如果是 FAT32 文件系统的 U 盘,不论在 windows 上还是 linux 用,都没有权限(windows 上根本没有权限控制,linux 上见上一条)。
比如:第二个 Linux 上同名用户访问第一个 Linux 就自动获得了第一个 Linux 上同名用户所有文件的读写权限。这其实完全不能说明「跨计算机同名用户登陆就自动对方获得文件读写权限」。因为怎么访问是个大问题,你这等于已经假设所有人的大门对你敞开,然后聊怎么偷东西(那还用聊吗?),然后下结论说人类的家太不安全了。你把 mount 或者 share 的过程完全抛开了,而之所以能够访问,能够有权限,其实完完全全是这两个中间过程做到的。