我的 fstab 条目:
none /home/jreinhart/ramdisk ramfs defaults,user 0 0
Run Code Online (Sandbox Code Playgroud)
挂载前的目录:
drwxrwxr-x 2 jreinhart jreinhart 4096 Oct 17 11:31 ramdisk
Run Code Online (Sandbox Code Playgroud)
之后的目录mount ramdisk:
drwxr-xr-x 2 root jreinhart 4096 Oct 17 11:31 ramdisk
Run Code Online (Sandbox Code Playgroud)
所以,你可以看到问题。挂载后,所有者更改为 root,组权限将变为,r-x因此我无法使用此 ramdisk。是什么赋予了?
我正在尝试这样做而不必su。
我正在试验我正在编写的程序的安装选项。我正在运行 Linux Mageia 2。
我添加了以下行 /etc/fstab
/dev/sr0 /mem auto user,noauto, 0 0
Run Code Online (Sandbox Code Playgroud)
我删除了所有其他关于/dev/sr0哪个是我的 DVD 驱动器设备的条目。
然后,作为普通用户,我可以成功
$ mount /dev/sr0
Run Code Online (Sandbox Code Playgroud)
但随后我收到一条错误消息(“只有 root 可以...”)
$ umount /dev/sr0
Run Code Online (Sandbox Code Playgroud)
当然,设备不忙:我在mount和umount之间什么都不做。
解决后补充:如果你只对解决那个问题感兴趣,你可以跳过剩下的问题,直接进入接受的答案。剩下的问题是关于我寻找解决方案或更好地记录问题的工作。但是,在问题的最后有一个事后分析部分,用我自己的评论补充了答案。
文件的所有权:
$ ls -ld /mem /dev/sr0
brw-rw----+ 1 root cdrom 11, 0 mai 14 01:01 /dev/sr0
drwxr-xr-x 12 root root 4096 janv. 21 22:34 /mem/
Run Code Online (Sandbox Code Playgroud)
我是“cdrom”组的成员
使用循环设备挂载文件系统映像时,我遇到了同样的问题。
但是,当我用选项“用户”替换“用户”时,一切正常,这似乎表明系统在记住谁安装了文件系统时感到困惑。
Rahul Patil 的第一个回复并没有带来进一步的见解,因为如果我对卸载程序的理解是正确的,它本质上与我使用的相同。然而,它让我进一步思考这个过程(因此一个赞成票)并获得更多细节。Hauke Laging 的评论更支持这一点。据我了解,总而言之, umount 命令采用其参数(设备或安装点)并尝试识别适用的条目/etc/mtab,然后检查它/etc/fstab是否可以执行请求。
根据该对支架(8)用户手册,安装用户的名称[应]写入mtab中,使他可以再次卸载文件系统。 …
当我安装我的 SSD 时,我只是安装了discard它,并没有出汗。然而,今天我正在阅读有关使用它的利弊的信息,fstrim并决定运行该程序以了解实际需要多长时间(仍然使用 安装我的分区discard)。该命令在我的根分区和主分区上都花费了几分钟。对于我的主分区,我使用-v并得到了这个:
$ sudo fstrim -v /home
/home: 137494052864 bytes were trimmed
Run Code Online (Sandbox Code Playgroud)
这比分区上的可用空间量还多!
$ df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 206G 78G 118G 40% /home
Run Code Online (Sandbox Code Playgroud)
随后的运行在不到一秒的时间内完成,例如:
$ sudo fstrim -v /home
/home: 0 bytes were trimmed
Run Code Online (Sandbox Code Playgroud)
当然,如果我一直用 挂载分区discard,fstrim不应该像这样修剪大量数据吗?该discard选项肯定已启用,以下是相关fstab行:
UUID=xxxxxxxx... / ext4 noatime,discard,errors=remount-ro 0 1
UUID=xxxxxxxx... /home ext4 noatime,discard,errors=remount-ro 0 2
Run Code Online (Sandbox Code Playgroud)
和mount输出行:
/dev/disk/by-uuid/xxxxxxxx... on / type …Run Code Online (Sandbox Code Playgroud) 按照本指南安装 Arch Linux 时,会指示读者执行以下命令:
genfstab -U -p /mnt >> /mnt/etc/fstab
Run Code Online (Sandbox Code Playgroud)
据说该-U选项使用了 UUID 的标签,但是该-p选项有什么作用呢?我用谷歌搜索过它,只能在 fstab 本身上找到一个页面,而不是它的生成器。Arch 没有关于这个主题的联机帮助页……如果有人知道文档在哪里genfstab,他们可以提供一个链接吗?如果没有,有人可以告诉我选项是什么或选项有什么作用(主要是-p开关)?
我在装有 OS X 10.10 的 Mac 上的 VirtualBox VM 中运行 Oracle Linux 7(基于 CentOS/RedHat 的发行版)。我有一个 Synology Diskstation 作为 iSCSI 目标。
我已成功连接到 Synology,对磁盘进行了分区并创建了一个文件系统。它被称为/dev/sdb并且分区是/dev/sdb1。现在,我想做的是创建一个挂载点,以便我可以轻松访问它:
mount /dev/sdb1 /mnt/www
Run Code Online (Sandbox Code Playgroud)
该命令有效。但显然,它在重新启动后不是持久的。不用担心...进入/etc/fstab我们去。
首先,我获得了分区的 UUID,以确保我始终使用正确的设备:
blkid /dev/sdb1
Result:
/dev/sdb1: UUID="723eb295-8fe0-409f-a75f-a26eede8904f" TYPE="ext3"
Run Code Online (Sandbox Code Playgroud)
现在,我将以下行插入到我的 /etc/fstab
UUID=723eb295-8fe0-409f-a75f-a26eede8904f /mnt/www ext3 defaults 0 0
Run Code Online (Sandbox Code Playgroud)
重新启动后,系统崩溃并进入维护模式。如果我删除我插入的行,一切都会再次工作。但是,我正在按照Oracle-Base 的逐字说明进行操作
我知道我错过了一些东西..有人能指出我正确的方向吗?
我无法安装我的 USB:
$ mount /dev/sdb1 /mnt
mount: mount /dev/sdb1 on /mnt failed: File exists
Run Code Online (Sandbox Code Playgroud)
此错误的根源是什么,如何安装 USB?
分区/dev/sdb1不在/etc/fstab
我有一个 mount 命令,它使用-t cifs将远程文件夹(例如\\remote_ip_address\folder)挂载到本地文件夹(例如/srv/mount_destination)。
所以整个命令看起来像这样:
mount -t cifs -o ro,username=UN,password=PWD '\\remote_ip_address\folder' /srv/mount_destination
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
mount: only root can use "--options" option
我的问题是此命令必须由 运行user,但是用户没有也不能拥有 sudo 特权,因此将命令与 sudo 一起使用是不可能的。另一个障碍是远程文件夹必须安装在 中的文件夹下/srv,因此/media也不能选择使用其他文件夹。
我尝试将以下行添加到/etc/fstab,重新启动系统,但没有任何积极影响:
//remote_ip_address/folder /srv/mount_destination cifs noauto,user 0 0
是我做错了什么还是我还遗漏了什么?
我正在使用 OpenStack Cloud 并在 RHEL 7 上使用 LVM 来管理卷。根据我的用例,我应该能够将这些卷分离并附加到不同的实例。
在更新 fstab 时,我已经使用defaults,nofail了一段时间,但我不确定我应该使用什么。我知道这些选项:
rw, nofail, noatime, discard, defaults
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使用它们。我的用例的理想配置应该是什么?
我在 fstab 中使用 sshfs 在 Ubuntu 18.04.04 LTS 中挂载文件系统:
sshfs#dave@myservergoeshere.com:/remote-dir /mnt/local-mnt fuse rw,exec,user,allow_other,noauto,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 0 0
Run Code Online (Sandbox Code Playgroud)
它安装得很好,但是如果我尝试在路径中执行任何操作,我会得到:
./some-executable: Permission denied.
Run Code Online (Sandbox Code Playgroud)
该文件具有执行权限(如果我确实通过 ssh 进入系统,则可以正常工作)。
如果我使用 fstab 但再次包含 -oexec 选项:
mount /mnt/local-mnt -oexec
Run Code Online (Sandbox Code Playgroud)
然后它起作用了。为什么 fstab 'exec' 被忽略?
在 BuildRoot 2015.08.1 /etc/fstab 中包含以下行。
/dev/root / ext2 rw,noauto 0 1
Run Code Online (Sandbox Code Playgroud)
在我加密的 Ubuntu 笔记本电脑上,/etc/fstab 包含以下行。
/dev/mapper/ubuntu--vg-root / ext4 errors=remount-ro 0 1
Run Code Online (Sandbox Code Playgroud)
问题:在 /etc/fstab 中列出 rootfs 的目的是什么?
不是答案:
内核从 root= 参数或在 initramfs 中以只读方式挂载 rootfs。所以 /etc/fstab 无助于以只读方式挂载 rootfs。
init 进程重新挂载 rootfs 读写。这是在 BuildRoot 中的 /etc/inittab 和 Ubuntu 中的 /etc/rcS.d/S06checkroot.sh 中完成的。所以 /etc/fstab 无助于重新挂载 rootfs 读写。
背景:我正在构建一个带有花哨的 initramfs 的嵌入式系统。它在网络上和本地寻找不同的 rootfs 候选者,直到找到合适的候选者。它负责检查文件系统并在调用 switch_root 之前以读写方式重新挂载它。
额外问题:不在 /etc/fstab 中列出 rootfs 会有什么影响?
如果没有就太棒了。我不想为每个 rootfs 维护不同的 /etc/fstab。但是,为什么 BuildRoot 和 Ubuntu 会保留它呢?
剧透:我试过了,它似乎有效,但我对隐藏的后果持谨慎态度。
fstab ×10
mount ×6
linux ×4
filesystems ×2
ubuntu ×2
arch-linux ×1
automounting ×1
buildroot ×1
iscsi ×1
permissions ×1
rhel ×1
sshfs ×1
trim ×1
unmounting ×1
volume ×1