V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
MasterCai
V2EX  ›  Linux

7、 Linux 环境下如何在外置 sd 卡执行程序

  •  
  •   MasterCai · 2020-12-18 17:11:48 +08:00 · 2562 次点击
    这是一个创建于 1425 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一块嵌入式开发版,系统是 fedora 28,想要扩展容量,就插了一块 sd 卡( MS-DOS 格式)。通过mount命令挂载到了桌面上的sd文件夹,可以正常存取文件,但是如果是可执行文件不能执行。试过用 chmod 更改文件权限,无效。请教一下应该如何处理(如何在 sd 卡上直接执行二进制程序)?

    第 1 条附言  ·  2020-12-19 10:05:15 +08:00

    感谢各位的回复,两种方法我都尝试了。

    1. 使用mount /dev/mmcblk0p1 /home/openailab/Desktop/sd/ -o dmask=000,fmask=111,umask=000命令添加参数的方法好像并没有作用,chmod 777 ./exec并不能改变文件权限(exec是可自行程序)。
    2. 最后使用的方法是sudo mkfs.ext4 /dev/mmcblk0p1格式化为ext4格式,就可以通过chmod命令改变权限了。
    18 条回复    2020-12-21 14:48:21 +08:00
    boris93
        1
    boris93  
       2020-12-18 17:15:23 +08:00 via Android
    > 但是如果是可执行文件不能执行。试过用 chmod 更改文件权限,无效。

    请避免使用这类模糊的描述。
    放出你的操作步骤,以及报错信息,这样我们才能帮到你。
    XiLingHost
        3
    XiLingHost  
       2020-12-18 17:17:57 +08:00   ❤️ 1
    ms-dos 格式,意思是文件系统是 fat32 ?你重新格式化为 ext4 试试吧
    ysc3839
        4
    ysc3839  
       2020-12-18 17:18:22 +08:00 via Android   ❤️ 1
    另外既然是扩展容量而不是临时使用,建议格式化为 ext4 或者 f2fs 文件系统。
    tinkerer
        5
    tinkerer  
       2020-12-18 17:21:44 +08:00
    不能执行会有错误提示吧, 给多点信息
    systemcall
        6
    systemcall  
       2020-12-18 18:01:58 +08:00
    ms-dos 格式好像是不支持权限的吧。最简单的方法是格式化成 jffs2 之类的格式,再来挂载
    lc1450
        7
    lc1450  
       2020-12-18 18:50:46 +08:00
    应该是文件系统问题, 我有个硬盘 NTFS 分区挂路由器上就遇到这样的问题,最后格式化成 ext4 就好了
    noe132
        8
    noe132  
       2020-12-18 19:06:26 +08:00   ❤️ 1
    mount 的时候设置 umask=000 这样就能运行了
    Osk
        9
    Osk  
       2020-12-18 19:49:53 +08:00 via Android
    方法一:重新格式化为 Linux 的 fs
    方法二:挂载时设置带 x 的 fmask
    Judoon
        10
    Judoon  
       2020-12-19 11:38:13 +08:00
    因为 ntfs 和 fat 之类的文件系统没有 rwx 这样的权限元信息。
    MasterCai
        11
    MasterCai  
    OP
       2020-12-19 13:49:23 +08:00
    @Judoon 原来是这样,学习了。但是 win 使用的就是 ntfs 格式,不也存在文件权限管理的情景吗,没有这种权限信息要怎么处理文件权限
    AoEiuV020
        12
    AoEiuV020  
       2020-12-19 16:15:17 +08:00
    @MasterCai 啊这不能和 win 比,完全不同的机制,win 直接看文件名后缀决定是否可执行文件的,
    事实上 linux 挂载 vfat 或者 ntfs 都可以在挂载时指定挂载成所有文件拥有 x 权限,就可以运行可执行文件了,
    MasterCai
        13
    MasterCai  
    OP
       2020-12-19 17:44:41 +08:00
    @AoEiuV020 我想问的是多用户权限管理以及这个文件的读,写,执行权限的控制,这个好像在一个文件的属性里可以设置,但是如果没有这个权限信息的话是如何做到的呢?
    在挂载的时候设置权限我也试过设置 mount 命令参数"dmask=000,fmask=111,umask=000",但是没有效果呀,最后还是格式化为 ext4 格式了。
    ysc3839
        14
    ysc3839  
       2020-12-19 19:41:54 +08:00   ❤️ 1
    @MasterCai NTFS 是基于 ACL 的权限系统,没有 POSIX 这种权限。
    @AoEiuV020 Windows 下有执行权限,是否可执行不由文件名决定。默认所有文件都允许执行。
    AoEiuV020
        15
    AoEiuV020  
       2020-12-21 10:26:59 +08:00
    @MasterCai 没有权限信息是不可能的,不管是 win 还是 linux 都有在文件头里储存文件内容以外的信息,
    挂载的话参数是类似 file_mode=777 这样的,mask 影响的是新建文件的权限,这些不常用的参数都可以用前搜索一下的,
    julyclyde
        16
    julyclyde  
       2020-12-21 11:43:23 +08:00
    FAT 没有 x mode
    ungrown
        17
    ungrown  
       2020-12-21 12:27:52 +08:00
    NTFS 和 FAT 不一样,和 EXT 也不一样
    VFAT 就是没有权限这个说法,要不然当初 winxp 时代微软也不会推荐大家告别 FAT32 拥抱 NTFS
    NTFS 的权限系统又和 Linux 的权限是两个概念
    所以说到底还是要补充“文件系统”的相关知识
    MasterCai
        18
    MasterCai  
    OP
       2020-12-21 14:48:21 +08:00
    @AoEiuV020 @julyclyde @ungrown 感谢各位的回复,看来这个问题涉及到的知识还挺多,我再学习一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1074 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:33 · PVG 03:33 · LAX 11:33 · JFK 14:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.