我在 SS 磁盘上安装了 Ubuntu 系统,我希望用户能够访问第二个(机械)磁盘的分区作为公共存储库,并且对每个文件具有完全的读/写/删除权限。我希望每个用户都能将这样的分区(例如 /dev/sdb7)视为具有固定名称的目录(例如 /home/the_user/F)。有人建议我(是否可以将分区挂载为具有相同相对路径的用户的公共存储库?)在启动时挂载分区并将该挂载点符号链接到用户主目录中的某个位置。然而,在
关联我看到一个选项
‘-d’ '-F' ' - 目录' 允许具有适当权限的用户尝试进行硬 链接到目录。但是,请注意,这可能会失败 由于系统限制,即使对于超级用户也是如此。我害怕。请告诉我一个正确链接的示例;以及用户登录时或 root 永久使用的相应组或 bindfs 命令。谢谢!
答案1
您不需要使用硬链接,实际上我们不能创建到目录的硬链接,因为它会在文件系统层次结构中形成循环。
您必须使用-s
选项来创建符号链接(symbolic link):
假设我已安装/dev/sda7
在 上/media/some/mount/point
。要创建到此路径的链接,我必须运行:
ln -s [target] [symlink]
喜欢:
ln -s /media/some/mount/point /home/username/F
链接的权限是 777,但是符号链接与实际目录是不同的文件,它只授予对符号链接本身的访问权限,并且用户必须具有正确的权限才能使用其中的文件 /media/some/mount/point
。
答案2
关于您担心链接到已挂载的目录,听起来您可能只是偶然发现了错误的程序。根据您的帖子,建议您创建符号链接(即 symlinks)。但是该link
命令只创建硬链接。要创建符号链接,您可以改用以下ln
命令,例如:
ln -s /path/to/mount/point /home/the_user/F
关于共享访问,您可以使用 ACL(访问控制列表)进行设置,例如:
sudo setfacl -Rm g:mount-group:rwx /path/to/mount/point
sudo setfacl -Rdm g:mount-group:rwx /path/to/mount/point
为了演示这看起来是什么样子并给你一个实验的起点,这里有一个更长的例子,它绑定挂载一个目录(你可以用你想要的实际挂载替换它),设置它的所有权和权限(使用访问控制列表),然后在另一个目录内创建指向它的符号链接:
# Create a group to own the shared mount
sudo groupadd mount-group
# Create a user that belongs to this group
sudo adduser mount-user
sudo usermod -a -G mount-group mount-user
# Create a directory to mount
mkdir /tmp/mount-source
# Create the mount-point
mkdir /tmp/mount-target
# Bind-mount the directory onto the mount point
sudo mount --bind /tmp/mount-source /tmp/mount-target
# Set the group owner for the mounted volume
sudo chown :mount-group /tmp/mount-target
# Set the group permissions to match the user permissions
sudo chmod -R g=u /tmp/mount-target
# Set the setgid bit on the mounted volume
sudo chmod g=u,g+s /tmp/mount-source
# Set the ownership and permissions for the mounted volume using an ACL
sudo setfacl -Rm g:mount-group:rwx /tmp/mount-target
# Set the default ownership and permissions for files created inside the mount-point
sudo setfacl -Rdm g:mount-group:rwx /tmp/mount-target
# Login as the test user
su -l mount-user
# Link a subdirectory inside the user's home folder to the mounted volume
ln -s /tmp/mount-target ~/link-to-mount-target
# Create a new file inside the mounted volume
echo 'Hello world!' > ~/link-to-mount-target/hello.txt
# Check the permissions on the new file
getfacl ~/link-to-mount-target/hello.txt
答案3
我认为您的问题需要两个方面的答案:首先是在文件系统中安装设备,其次是链接目标位置。
在你开始之前
以下解释需要终端程序(键盘快捷键:Ctrl++ Alt)t来输入命令。
您还需要超级用户权限。通常(作为全新安装后的第一个用户)您可以通过在sudo
命令前键入来获得权限。之后(通常,如果您是全新安装后的第一个用户)您必须在命令运行前提供自己的密码。
您的硬盘(“机械”磁盘)需要已连接到您的计算机,并使用文件系统(如 ntfs 或 ext4)正确格式化。
谨防!通过更改 fstab 文件,您可以对可能导致计算机无法启动的内部问题进行操作。这不是永久性损坏,但需要技巧和时间来修复。请谨慎操作。
如果对上述任何先决条件有疑问,请在评论中询问。
在启动时挂载磁盘
在启动时安装磁盘是在/etc/fstab
文件中进行的。为此,您需要知道“机械”磁盘的 UUID,或者至少知道它在/dev
目录中的名称。
/dev/sdb5
找到磁盘的UUID 和名称(类似于):
ls -l /dev/disk/by-uuid
它将在此处列出。现在确定文件系统。它将在
sudo fdisk -l | less
接下来,确定挂载路径并创建它:
sudo mkdir -p /media/shareddrv
了解磁盘的 UUID、名称和文件系统类型后,您的配置行如下所示/etc/fstab
:
UUID=481aba75-c8a7-4b70-bdc4-fab4de7c1410 /media/shareddrv ext4 errors=remount-ro 0 2
如果您在确定 UUID 时遇到问题,则位置UUID=481aba75-c8a7-4b70-bdc4-fab4de7c1410
可能类似于。部分是您已决定的位置,部分是分区类型,并且会因您的磁盘而异。其余部分最好保持原样。/dev/sdb5
/media/shareddrv
ext4
您必须将整行添加到您的/etc/fstab
。由于有很多方法可以做到这一点,一种非常方便的方法是使用sudo nano /etc/fstab
并在文件末尾键入/粘贴该行。
现在让更改生效:最简单的方法是重新启动计算机(例如sudo init 6
或)。如果一切正常,在终端中sudo shutdown -h now
输入:后,您将看到“机械”磁盘及其挂载点。df -h
在用户目录中链接磁盘
这部分可以逐个用户半手动地完成。对于用户“alice”,运行:
TMPUNAME=alice; sudo -u $TMPUNAME ln -s /media/shareddrv /home/$TMPUNAME/F
并为每个用户重复此操作。最后你可以unset TMPUNAME
但不一定。
希望对您有用。如果您觉得这个迷你教程有用,请点赞我的答案并将其标记为有用。谢谢!如果有什么不清楚或不起作用,请多问问题!