有时我拔下我的 USB 驱动器却发现文件没有写入其中。
我想确保文件被写入的唯一方法是右键单击桌面上的 USB 驱动器,然后选择“卸载”,但有时我会忘记。
确保文件立即写入 USB 驱动器的最佳方法是什么?这样我就可以在注意到 USB 驱动器上的 LED 灯停止闪烁时立即移除 USB 驱动器。
操作系统:CentOS 6
在 Debian 上存在一个常见问题,即您尝试插入一个 ntfs 格式的 USB 硬盘驱动器,然后无法以普通用户的身份写入它,因为该目录属于 root。
不久前我读到可以通过添加uid=1000,gid=1000(或无论您的 uid 和 gid 是什么)选项来解决这个问题。这确实解决了问题,但对我来说似乎有点讨厌,因为如果你有一个多用户系统,驱动器总是属于同一个用户,而不是安装它/登录的用户。
从我使用 Ubuntu 的时间开始,我记得这不是问题,您可以安装 NTFS 驱动器(使用 GNOME),并且它们可由安装它们的用户写入。因此,GNOME 似乎能够使用授予登录用户的权限来挂载驱动器。
但是现在我在 Debian jessie 上使用 KDE,我想知道我是否可以配置我的计算机以使用具有活动 X 会话的用户的权限来安装驱动器。
我喜欢用我的笔记本电脑在公共场合工作,但我也喜欢在没有密码的情况下使用 sudo。根据我现在所知道的,我会NOPASSWD在我的sudoers文件中使用该选项,但当然任何人都可以根据需要使用 sudo。
我想到的一个重要想法是存在锁定程序。 但是,我更喜欢使用闪存驱动器(并且仅将其用于 sudo),因为 (1) 它更快,(2) 比输入我的密码更容易,以及 (3) 我不关心人们访问我的内容也不做恶意事情:笔记本电脑会在其他人周围公开,而我的笔记本电脑上唯一的知识产权是一个非常基本的 Angular 项目。
此外,我和其他人可能希望防止在未运行 X 或 Wayland 环境的计算机上滥用 sudo。我目前的工作需要一个现代的网络浏览器,但如果我有机会不使用 X 而只使用多路复用器,我会这样做——我的笔记本电脑有点旧而且速度很慢。
我想做的是将密钥文件放在闪存驱动器上,当我在笔记本电脑旁时只需插入闪存驱动器,当我离开它时将其取出。
所以这里是我从这个问题衍生的三个问题:
(4. [也许是一个无关紧要的问题] 这个包可以分开还是需要是 sudo 的一个分支?)
如果相关,我的设置是带有 bspwm 的 Arch Linux,没有桌面环境。我的大部分工作是在 urxvt / vim 中进行 Web 开发并使用 Chrome 进行检查。
我正在从现有的dd工厂映像自动化 SD 卡映像。SD 卡始终通过外部 USB 读卡器连接,因此在系统中显示为 SCSI 块设备/dev/sd*。
目前我的命令的语法是:SD 卡块设备write-image DEVICE在哪里DEVICE,例如。/dev/sdd.
我已经在做一个基本的检查DEVICE来验证它的形式,/dev/sd*但这还不够:我担心用户(不习惯 Linux 的生产人员)犯错误并指定另一个看似有效的设备,例如。/dev/sda. 您可以看到迫在眉睫的灾难,特别是因为我的映像脚本需要root权限(请注意,不是编写映像本身,而是稍后修改SD卡,包括根据SD卡的实际大小调整分区大小)...
我想验证指定的设备实际上是某个 USB 大容量存储设备(或者至少是一个可移动设备),以便我可以保护系统磁盘不被意外丢弃。我怎样才能做到这一点?
我/proc在网上或网上找不到任何相关内容,我现在很茫然。
我正在尝试将特定的 USB 驱动器设置为始终以只读方式安装。如果我插入它,它被视为sdb具有单个分区,sdb1. 以下是一些相关的udevadm行(当然不是整个输出):
$ udevadm info -a -n /dev/sdb1
looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/host21/target21:0:0/21:0:0:0/block/sdb/sdb1':
KERNEL=="sdb1"
SUBSYSTEM=="block"
DRIVER==""
ATTR{ro}=="0"
ATTR{size}=="976768002"
ATTR{stat}==" 473 30586 33938 3460 5 0 40 1624 0 2268 5084"
ATTR{partition}=="1"
Run Code Online (Sandbox Code Playgroud)
好的,所以我写了以下udev规则并将其保存为/etc/udev/rules.d/10-usbdisk.rules:
SUBSYSTEM=="block",
ATTR{size}=="976768002",
MODE="0555"
Run Code Online (Sandbox Code Playgroud)
根据此,使用size应该是足够的,但我也尝试过其他的排列。在任何情况下,规则似乎都被读取了(再次,选定的输出行,您可以在这里看到整个输出:
$ udevadm test $(udevadm info -q path -n /dev/sdb1) 2>&1
[...]
read rules file: /etc/udev/rules.d/10-usbdisk.rules
[...]
MODE 0555 /etc/udev/rules.d/10-usbdisk.rules:4
Run Code Online (Sandbox Code Playgroud)
因此,它看起来像应适用的规则,它看起来就像MODE="0555"是正确的语法。但是,当我真正插入磁盘时,我可以愉快地在其上创建/删除文件。
操作系统:Debian …
我有一个 8G 的 USB 记忆棒(我使用的是 linux Mint),我试图将一个 5.4G 的文件复制到其中,但是
No space left on device
Run Code Online (Sandbox Code Playgroud)
失败前复制文件的文件大小始终为3.6G
安装棒的输出显示..
df -T
/dev/sdc1 ext2 7708584 622604 6694404 9% /media/moo/ba20d7ab-2c46-4f7a-9fb8-baa0ee71e9fe
df -h
/dev/sdc1 7.4G 608M 6.4G 9% /media/moo/ba20d7ab-2c46-4f7a-9fb8-baa0ee71e9fe
du -h --max-depth=1
88K ./.ssh
ls -h myfile
-rw-r--r-- 1 moo moo 5.4G May 26 09:35 myfile
Run Code Online (Sandbox Code Playgroud)
所以一个 5.4G 的文件,似乎不会放在 8G 的 U 盘上。我认为 ext2 没有问题,而只有 fat32 的文件大小和 USB 记忆棒有问题?改变格式会有什么不同吗?
编辑:这是来自 tunefs 的驱动器报告
sudo tune2fs -l /dev/sdd1
Filesystem volume name:
Last mounted on: /media/moo/ba20d7ab-2c46-4f7a-9fb8-baa0ee71e9fe
Filesystem UUID: ba20d7ab-2c46-4f7a-9fb8-baa0ee71e9fe …
Run Code Online (Sandbox Code Playgroud) 随着每个新版本在 Linux 中自动挂载 USB 驱动器的方式似乎发生了变化(幸运的是我使用的是 Debian,所以我每两年只损失几天时间)。我们曾经有 usbmount、udisks、udisks2、udisks-glue、pmount、自定义 udev 规则,我可能忘记了更多。(快速浏览一下,至少有一个命名的东西afuse似乎存在,但没有被很好地记录下来)。这些都不再起作用(至少对我而言)。
在 Debian 中自动挂载 USB 驱动器的“当前”方式是什么?我使用了以下udev规则,但自从从拉伸更新到破坏后,这停止了工作:
SUBSYSTEM=="usb", DRIVERS=="usb-storage", ACTION=="add", \
RUN+="mkdir /media/usb%n; mount -o gid=plugdev,umask=002,fmask=111,users /dev/%k%n /media/usb%n"
Run Code Online (Sandbox Code Playgroud)
另外:这样做的稳定解决方案是什么,即使在更新到新版本后也能可靠地工作,我可能错过了?
当系统进入挂起(又名 S3 或“挂起到 RAM”)模式时,我想为 USB 供电的驱动器保持供电。
通常,机器在暂停时会切断电源,这会导致机器被拆卸,然后在系统恢复时重新安装。这不是很好,特别是如果驱动器本身支持电源管理。
虽然我可以在单独的电源上运行它,但我更愿意避免为一些可以(至少在理论上)使用现有硬件完成的事情分配更多的布线。
我如何确定是否可以在我的系统上执行此操作,以及如何安排特定 USB 设备(即此外壳)始终以这种方式处理?
我正在运行 ubuntu 10.10。
更新
发现了这个 ubuntuforums 线程,它建议用于acpitool -w确定 USB 控制器的可用唤醒级别。
在我的系统上运行它会显示 USB 控制器的 S1:
$ acpitool -w
Device S-state Status Sysfs node
---------------------------------------
1. LID S3 *enabled
2. PBTN S4 *enabled
3. PCI0 S3 *disabled no-bus:pci0000:00
4. USB0 S1 *disabled pci:0000:00:1d.0
5. USB1 S1 *disabled pci:0000:00:1d.1
6. USB2 S1 *disabled pci:0000:00:1d.2
7. USB3 S1 *disabled pci:0000:00:1d.7
8. MODM S3 *disabled
9. PCIE S4 *disabled pci:0000:00:1e.0 …Run Code Online (Sandbox Code Playgroud) 在我的U盘根目录下,有时我运行时ls,输出正常,并列出文件。在其他时候,输出只是一行:
$ ls
.
Run Code Online (Sandbox Code Playgroud)
如果我ls -la在其中一次尝试,我会得到这个:
$ ls -la
ls: .: Invalid argument
Run Code Online (Sandbox Code Playgroud)
如果我ls多次背靠背运行,它似乎基本上是随机返回正常输出或异常输出。
ls似乎在其他目录中正常工作。ls $drivename即使在父目录中ls ..似乎也能正常工作,而在子目录中似乎也能正常工作。(虽然我不能 100% 确定那些“正常工作”的,因为行为是不确定的。)我尝试了另外两个外部 USB 驱动器并得到了相同的行为。
这里发生了什么?我使用的是 Mac OS X 10.11.3。
编辑:好主意,但我似乎没有使用别名,并/bin/ls给出相同的结果。
我有一个 32 GB 的 USB 闪存驱动器。从驱动器插入 Ubuntu 16 笔记本电脑的驱动器中删除文件时,它会创建一个名为“.Trash-1000”的文件夹
这个 .Trash-1000 文件夹包含两个文件夹,分别是“file”和“info”,其中 file 包含我已删除的文件,info 包含有关这些文件的元数据。
问题是这个 .Trash-1000 文件夹占用空间,因为它保存了已删除文件的副本。然后,当 .Trash-1000 文件夹在多次删除后开始归档时,我必须最终删除它。
有没有办法在 USB 驱动器上禁用此功能?
usb-drive ×10
linux ×5
usb ×4
automounting ×2
debian ×2
mount ×2
permissions ×2
block-device ×1
devices ×1
disk ×1
disk-usage ×1
ls ×1
osx ×1
sudo ×1
trash ×1
ubuntu ×1
udev ×1