用户权限,用户名,用户 id 的问题

:joy: 我觉得 U 盘的权限根本就没有必要. 我很难想象我自己的 U 盘拿到别的电脑上发现居然没有权限可以读写这种情况发生!.
如果是一块系统硬盘或是重要信息的储存介质还好说.(当然这些东西一般都是在你很严密的看管下. 丢了也就没有权限可言了.

说到底. 权限基本上也就是防止非物理性接触窃取!(当我拿到你的硬盘或是其他什么. 权限都是白搭.
在互联网上我们可以看成是给你一个大门让你访问我的电脑. 简单来说. 我就算给你的我的用户和密码. 可是你根本就没办法访问得了我的电脑. 你有密码和用户又有什么用!

你没有明白我的意思,我们分两种情况讨论:
1、FAT32,ntfs 文件系统情况下,如果你打开了 U 盘,你们 U 盘上面文件的 owner 就是你了, 和你是否拷贝了没有关系 ——(原因我上面说过,FAT32 和 ntfs 文件系统里面记录的 owner 是 windows 下的 owner,linux 不认,所以 linux 只能退而求其次谁打开 U 盘谁就是 owner)。
2、如果 U 盘都没有打开(没有插在电脑上或者插上了但没有挂载,那么就是没有 owner,或者更准确地说,有 owner,但这个 owner 是 ntfs 文件系统记录的 owner,linux 不认而已,当然这第二种情况是插都没插,那就更不要讨论是否认不认了。)

你这种想法我觉得明显是错误的, 我很难想象我自己的 U 盘拿到别的电脑上发现居然没有权限可以读写这种情况发生!. ,你不会将 others 的权限设置成可读可写不就完了吗?
而且不论是 windows 还是 linux 都是这么做的,如果你的 U 盘文件系统是 ntfs 或者 ext4 的话,U 盘上的文件就是有权限的,这时你就要将文件的 others 权限放开一点,ntfs 的话同理将所有用户的权限修改成完全控制。
另外请想一下,我这里虽然讨论的是 U 盘,但是服务器硬盘是同理的,我一块服务器上的硬盘难道不设置权限吗?我这里只是没有服务器硬盘拿来让我做实验,我只能有 U 盘做实验,但是道理难道是不一样的吗??

说到底. 权限基本上也就是防止非物理性接触窃取!(当我拿到你的硬盘或是其他什么. 权限都是白搭.
这个是不是说如果偷走了硬盘,然后用 root 用户就可以访问任何东西了?

有了用户名密码为什么没法访问??


以上内容再修正一下:
如果 U 盘是 ext4 文件系统,那么在第一台 linux 下如果用 lzc1 在 U 盘上新建一个文件,那么这个文件的 owner 是 lzc1。如果 U 盘再插入第二个 linux 中,实际上第二个 linux 会找给文件的 owner 的 id,而不是用户名,应为在第二个 linux 上可能根本没有 lzc1 这个用户,所以第二个 linux 会查找 U 盘上文件的 owner 的 id,然后在自己的系统中找对应的用户 id,然后以这个用户作为 U 盘上该文件的 owner。

例如:如果第一个 linux 使用 lzc1 用户(id=1000)在 U 盘上写了一个文件,该文件的 owner 是 lzc1;U 盘被放到第二个 linux 上时,第二个 linux 上没有 lzc1 这个用户,但它有 id=1000 的用户,名字叫 lzc2,那么当你打开 U 盘的时候,查看到该文件的 owner 就是 lzc2,也就是说是按照 id 来的,而不是用户名。

当然如果 U 盘文件系统是 windows 的那套,原先的结论不变。

测试过,我一会给你截个图,但是结果是另外一种情况,所以才来这里。


这个我也亲自测试了,如果 U 盘是 ext4 文件系统,那么不同机器上如果有相同的 id(用户名不需要相同),那么他们就被认为是同一个人。
具体来说:
第一个 linux 上用 id=1000 的用户向 U 盘中写了一个文件,然后设定 others 是不可读不可写,
然后 U 盘查到第二个 linux 上,如果第二个 linux 上也有 id=1000 的用户(用户名不一定相同),并且使用这个用户打开的 U 盘,那么他就属于该文件的 owner,而不是该文件的 others,绕开了第一个 linux 上 others 的设定。

所以如果被偷走了 U 盘或者硬盘,那就真的完了。

这一点 windows 做的比 linux 要好多了。
当用 windows 格式化 U 盘为 ntfs 文件系统之后,在 U 盘上点击右键,找到「安全」选项卡,然后把 everyone 去掉,然后加上自己的用户名,例如我加的是 holdbelief-PCholdbelief,前面的 holdbelief-PC 是我的计算机名,holdbelief 是我的用户名。然后拔下 U 盘,插在第二台 windows 上,第二台 windows 的计算机名和用户名和第一台 windows 完全相同,但是插上之后,就显示拒绝访问,但可以被第二个 windows 格式化。即使第二台 windows 使用管理员身份登录,也是无法访问 U 盘的。

如我所做的试验,第二台 windows 即使使用完全相同的计算机名和用户名,也无法访问,因为在第二台 windows 上右键 U 盘,在·「安全」选项卡看到的组或者用户名显示为:S-1-5-21-4075069426-1230494915-3701145947-1000,这里可以看到,在 windows 下,机器名和用户名也是用数字表示的,和 linux 相同,但是 windows 的数字位数更多,可以认为是全球唯一的,而 linux 无法做到这一点。

所以 windows 可以做到即使 U 盘硬盘丢了,也可以避免数据被盗(但不能避免被格式化),只是我们平时没有设置它的权限而已。

我也看到很多文章讲,windowsXP 的权限控制其实还要强于 linux。

测试过,我一会给你截个图,但是结果是另外一种情况,所以才来这里。


这个我也亲自测试了,如果 U 盘是 ext4 文件系统,那么不同机器上如果有相同的 id(用户名不需要相同),那么他们就被认为是同一个人。
具体来说:
第一个 linux 上用 id=1000 的用户向 U 盘中写了一个文件,然后设定 others 是不可读不可写,
然后 U 盘查到第二个 linux 上,如果第二个 linux 上也有 id=1000 的用户(用户名不一定相同),并且使用这个用户打开的 U 盘,那么他就属于该文件的 owner,而不是该文件的 others,绕开了第一个 linux 上 others 的设定。

所以如果被偷走了 U 盘或者硬盘,那就真的完了。

这一点 windows 做的比 linux 要好多了。
当用 windows 格式化 U 盘为 ntfs 文件系统之后,在 U 盘上点击右键,找到「安全」选项卡,然后把 everyone 去掉,然后加上自己的用户名,例如我加的是 holdbelief-PCholdbelief,前面的 holdbelief-PC 是我的计算机名,holdbelief 是我的用户名。然后拔下 U 盘,插在第二台 windows 上,第二台 windows 的计算机名和用户名和第一台 windows 完全相同,但是插上之后,就显示拒绝访问,但可以被第二个 windows 格式化。

试试 SELinux or AppArmor?~

测试过,我一会给你截个图,但是结果是另外一种情况,所以才来这里。


这个我也亲自测试了,如果 U 盘是 ext4 文件系统,那么不同机器上如果有相同的 id(用户名不需要相同),那么他们就被认为是同一个人。
具体来说:
第一个 linux 上用 id=1000 的用户向 U 盘中写了一个文件,然后设定 others 是不可读不可写,
然后 U 盘查到第二个 linux 上,如果第二个 linux 上也有 id=1000 的用户(用户名不一定相同),并且使用这个用户打开的 U 盘,那么他就属于该文件的 owner,而不是该文件的 others,绕开了第一个 linux 上 others 的设定。

所以如果被偷走了 U 盘或者硬盘,那就真的完了。

这一点 windows 做的比 linux 要好多了。
当用 windows 格式化 U 盘为 ntfs 文件系统之后,在 U 盘上点击右键,找到「安全」选项卡,然后把 everyone 去掉,然后加上自己的用户名,例如我加的是 holdbelief-PCholdbelief,前面的 holdbelief-PC 是我的计算机名,holdbelief 是我的用户名。然后拔下 U 盘,插在第二台 windows 上,第二台 windows 的计算机名和用户名和第一台 windows 完全相同,但是插上之后,就显示拒绝访问,但可以被第二个 windows 格式化。

试试 SELinux or AppArmor?~

我会慢慢测试,需要时间。
还有为了避免完全没有意义的争论, 我想说我并没有说 linux 不好,windows 和 linux 我也不站队,只是在我测试的这一个方面 windows 胜出。其他方面也许 linux 有比 windows 强的地方,也有 windows 强于 linux 的地方。

“这说明,他取得了你的 Linux 的权限! 黑客要做的还是取得目标系统的权限,没有什么变容易了……”这句话的观点我不能同意,还记得早年通过 U 盘传播病毒的年代吗?病毒又不一定是靠互联网传播的。
你读读我前面的测试结论就明白了,如果 U 盘里面有黑客的脚本,而这个脚本的 owner 的 id=1000,然后你将 U 盘插入自己的电脑,你的电脑上也有一个 id=1000 的用户,那么你电脑上的 id=1000 的用户就是该脚本的 owner 了,那么这段脚本就可以运行了。

“实际上用户是依托于系统的,一个文件的所属关系不只是用户,还要系统。正如不会出现 2 个一模一样的 QQ 号,Linux 世界也没有两个一样的文件。”这句话经过我测试也是错误的,linux 下所属关系只是用户,没有系统,你可看看我前面几个贴的结论,我测试的很详细。

windows 是像你说的,一个文件不仅仅所属与用户,还所属与系统。

“为什么说你是错觉呢?你把第二台 Linux 用户名设置成 coffin 或者别的试试,你会发现,拿 coffin 打开 U 盘把文件传过来,owner 变成了 coffin,错觉就在于——你的两台 Linux 用户名一样。”实际上我有 3 台主机,6 台虚拟 suse,3 台虚拟 win7,三台虚拟 XP,各种情况,名字相同或者不同的我都测试了,你可以看我前面的测试过程,很详细。

你可以看看我前面的帖子,windows 确实做到了,每一台 windows 都一个全球唯一编号,所以每一个 windows 下面的用户都是不同的,即使他们的名字相同。你仔细看看我的测试就明白了,windows 下给 U 盘(或者随便什么文件)赋予权限是:「计算机名 / 用户名」 这样的,当然这是显示出来的,实质上是用·「该 windows 全球唯一编号 / 用户编号」 这样的,所以却对不会重复。
可以说,windows 做到了你所说的恒星数量级别

事实上就是这样的,如果你可以拿到全世界的硬盘,你就可以使用 root 控制全世界,我前面的测试已经证明了这一点了,甚至不需要 root 用户,只需要你的 linux 上有 一个用户 id 和硬盘上的文件的 owner 用户 id 相同 的用户就可以了。 , 当然问题是你拿不到 。你只能通过破解别人的 root 密码,然后通过互联网黑别人。

不认可这一说法。

权限: Linux > Windows >>> Mac OS X

为什么? 加入你给我一台目前登录在普通用户的电脑,让我植入恶意程序到 /usr/bin 或者 program files 目录。

Linux 我做不到,因为无 root 密码。

Windows 我可以做到,复制进去的时候 Windows 弹出安全验证窗口,黑屏两秒钟之后点击确认,就可以植入。

Mac OS X 我可以不经过任何阻拦直接植入恶意程序。

这就是三者在权限上的差别。

你有没有搞清楚我的意思??

我的意思就是说:你无法通过使用 root 操作电脑就控制全世界。 因为你不能破解 root 密码。

而你原来的帖子是说只需要使用 root 操作电脑,不需要别人的密码就控制了全世界。

你有没有搞清楚我的意思??

我的意思就是说:你无法通过使用 root 操作电脑就控制全世界。 因为你不能破解 root 密码。

而你原来的帖子是说只需要使用 root 操作电脑,不需要别人的密码就控制了全世界。

这个我们不要争论了,因为这不是技术理解的差异,只是语言上理解的差异。你的意思我完全明白了,你和我说的是同一个意思,只是语义上理解偏差而已。

那么我想问一个问题。 Windows 如何做到让全世界没有两个编号是重复的?

如果是随机生成,就算你 1 万位,也可能重复,古典概型而已。

而且 Windows 这 20 多位数字,也不过能容纳 6 千多万总不同的情况好了。 假如说全世界有 10 亿人使用 windows,每个人有 5 个用户,那么就是 50 亿,重复的概率为百分之一左右。

你有没有搞清楚我的意思??

我的意思就是说:你无法通过使用 root 操作电脑就控制全世界。 因为你不能破解 root 密码。

而你原来的帖子是说只需要使用 root 操作电脑,不需要别人的密码就控制了全世界。

这个我们不要争论了,因为这不是技术理解的差异,只是语言上理解的差异。你的意思我完全明白了,你和我说的是同一个意思,只是语义上理解偏差而已。

不过我比较新鲜的是,通过这次的实验,windows 倒是可以做到——即使你偷了别人的硬盘(如果它权限设置的好的话),你也看不了里面的东西。

你还是没弄明白。

权限为什么要防止硬盘被偷走?

那么假设你的 Windows 中毒了,重装了。

原来的文件怎么办? 全部无法访问了吗?

也就是说你可能因为一不小心设置错了权限,就不能随意重装系统了。 如果你一不小心设置错了权限,然后重装了系统,然后你的文件就全部悲剧了?

Linux 里面,你只需要把 /home 单独划分一个分区,以后可以随意重装、换发行版,每次直接挂载老的 home 分区即可。

我忘记以前在哪里看到过,windows 确实是一套 windows 有一个全球唯一标示,我们都是程序员,对全球唯一不陌生吧,我们平时些程序时也经常自己生成全球唯一的,比如数据库主键就用 32 位或者 64 位的随机数,几百亿条数据没听说过有重复的,对于「全球唯一数」我觉得没什么好讨论了,因为不是什么新鲜东西。很多语言和技术 java、C、C++、C#、数据库、hibernate 等等都有全球唯一的概念。

linux 没有全球唯一我想可能是因为,linux 是开源的,本来就可以自由拷贝分发,所以就算有全球唯一数,被拷贝之后也变的不唯一了。
所以我在想盗版的 windows 之间是否有相同的全球唯一编号。

大哥,你太死脑筋了,windows 有这样严格的权限控制,但是我们平时谁用啊,不都是用的默认级别的权限吗?
本来 易用性 和 安全性 就是矛盾的两面。