不使用 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 选项且不输入任何密码的情况下执行此操作。
【问题讨论】:
你想做什么?如果您只想将文件从“这里”复制到“那里”,请在scp
或rsync
处循环。
【参考方案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
。
在条目的选项列表中必须是选项user
或users
(取决于您是否希望该用户可以卸载文件系统)。
例子:
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开发板互传文件_挂载和卸载