![默认使用 exec 标志挂载 USB](https://linux22.com/image/896482/%E9%BB%98%E8%AE%A4%E4%BD%BF%E7%94%A8%20exec%20%E6%A0%87%E5%BF%97%E6%8C%82%E8%BD%BD%20USB%20.png)
我有一个 ext4 文件系统,其中有一个程序我可以从中运行。但是,每次启动计算机时,我都必须使用 exec 标志重新安装驱动器才能运行该应用程序。我该如何编辑 /etc/fstab 以默认使用 exec 标志安装驱动器?
答案1
Linux 中 Microsoft 文件系统的通用权限
当安装 Microsoft 文件系统(NTFS 和 FAT)时,您可以设置所有文件和目录的权限。
Linux 文件系统的单独权限
但是使用 Linux 文件系统(你有一个ext4
文件系统),你可以设置并且应该设置文件和目录的权限单独地。
当你在目录中创建文件时,它们将继承目录的权限。因此,我建议你修改程序和 shell 脚本所在的目录,
sudo chmod ugo+x /path-to/directory-name
这次,你已经有了你的程序文件,因此修改它的权限
sudo chmod ugo+x /path-to/program-name
编辑1:您可能还想更改所有权一些目录和文件的单独操作,这在 Linux 文件系统中也是可能的并且是推荐的。
sudo chown user:group /path-to/directory-name
和
sudo chown user:group /path-to/file-name
其中,用户和组应该替换为您想要拥有该文件的实际用户 ID 和组 ID(可以跳过组 ID,或将其设置为与用户 ID 相同)。
编辑2:
exec
fstab 中带有用于 ext4 格式 USB 驱动器的挂载选项的行
它对我来说(在 Ubuntu 16.04 LTS 以及 Artful 17.10 中)可以ext4
在自动挂载以及通过以下方式挂载时运行文件系统中的可执行文件/etc/fstab
没有 mount 选项exec
。
但你的情况并非如此。所以我测试了一下,在/etc/fstab
,带有 mount 选项exec
(在 Artful 中变为 17.10),对我来说很管用。希望这能解决你的问题。
创建挂载点
sudo mkdir -p /mnt/usb-ext4
识别要挂载的 USB 驱动器中分区的 UUID
sudo blkid
使用不带引号的字符串。
编辑
/etc/fstab
sudo nano /etc/fstab
我在测试中添加了以下几行
# external drive with ext4 partition UUID=984666a5-594c-4edc-93a9-8923e6f52c80 /mnt/usb-ext4 ext4 defaults,exec,errors=remount-ro 0 2
编辑3:
user,noauto,exec
fstab 中另一行带有挂载选项
当您将上一段中的行添加到中时fstab
,系统希望插入 USB 驱动器。如果你想在没有它的情况下启动,如果你将挂载选项添加user,noauto
到选项列表在那一行fstab
。
UUID=984666a5-594c-4edc-93a9-8923e6f52c80 /mnt/usb-ext4 ext4 user,noauto,exec,errors=remount-ro 0 2
但你必须随后启动安装,例如使用
mount -L <label>
或者
mount <mountpoint>
在我的例子中
mount -L test-exec
或者
mount /mnt/usb-ext4
同一用户可以卸载它
umount /mnt/usb-ext4
测试输出
重新启动后,我运行了以下命令。
选项卡:
$ grep /mnt/usb-ext4 ext4 /etc/mtab
/dev/sdb1 /mnt/usb-ext4 ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
fstab:
$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda2 during installation
UUID=10880524-3839-4142-b7db-f65845d87825 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=E556-B809 /boot/efi vfat umask=0077 0 1
/swapfile none swap sw 0 0
# external drive with ext4 partition
UUID=984666a5-594c-4edc-93a9-8923e6f52c80 /mnt/usb-ext4 ext4 defaults,exec,errors=remount-ro 0 2
我创建了一个目录并改变了所有权:
cd /mnt/usb-ext4
sudo mkdir bin
sudo chown $USER:$USER bin
然后我创建了一个小的 shellscript 并使其可执行:
cd bin
echo 'echo Hello World'>hello
chmod ugo+x hello
检查权限和所有权的长列表:
$ ls -l
totalt 4
-rwxrwxr-x 1 tester tester 17 okt 6 07:51 hello
并且可以运行
$ ./hello
Hello World
识别系统的常规命令
lsb_发布:
tester@tester-SATELLITE-PRO-C850-19W:/mnt/usb-ext4/bin$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu Artful Aardvark (development branch)
Release: 17.10
Codename: artful
名称:
tester@tester-SATELLITE-PRO-C850-19W:/mnt/usb-ext4/bin$ uname -a
Linux tester-SATELLITE-PRO-C850-19W 4.13.0-12-generic #13-Ubuntu SMP Sat Sep 23 03:40:16 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
BLKIDD:
tester@tester-SATELLITE-PRO-C850-19W:/mnt/usb-ext4/bin$ sudo blkid
/dev/sda1: UUID="E556-B809" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="b3276a58-ea15-4cea-8c74-095b13ea7aa6"
/dev/sda2: UUID="10880524-3839-4142-b7db-f65845d87825" TYPE="ext4" PARTUUID="d399063d-1c12-4a62-86d9-0112b15a3e40"
/dev/sdb1: LABEL="test-exec" UUID="984666a5-594c-4edc-93a9-8923e6f52c80" TYPE="ext4" PARTUUID="4b07dce4-4bde-4fe9-9b2f-2442a62b0b87"
lsblk:
tester@tester-SATELLITE-PRO-C850-19W:~$ sudo lsblk -fm
[sudo] lösenord för tester:
NAME FSTYPE LABEL UUID MOUNTPOINT SIZE OWNER GROUP MODE
sda 55,9G root disk brw-rw----
├─sda1 vfat E556-B809 /boot/efi 480M root disk brw-rw----
└─sda2 ext4 10880524-3839-4142-b7db-f65845d87825 / 55,4G root disk brw-rw----
sdb 30,2G root disk brw-rw----
└─sdb1 ext4 test-exec 984666a5-594c-4edc-93a9-8923e6f52c80 /mnt/usb-ext4 30,2G root disk brw-rw----
sr0 1024M root cdrom brw-rw----
答案2
以下是我强制我的 Ubuntu 16.04.3 系统使用默认选项挂载某个东西的方法,请阅读man mount
,尤其是有关“文件系统独立挂载选项”和“fat 的挂载选项”的部分。
我做到了
w3@aardvark:~(0)$ sudo lsblk --output "NAME,UUID,PARTUUID,SIZE,STATE"
NAME UUID PARTUUID SIZE STATE
sda 465.8G running
├─sda1 362254e8-2b99-442d-8ad9-4a348bc08032 ab519d4e-b282-4ca4-87a4-c3e5b143291f 111.3G
└─sda2 191289bd-73e0-4935-8f17-700559c83570 0109ac9a-7539-4323-9f1a-b24c59066e46 354.5G
sdb 465.8G running
├─sdb1 000a3a79-01 7.5G
│ └─cryptswap1 022bb8c1-4a34-444c-a359-b0aef01e3191 7.5G running
├─sdb2 000a3a79-02 1K
├─sdb5 83a64b80-5a37-4659-b797-221b88ef41f8 000a3a79-05 165.2G
└─sdb6 12817b99-9d2b-4357-a4ca-c11eab672a20 000a3a79-06 293G
sdc 0123-4567 3.7G running
sdd 0123-4567 7.4G running
sdf 931.5G running
└─sdf1 ff359af0-d996-4949-b27e-f24ce453c48c 00051704-01 931.5G
sdi F440-F7F4 3.7G running
我选择了sdi
这个例子,YMMV
w3@aardvark:~(0)$ mount | grep /dev/sdi
/dev/sdi on /home/w3/mnt/mp3/OTHER type vfat (rw,nosuid,nodev,relatime,uid=1003,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro)
echo -e
强制解释\t
,,\n
选择你喜欢的选项
w3@aardvark:~(0)$ echo -e "# Added by $USER $(date)\nUUID=F440-F7F4 /home/w3/mnt/mp3/OTHER\tvfat rw,exec,nosuid,nodev,relatime,uid=1003,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,flush,errors=remount-ro 0 0"
# Added by w3 Fri Oct 6 00:35:20 EDT 2017
UUID=F440-F7F4 /home/w3/mnt/mp3/OTHER vfat rw,exec,nosuid,nodev,relatime,uid=1003,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,flush,errors=remount-ro 0 0
w3@aardvark:~(0)$ !! | sudo tee -a /etc/fstab
echo -e "# Added by $USER $(date)\nUUID=F440-F7F4 /home/w3/mnt/mp3/OTHER\tvfat rw,exec,nosuid,nodev,relatime,uid=1003,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,flush,errors=remount-ro 0 0" | sudo tee -a /etc/fstab
# Added by w3 Fri Oct 6 00:35:40 EDT 2017
UUID=F440-F7F4 /home/w3/mnt/mp3/OTHER vfat rw,nosuid,nodev,relatime,uid=1003,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro 0 0
这是第一次。随后,您可以/etc/fstab
使用
sudoedit /etc/fstab
要非常小心,保留上次工作的备份fstab
。如果你破坏了fstab
你的系统,它将无法工作。