我正在运行 Ubuntu MATE 16.04,并且在我的主帐户上从我的内部 SD 卡读卡器复制图像基本上可以正常工作。
如果另一个家庭成员登录(我的登录仍在后台活动,未注销)然后插入 SD 卡,则他无法访问它:
那么,这是某种权利问题吗……?以主用户身份重新登录后,我还看到一些权利问题:
那么,无论它是什么,我如何才能放宽 SD 卡读卡器的访问权限,以便每个人都可以访问它(包括非管理员用户)?
也许有一些“轻松”的etc/fstab
条目?(目前还没有相关条目)
更新一:
在 2 张 SD 卡之间来回切换(来自单个用户)并查看/dev/disk/by-id
:
?> ~ $ ll /dev/disk/by-id | grep mmc
... mmc-SDU1_0x02400f04 -> ../../mmcblk0
... mmc-SDU1_0x02400f04-part1 -> ../../mmcblk0p1
?> ~ $ ll /dev/disk/by-id | grep mmc
... mmc-SE32G_0x0072e5ab -> ../../mmcblk0
... mmc-SE32G_0x0072e5ab-part1 -> ../../mmcblk0p1
?> ~ $ ll /dev/disk/by-id | grep mmc
... mmc-SDU1_0x02400f04 -> ../../mmcblk0
... mmc-SDU1_0x02400f04-part1 -> ../../mmcbl
?> ~ $ ll /dev/disk/by-id | grep mmc
... mmc-SDU1_0x02400f04 -> ../../mmcblk0
... mmc-SDU1_0x02400f04-part1 -> ../../mmcblk0p1
?> ~ $ ll /dev/disk/by-id | grep mmc
... mmc-SE32G_0x0072e5ab -> ../../mmcblk0
... mmc-SE32G_0x0072e5ab-part1 -> ../../mmcblk0p1
?> ~ $ ll /dev/disk/by-id | grep mmc
... mmc-SDU1_0x02400f04 -> ../../mmcblk0
... mmc-SDU1_0x02400f04-part1 -> ../../mmcblk0p1
../../mmcblk0[p1]
⇒/dev/mmcblk0[p1]
似乎是这里唯一不变的。也许我可以用它来得到解决方案?
我将其添加到/etc/fstab
(根据手册页,如果我理解正确的话,第一个参数也可能是设备路径):
/dev/mmcblk0p1 /media/ExtSD01/ auto auto,user,rw 0 0
这有效有些很好,现在我可以mount /dev/mmcblk0p1/
卸载到用户中立路径,不是自动的,但至少可以从命令行卸载(缺点 1)。但是我的系统挂起并重新启动 - 除非我在启动前插入 SD 卡(缺点 2)。所以我再次删除了那行……
也许在 Ubuntu Mate 中还有其他地方可以编辑挂载选项?system.d?其他地方?
答案1
要在启动时为所有用户安装 SD 卡,我们需要在文件中输入一个条目fstab
。当前发生的情况是,SD 卡正在为登录的用户安装,这只向该用户授予访问权限。通过在 fstab 中添加一个条目,SD 卡将由 root 安装,并向所有用户提供访问权限。此读/写访问权限可以稍后控制。
sudo blkid
列出系统上可用的所有分区(包括 SD 卡)。记下要UUID
在启动时挂载的分区。
现在创建一个文件夹,例如sudo mkdir /media/ExtSD01
。这是将安装 SD 卡分区的文件夹。此文件夹将归 root 所有。要授予其他用户对此文件夹的读写权限,我们需要授予适当的权限。这样chmod -R 777 /media/ExtSD01
就足够了。现在您需要编辑 fstab 文件。为此,请键入以下命令。
sudo nano /etc/fstab
转到文件底部并在那里添加以下行。
UUID='enter your UUID here' /media/ExtSD01/ auto,user,rw 0 0
重新启动系统就可以了。
答案2
如果 USB 驱动器在连接时没有自动挂载,该怎么办?在这种情况下,您可以根据需要手动挂载它们。要禁用自动挂载,请使用 dconf-editor 并转到 org/gnome/desktop/media-handling 并通过将其设置为 false 来禁用自动挂载。然后根据需要将 SD 卡手动挂载到具有权限设置的文件夹。
答案3
您可以尝试添加一个名为SD卡并写一个udev 规则适用于您的 SD 卡。
让我们从简单的部分开始并创建一个新组:
sudo groupadd sdcard
现在将用户添加到 sdcard 组:
sudo usermod -aG sdcard username
现在我们必须挖掘有关您使用的 SD 卡的更多信息。
我们需要产品名称或者产品编号和一个供应商名称或者vencor id
插入 SD 卡并输入
lsblk
在我的情况下是 /dev/sda。
我知道您的设备名称不同,但为了简单起见,我将 SD 卡称为 /dev/sda。使用以下方式搜索设备以查找所需信息
sudo lshw
这些附加命令可以帮助您找到供应商和产品:
lsusb
usb-devices
dmesg
就我而言瘦身提供了以下信息:
*-usb:0
description: Mass storage device
product: USB2.0-CRW
vendor: Generic
physical id: 1
bus info: usb@3:1
logical name: scsi0
version: 57.13
serial: 20120926571200000
capabilities: usb-2.00 scsi emulated scsi-host
configuration: driver=usb-storage maxpower=500mA speed=480Mbit/s
*-disk
description: SCSI Disk
product: SD/MMC/MS PRO
vendor: Generic-
physical id: 0.0.0
bus info: scsi@0:0.0.0
logical name: /dev/sda
version: 1.00
serial: 2012062914345300
capabilities: removable
configuration: ansiversion=4 logicalsectorsize=512 sectorsize=512
*-medium
physical id: 0
logical name: /dev/sda
正如你所看到的我的产品是USB2.0-CRW并且供应商是通用的。
您现在可以在中创建一个文件/etc/udev/rules.d/并将其命名为 ie10-SD卡.规则
# /etc/udev/rules.d/10-sdcard.rules # This file allows the group sdcard to mount sd cards # without administrative permissions SUBSYSTEM=="usb", ATTRS{product}="USB2.0-CRW", ATTRS{vendor}=="Generic", ACTION=="add", OWNER="root", GROUP="sdcard", MODE="0664"
这将添加 SD 卡的设备节点,并提供读写权限SD卡组。
如果您发现产品编号(即 1234)或供应商 ID(即 abcd)而不是产品名称和供应商名称使用ATTRS{idProduct}="1234", ATTRS{idVendor}="abcd"
。
如果您的两张 SD 卡具有相同的供应商 ID/名称和产品 ID/名称,则这一行就足够了。如果没有,请添加另一行提供另一张 SD 卡的信息。
- 重新启动系统
sdcard 组中的用户现在应该能够安装 SD 卡。
答案4
您将其添加到/etc/fstab
(根据手册页,如果我理解正确的话,第一个参数也可能是设备路径):
/dev/mmcblk0p1 /media/ExtSD01/ auto auto,user,rw 0 0
假设您的 SD 卡中有一个 Microsoft 文件系统(NTFS、FAT32 或 exFAT),我建议进行以下修改:
将挂载选项替换
auto
为noauto
,使系统无需插入 SD 卡即可正常启动。缺点:您必须手动安装驱动器,这很容易做到,它将根据中的行进行安装
/etc/fstab
,sudo mount /media/ExtSD01/
如果你愿意,你可以给它起一个别名,
alias mtsd='sudo mount /media/ExtSD01/'
添加挂载选项
umask
,为所有用户提供所需的权限
结果是以下行/etc/fstab
,
/dev/mmcblk0p1 /media/ExtSD01/ auto noauto,user,rw,umask=000 0 0
请参阅以下链接,如果您想微调挂载选项,