我是 Linux 新手,想检查一下我对挂载/文件系统工作原理的理解。我阅读了相关的手册页,但只是想确定一下。
我有一个分区,比如 /dev/sda5,目前挂载到 /home,并带有各种子目录。据我了解,这意味着 /dev/sda5 有自己的可移植文件系统,可以移动到主文件系统中的任何位置。
问题:
如果我从 /home ( # umount /home
) 卸载 /dev/sda5 然后将其挂载到 /var/www/ (为空)( ) 并用和# mount -t ext3 /dev/sda5 /var/www
替换 fstab 条目,/dev/sda5 /var/www ext3 defaults,noatime,nodev 1 2
# mount -a
问1)/home 下的所有内容现在都可以通过 /var/www/ 访问了吗(
i.e. /home/username -> /var/www/username
)?问2)/home 文件系统的所有权限在这个新位置是否都保持完整?
还有什么我应该担心的吗?只是想确保我不会擦除/损坏任何东西。从 Windows 开始,文件系统架构需要习惯(尽管我喜欢它的灵活性!)。
答案1
Q1) are all of the contents of /home now accessible under /var/www/ (i.e. /home/username -> /var/www/username)?
是的,目录现在将是 /var/www/username,而不是 /home/username
Q2) Are all of the permissions from the /home filesystem kept intact in this new location?
只要它重新安装在同一个系统上,文件所有权就会相同,权限也会相同,即使在不同的系统上也是如此。所有权取决于/etc/passwd
并将/etc/groups
数字 UID 转换为人类可读的值,并且如果bob
在系统 x 上是 uid 1000,但在系统 y 上是 uid 1050,则bob
在新系统上将不拥有文件的所有权。
除非您在执行此操作后重新创建 /home 中的用户目录,否则它将搞乱用户的登录方式,因为他们的主目录将不存在。他们的登录脚本都不会被执行,等等。
将分区迁移到/var/www/
您想要执行的操作;
mkdir /home2/
cp -R /home/* /home2/
umount /home/
mv /home2/* /home/
rm -rf /home2/ # be VERY careful with this command
mount -t ext3 /dev/sda5 /var/www/
然后添加类似以下内容:
/dev/sda5 /var/www ext3 defaults 0 2
到/etc/fstab
答案2
具体问题:
1.是的,他们应该假设该人具有进入该目录所需的目录权限。(有关目录权限的更多信息,请参阅这个答案我的)。2
. 是的,应该是完整的,因为所有权是存储在该特定文件系统上的 uid/gid 号码。
单棵树与森林:
就 Windows 而言,主要区别在于一棵大树与一片森林。在 Windows 中,每个驱动器的根(字母)都是自己的树结构。由于可以有多个驱动器,因此最终会得到一个“森林”(多棵树)。在 Unix 中 / 是一棵树的根,每台机器上只有一棵树。
需要记住的其他一些事情(可能是随机的):
- 在 Unix 中,有“一切皆文件”的哲学。因此,设备、目录和套接字都以文件形式表示。
- 表示文件的名称(例如“foo”)实际上是指向该文件的链接。您可以将多个名称(链接)映射到该文件。这些名称分为硬链接和符号链接。硬链接只能指向同一文件系统上的文件,而符号链接可以指向其他文件系统上的文件。
- 实际上,您可以在非空目录上挂载文件系统(尽管现在可能会对此发出警告)。这样最终会“隐藏”(而不是覆盖)您挂载的文件,但它们不会被覆盖。这些被称为“覆盖挂载”。
- 这只会让您有点困惑 :-) 您实际上可以创建一个本身就是文件系统的文件,然后使用回送设备将其作为新文件系统挂载到其他地方。这有点像使用 Windows 中的守护程序工具挂载 ISO 映像。
最后,顺便说一句,听起来你正在付出很大的努力从 Windows 背景学习 *nix,我认为这是一件值得尊敬的事情(反之亦然)。
答案3
您可以进行此类移动,但之后/home
会变成空,这会破坏很多东西。例如,主目录/etc/passwd
将会丢失。