默认使用 exec 标志挂载 USB

默认使用 exec 标志挂载 USB

我有一个 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:

execfstab 中带有用于 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,execfstab 中另一行带有挂载选项

当您将上一段中的行添加到中时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你的系统,它将无法工作。

相关内容