不使用 sudo 挂载卸载

Posted

技术标签:

【中文标题】不使用 sudo 挂载卸载【英文标题】:mount unmount without sudo 【发布时间】:2013-06-04 17:16:57 【问题描述】:

我正在尝试编写一个脚本,它将 ssh 到主机,在那里执行挂载操作,运行一些其他命令并退出。

其他命令 (cd, cp) 不需要 sudo 权限,但挂载选项需要 sudo 权限。我想写一个可以做的脚本:

ssh user@server "mount -t nfs xx.xx.xx.xx:/ /nfs -o rsize=4096,wsize=4096 ; cp pqr rst ; umount /nfs ;" 

和其他一些非 sudo 命令。在脚本运行时,如何在没有 sudo 选项且不输入任何密码的情况下执行此操作。

【问题讨论】:

你想做什么?如果您只想将文件从“这里”复制到“那里”,请在scprsync 处循环。 【参考方案1】:

桌面 Linux 发行版使用 udisk 授予非 root 用户有限的安装权限。

udisks 版本 2

udisksctl mount -b [device]

udisks 版本 1

udisks --mount [device]

当然,如果我们谈论的是服务器虚拟机,那么可能不会安装这些工具。 安装它们需要 root 访问权限(一次)

【讨论】:

如果您使用udisksctl,用户可能没有必要的权限,您需要配置polkit:github.com/coldfix/udiskie/wiki/Permissions(参见wiki.archlinux.org/index.php/Udisks#Configuration)【参考方案2】:

您必须将/nfs 条目添加到server 主机上的/etc/fstab

在条目的选项列表中必须是选项userusers(取决于您是否希望该用户可以卸载文件系统)。

例子:

xx.xx.xx.xx:/ /nfs nfs rsize=4096,wsize=4096,user 0 0

【讨论】:

但是修改/etc/fstab需要root,所以在事先不知道挂载目录或者设备id的情况下还是不行。 @matt2000:不可以,之前管理员可以修改/etc/fstab。当然,如果您没有 root 权限,则绝对不可能挂载文件系统(如果 /etc/fstab 中未明确允许),否则将导致严重的安全漏洞 管理员可以添加什么到 /etc/fstab 以允许将未指定的设备安装到未指定的位置? fstab 是否允许使用通配符?例如,桌面系统如何允许非授权用户安装 USB 驱动器等?据我所知,他们不使用 fstab。当系统的唯一用户被信任安装设备而不是做其他事情时,这根本不是安全漏洞。【参考方案3】:

您可以允许该用户在不需要 sudo 电源的情况下进行挂载。

使用 NOPASSWD 目录

关注这个Link。

或者您可能更喜欢编写期望脚本,该脚本将写入密码并在提示时输入密码。

【讨论】:

这允许用户在没有密码的情况下使用 sudo。他在问如何完全避免 sudo。

以上是关于不使用 sudo 挂载卸载的主要内容,如果未能解决你的问题,请参考以下文章

磁盘挂载与卸载

磁盘的挂载与卸载

Ubuntu16.04NFS配置与ARM开发板互传文件_挂载和卸载

Linux怎么卸载挂载文件?

android Linux Deploy 挂载虚拟硬盘后无法卸载

linux中挂载和卸载文件系统