Linux或树莓派3——挂载U盘、移动硬盘并设置rwx权限
话说最近在树莓派上搭建了一个owncloud,因为树莓派的存储空间有限,就插了个16G的U盘,然后设置成开机自动挂载。这里稍微注意一下的是U盘的格式最好不要NTFS,因为一般情况下NTFS格式的文件系统linux只具有读的权限。就这样奇怪的事情发生了,U盘挂载之后无法对U盘内的文件更改权限,连超级用户也不行。调了一段时间之后才看到如下文章,转载至此,方便今后查阅。个人建议将外接U盘格式化成ext3,ext4,一了百了。
原文地址:让linux挂载的移动硬盘具有执行权限。
本文试图通过探求达到让linux系统挂载的移动硬盘具有可执行权限之目的的途径来梳理有关linux系统设备挂载、用户和群组、以及文档权限方面的基础知识。
一、提出问题
当插入一个windows分区格式的移动硬盘或者U盘时,linux系统自动挂载该移动硬盘到/media目录下,通过ls -al查看其权限,显示为:drwx------,证明我们可以进入到该盘符目录,但当进一步查看该盘符下的某可执行文件的权限时,发现其为-rw-------,即可以对该文件进行读写操作,但不能执行该文件,通过chmod更改权限也无济于事,此时如何获得执行权限?(再比如在移动硬盘上有一源代码,通过编译产生了目标程序,但是当通过./来执行时,却告知没有权限,同时sudo chmod +x也不起任何作用,在实际工作中遇到这样的情况时,一般可以通过将源码拷贝到linux系统磁盘中进行编译或者将编译好的目标程序拷贝到linux系统的磁盘中再使用chmod更改权限来解决,但有时候这样来回拷贝费时费力,如果能直接让linux系统挂载的移动硬盘具有执行权限就方便多了)
二、linux设备挂载
这一问题涉及到硬盘挂载,首先需要了解linux系统中与磁盘挂载相关的两个系统文件,即/etc/fstab和/etc/mtab,前者是系统分区信息以及系统启动时磁盘的挂载参数,该文件是一个静态文件(系统启动后不再改变,如人为改变,需要重启系统);后者是当前系统中已经挂载的磁盘列表,该文件是一个动态文件,即随系统mount和umount文件系统而随时发生改变,例如当插入U盘时,系统在mtab文件中写入该磁盘的相关信息,当拔下U盘时,系统随之删除mtab文件中有关该磁盘的信息。
fstab文件内容的格式如下:
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
……
proc /proc proc nodev,noexec,nosuid 0 0
……
mtab文件内容的格式如下:
……
proc /proc proc rw,noexec,nosuid,nodev 0 0
……
可见fstab和mtab文件中的格式是一样的,都是按照“设备名称—挂载点—分区类型—挂载选项—dump选项—pass选项”的格式组织列表。
1、设备名称是指系统中设备的名称,比如/dev/sda1或/etc/sdb1或/etc/sdc1等,这些设备名称可以通过sudo fdisk -l命令来查看。(上文fstab和mtab文件格式示例中的proc设备是一个虚拟设备,并不在磁盘中真实存在,而仅仅存在于内存中,存储有关进程和系统的信息)
2、挂载点实际上就是为挂载磁盘创建的文件夹,比如./,./usr,和./swap这样的系统默认挂载点,当然我们可以自己使用mkdir创建一个文件夹作为挂载点。
3、分区类型在linux下面有ext2,ext3,ext4,jfs,jfs2,reiserfs,reiser4,swap等,在windows下面有FAT和NTFS等。
4、常用的挂载选项包括:
(1)auto和noauto: auto允许系统自动挂载或使用mount -a就能挂载,fstab默认就是这个选项 ;noauto使系统开机不自动挂载
或使用mount -a时不挂载;
(2)rw和ro:rw表示以读写权限挂载该设备,ro表示以只读权限挂载该设备;
(3)suid和nosuid:suid表示允许对该设备进行uid和gid的设置操作,nosuid就是不允许设置uid和gid;
(4)dev和nodev:dev表示同时挂载文件系统上的特殊设备,nodev表示不挂载这些特殊设备;
(5)exc和noexc:exec表示允许执行该文件系统下的二进制文件,noexc当然表示不允许执行二进制文件;
(6)user、nouser、users和owner:user允许指定的普通用户挂载该设备,nouser表示禁止普通用户挂载该设备(仅root可以挂载该设备),users表示允许所有普通用户挂载该设备,owner表示仅设备所有者可以挂载。user和users选项同时隐含noexec,nosuid,nodev选项;
(7)sync和asnyc:sync表示对该设备的I/O操作同步进行,不进行缓冲处理,而async表示不同步,进行缓冲处理;
(8)defaults:
该选项是rw, suid, dev, exec, auto, nouser, and async这些选项的组合。
此外,linux系统针对不同的文件系统还可以设定其他特别选项,例如,对Windows下的NTFS文件系统,可以设置utf8(表示采用UTF-8转换文件名称)、uid=****(挂载设备的指定用户id,可以通过id命令或者查看/etc/passwd文件方式获得)、gid=****(挂载设备的指定用户群组id)和umask=***(挂载设备的权限屏蔽,八进制数值)等,对Windows下的FAT(包括msdos,umsdos,vfat等)文件系统,可以设置uid=****,gid=****,umask=***,dmask=***(挂载设备时应用于目录的权限屏蔽,八进制数值)和fmask=***(挂载设备时应用于普通文件的权限屏蔽,八进制数值)。更多挂载选项可以参见man
mount。
5、dump选项用来设置是否让备份程序dump备份文件系统,0为不备份,1为备份,如果上次用dump备份,将显示备份至今的天数。
6、pass选项,告诉fsck程序在开机时以什么顺序检查文件系统,为0就表示不检查,(./)分区只能是1,其它的分区只能是2,当数字相同就同时检查。
三、linux用户和群组以及权限
了解了上文中所讲的设备挂载,基本已经知道如何在linux下面挂载windows分区格式的移动硬盘了,关键就是设置挂载选项从而获得相应权限。在linux系统中权限设置与用户和群组概念直接相关,比如在上文中使用ls -al命令时,获得的有关权限的信息(10个字符,如drwx------)可以分成四个部分,即目录/文件标识(第1个字符,d表示目录,-表示文件,其他还可以为l,b和c)、所有者权限(第2-4个字符)、所有者所在的用户群组权限(第5-7个字符)以及其他用户权限(最后3个字符)。权限在linux系统安全性方面具有重要作用,在此不述。权限的表示有两种方式,即字符式和数字式:字符式用如上文中的r、w和x三个字符来分别表示读、写和执行权限,-表示不具有任何权限;而数字式的权限表示方法用4、2、1三个数字分别表示读、写和执行权限,0表示不具有任何权限,用数字式表示文档所有者、群组和其他用户的权限时同一个组的权限需要累加,例如某文档的权限是-
rwx rw- ---,则用数字式表示为760。
至此,我们可以回过头去解决问题了,当挂载Windows分区格式的文件系统时,我们可以通过uid=****,gid=****和umask=***/dmask=***/fmask=***来设置权限,uid和gid的设置并不难,直接设置为自己的uid和gid就可以;关于权限mask的设置采用数字式的,同样第一个数字表示所有者的权限mask,第二个数字表示群组的权限mask,第三个数字表示其他用户的权限mask,如果umask=000,就表示不屏蔽任何用户的任何权限,即所有用户具有读、写和执行权限,再例如fmask=033,就表示文档所有者具有读、写和执行权限,而群组和其他用户只具有读取的权限,而屏蔽了权限3(1和2之和)。
四、解决问题
综上,可以在/etc/fstab中添加像下面这样的挂载配置,并重启系统让系统挂载硬盘,从而获得执行权限。
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/sdb1 /media/sdb1 ntfs utf8,uid=1000,gid=1000, umask=0000 0 0
出处:https://blog.csdn.net/u013780605/article/details/60464851
===================================================================================================
Linux+树莓派3开发总结——给树莓派挂载移动硬盘或U盘
首先使用
sudo fdisk -l
命令查看一下U盘是否有被识别到,及识别的U盘是在哪个位置
外接U盘或移动硬盘时,默认不会自动挂载,所以需要用mount 命令挂载。通常我们在/mnt 或/media 目录下新建一个目录作为挂载点。比如:
- sudo mkdir /mnt/1GB_USB_flash
- sudo mount -o uid=pi,gid=pi /dev/sda1 /mnt/1GB_USB_flash
- //用完之后卸载
- sudo umount /mnt/1GB_USB_flash
sda1 是取决于你的实际情况,a表示第一个硬盘,1表示第一个分区。
挂载exFAT格式的硬盘
FAT 格式U盘mount
本身就能支持,但如果你的U盘或移动硬盘使用的是exFAT
格式,mount会说不支持。没关系,安装
exfat-fuse软件之后
mount就支持了。
sudo apt-get install exfat-fuse
/dev/sda1 /mnt/usbdisk vfat rw,defaults 0 0
挂载NTFS格式的硬盘(读写方式挂载)
默认挂载NTFS格式的硬盘只有只读权限,需要借助其它工具实现。
- #安装所需软件包
- sudo apt-get install fuse-utils ntfs-3g
- 或者
- sudo apt-get install ntfs-3g -y
- #加载内核模块
- modprobe fuse
- #编辑fstab让移动硬盘开机自动挂载
- sudo nano /etc/fstab
- #在最后一行添加如下内容
- /dev/sda1 /mnt/myusbdrive ntfs-3g defaults,noexec,umask=0000 0 0
- #保存重启,即可生效
挂载FAT32格式的硬盘
- #创建挂载点
- sudo mkdir /mnt/myusbdrive
- #编辑fstab让移动硬盘开机自动挂载
- sudo nano /etc/fstab
- #在最后一行添加如下内容
- /dev/sda1 /mnt/myusbdrive auto defaults,noexec,umask=0000 0 0
- #保存重启,即可生效
说明:
sda1是取决于你的实际情况,a表示第一个硬盘,1表示第一个分区。
umask=0000 0 0
前面四个0就是对所有人,可读可写可执行,
后面两个0,第一个代表dump,0是不备份
第二个代表fsck检查的顺序,0表示不检查
卸载:sudo umount /mnt/myusbdrive
查看挂载情况可使用以下命令。
出处:https://blog.csdn.net/xqf1528399071/article/details/52191530/
Linux或树莓派3——挂载U盘、移动硬盘并设置rwx权限的更多相关文章
- Linux CentOS 6.7 挂载U盘
1. 首先查看U盘是否成功安装fdisk -l 2. 在/mnt下创建U盘目录mkdir /mnt/usb 3. 挂载U盘mount -t vfat /dev/sdb1 /mnt/usb 4. 卸载U ...
- Centos8自动挂载U盘移动硬盘解决办法
Centos默认是不能识别NTFS文件系统的U盘.移动硬盘的.查阅了很多资料讲到的都是需要安装ntfs-3g安装包. 安装完后每次插入移动存储介质时,都需要手动去挂载. 作为一个做技术的,如果不能解决 ...
- [分享] IMX6嵌入式开发板linux QT挂载U盘及TF卡
本文转自迅为开发板:http://www.topeetboard.com 开发平台:iMX6开发板 linux QT 系统下挂载 u 盘如下图所示,qt 启动之后,在超级终端中使用命令“mknod / ...
- linux下怎么挂载U盘
一般来说linux系统会自动挂载u盘,如果是图形界面,你一插上u盘会自动弹出来文件夹. 如果是命令行界面 使用命令 fdisk -l (root下执行) 显示如下 一般u盘都是fat32格式 ...
- 挂载U盘和移动硬盘
1, 挂载U盘和USB接口的移动硬盘一样对linux系统而言U盘也是当作SCSI设备对待的.使用方法和移动硬盘完全一样.插入U盘之前[root at pldyrouter root]# fdisk - ...
- Linux系统下面挂载u盘
1.先插好u盘到Linux服务器,然后查看u盘挂载到哪个目录下面. [root@localhost ~]# /sbin/fdisk -l 2.挂载到u目录下面 [root@localhost ~]# ...
- linux挂载U盘(转载)
一.Linux挂载U盘:1.插入u盘到计算机,如果目前只插入了一个u盘而且你的硬盘不是scsi的硬盘接口的话,那它的硬件名称为:sda1.2.在mnt目录下先建立一个usb的目录(如:[root@lo ...
- 阿里云Linux挂载数据盘
Linux 系统挂载数据盘 适用系统:Linux(Redhat , CentOS,Debian,Ubuntu) * Linux的云服务器数据盘未做分区和格式化,可以根据以下步骤进行分区以及格式化 ...
- Linux 格式化和挂载数据盘
如果您已经为 ECS 实例配了数据盘,您需要先格式化数据盘并挂载文件系统后才能正常使用数据盘. 注意: 磁盘分区和格式化是高风险行为,请慎重操作.本文档描述如何处理一个新买的数据盘,如果您的数据盘上有 ...
随机推荐
- 二、求水仙花数,打印出100-999之间所有的"水仙花数"
所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身. 例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方 public c ...
- DevExpress WinForms使用教程:新的CheckEdit样式
[DevExpress WinForms v18.2下载] 在最开始CheckEdit控件有16种样式, 使用CheckStyle属性,开发人员可以选择其中一种样式.随着时间推移,与其他Windows ...
- tf之变量与作用域
生成变量 tensorflow生成变量有两种方式,Variable 和 get_variable Variable(initial_value=None, trainable=True, collec ...
- 2.Python爬虫入门二之爬虫基础了解
1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...
- mysql主从复制-读写分离
mysql主从复制+读写分离 环境:mysql主:193.168.1.1mysql从:193.168.1.2amoeba代理:193.168.1.3########################## ...
- python 爬虫数据准换时间格式
timeStamp = 1381419600 dateArray = datetime.datetime.utcfromtimestamp(timeStamp) otherStyleTime = da ...
- python-—计算器
python-练习—计算器 一.要求传入字符串,计算结果string='1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/ ...
- mysqli扩展库的预处理
预处理的特点:1.效率高,执行速度快 2.安全性高,可以防止sql注入 $mysqli 中的函数 $stmt=$mysqli->prepare($sql); 预备一条s ...
- JAVA中的Set
Set中存放的是没有重复的数据,下说记录一下使用中的小细节. 1.HashSet 区分大小写: Set<String> set1 = new HashSet<String>() ...
- PAT 乙级 1056. 组合数的和(15)
给定N个非0的个位数字,用其中任意2个数字都可以组合成1个2位的数字.要求所有可能组合出来的2位数字的和.例如给定2.5.8,则可以组合出:25.28.52.58.82.85,它们的和为330. 输入 ...