是否可以允许某些特定用户(例如组成员)在 Linux 上没有超级用户权限的情况下挂载任何文件系统?
另一个问题可能是“用户可以通过哪些方式通过挂载文件系统来损害系统?”
为什么 Linux 要求用户是根用户/使用 sudo/每个挂载特别授权才能挂载某些东西?关于是否允许用户挂载某些东西的决定似乎应该基于他们对源卷/网络共享和挂载点的访问权限。非根挂载的几个用途是将文件系统映像挂载到用户拥有的方向,并将网络共享挂载到用户拥有的目录。似乎如果用户可以控制安装方程的两边,一切都应该很酷。
访问限制说明:
我觉得我应该能够挂载用户可以访问的任何内容,否则用户将拥有该用户拥有的挂载点。
例如,在我的计算机上, /dev/sda1 由用户 root 和具有权限的组磁盘拥有brw-rw----
。因此,非 root 用户不能弄乱 /dev/sda1 并且显然 mount 不应该允许他们挂载它。但是,如果用户拥有 /home/my_user/my_imagefile.img 和挂载点 /home/my_user/my_image/ 为什么他们不能在该挂载点上挂载该图像文件:
mount /home/my_user/my_imagefile.img /home/my_user/my_image/ -o loop
Run Code Online (Sandbox Code Playgroud)
正如科尔马克指出的那样,存在一个 suid 问题。因此,必须添加一些限制以防止 suid 成为问题以及潜在的其他一些问题。也许一种方法是让操作系统将所有文件视为属于进行安装的用户。但是对于简单的读/写/执行,我不明白为什么这会是一个问题。
用例:
我在实验室有一个帐户,我的家庭空间限制为 8GB。这是很小的,非常非常烦人。我想从我的个人服务器安装一个 nfs 卷,以从本质上增加我拥有的空间量。然而,因为 Linux 不允许这样的事情,我被困在 scp 文件来回保持在 8GB 限制之下。
根据以下问题:
什么是安装时的“循环设备”?
循环设备是充当基于块的设备的文件。虽然我可以从概念上理解这一点,但这与挂载任何其他文件有什么不同?例如,如果我获取 ext2 文件系统的 dd 映像然后挂载它,则不必使用循环选项 -mount -t ext2 file.dd /mnt/mount-point
成功。
我什么时候应该使用 loop 选项,使用 loop 选项进行安装和不使用它进行安装有什么区别?
我正在尝试将教程改编为易于使用的脚本 http://qt-project.org/wiki/RaspberryPi_Beginners_guide。
我试图尽可能地减少对 sudo/root 的需求(最好只在最后dd
一步)。
我的问题是:
我可以在没有 sudo/root 权限的情况下以任何方式挂载 ext4 文件系统吗?
我可以以某种方式安装它,以便以某种方式忽略 FS 上的用户/组(因此我可以在没有 sudo 的情况下运行 make install)?
文件系统当前是从文件的偏移量(即-o loop,offset=62914560
)环回挂载的。
此文件是将复制到用于启动 Raspberry Pi 的 SD 卡上的映像。
我正在试验我正在编写的程序的安装选项。我正在运行 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中,使他可以再次卸载文件系统。 …