mount挂载权限问题

转载:http://1300hong.blog.163.com/blog/static/22545921201223091112544/

最近一直都是在linux下开发,见识是长了,但是效率还是提不上来,于是想方设法结合windows与linux的优点。
 linux做服务器远比windows好,程序最终还是在linux下跑的,况且服务程序在linux与window下速度相差很大的,跑 apache+mysql+php 就可以看出明显的差距了,同一台机器上,我在windows下开个linux虚拟机跑apache+mysql+php都比直接在本机windows下跑apache+mysql+php快很多,但是如果写程序的话,还是windows比较快速。

 挂载在linux中非常常见,很自然就想到了在linux下挂载windows的共享目录实现windows与linux的有效结合。
 首先,在windows设置共享目录。假设共享目录访问路径为://192.168.10.1/project
 然后,配置虚拟机host-only上网模式后,安装smb。
 [root@centos ~] yum install smb
 安装完smb后,就可以挂载windows共享目录了
 [root@centos ~] mount //192.168.10.1/project /var/www/html/project -o username=admin,password=123456
 简单就挂载好了,把apache工程路径改成这里的/var/www/html/project,将项目移到//192.168.10.1/project,似乎是可以运行了,但是如果项目如果用到写权限的话,就抛出一大堆的permission deny了。。。
 
 经过一方折腾后,终于突然理解了Linux下的挂载命令 mount 是怎样赋予用户权限的了。

 [root@centos ~] mount //192.168.10.1/project /var/www/html/project -o rw,username=admin,password=123456
 加上rw这个参数,或fmask,dmask指定权限,dmask是目录的mask,fmask是文件的mask ,mask是权限掩码,由3个八进制的数字所组成, 当前访问权限去掉权限掩码所表示的权限之后, 即可产生建立文件时预设的权限。 第一位表示自己访问的权限,第二位表示同组访问的权限,第三位表示其他所有人访问的权限。
 但是这样仍然是不起作用的,若不指定apache用户,终归是无效的。
 [root@centos ~] id apache
 uid=48(apache) gid=48(apache) groups=48(apache)
 
 [root@centos ~] mount //192.168.10.1/project /var/www/html/project -o rw,uid=48,gid=48,username=admin,password=123456

 这样读写权限就没问题,试试哦。。。。
 
 其实这中间还是碰到一些 问题的,比如由于mount老是出现权限问题,需要umount那个目录,问题就出来了,老是出现device is busy
 想到可能是apache正在使用这个目录呢,
 [root@centos ~] service httpd stop
 [root@centos ~] fuser -v /var/www/html/project
  查看还有谁在用这个目录,如果只你一个人在用的话kill掉就好了,fuser 自带kill了
 [root@centos ~] fuser -k /var/www/html/project
 经此折腾,自觉又长见识了,
 突然想起某网友名言:人生在于折腾!
### 解决 Linux `mount` 命令权限不足问题 当遇到自动挂载 NTFS 分区时权限设置不正确的情况,可以通过调整挂载选项来解决问题。默认情况下,某些文件系统的挂载可能会将所有权分配给 root 用户和特定的用户组,这可能导致普通用户无法正常操作这些文件。 为了更改挂载行为并赋予当前用户足够的权限,可以在挂载命令中指定额外的参数: #### 使用合适的挂载选项 在挂载 NTFS 文件系统时,可以使用 `-o uid,gid,umask,dmask,fmask` 参数来自定义用户的访问控制列表(ACL)。具体来说: - `uid`: 设置文件所属者的用户ID - `gid`: 设置文件所属者所在的组ID - `umask`, `dmask`, 和 `fmask`: 控制目录和文件的读写执行权限掩码 例如,假设用户名为 `username` 并且希望给予该用户完全控制权,则可采用如下方式重新挂载分区[^1]: ```bash sudo mount -o rw,uid=$(id -u username),gid=$(id -g username),umask=022 /dev/sdb1 /mnt/ntfs_partition/ ``` 这里 `/dev/sdb1` 是要挂载的目标设备路径,而 `/mnt/ntfs_partition/` 则是要挂载到的位置;请根据实际情况替换这两个值。 如果需要永久保存此配置以便每次启动都能生效,应该编辑 `/etc/fstab` 文件加入相应的条目: ```text UUID=<your-partition-uuid> /mnt/ntfs_partition ntfs-3g defaults,rw,uid=1000,gid=1000,umask=022 0 0 ``` 其中 `<your-partition-uuid>` 可以通过运行 `blkid | grep 'TYPE="ntfs"'` 来获取目标分区的具体 UUID 编号。 另外值得注意的是,对于较新的发行版,默认可能已经安装了支持更好兼容性的驱动程序如 `ntfs-3g` ,因此建议优先尝试使用此类工具来进行更稳定的挂载处理[^3]. 最后提醒一点,在修改任何重要的系统配置之前最好先做好备份工作以防万一出现问题能够迅速恢复原状。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值