ibus中文输入法无效到openSUSE挂载ntfs到fstab

事情起因

工作原因,经常需要在windows和linux之间切换,贫穷原因,只有一个笔记本,因此给自己装了openSUSE+Windows 7双系统,先装的Windows 7,然后装的openSUSE,二者共用一块ntfs格式的磁盘作为数据盘,重启之后,Windows 7启动运行正常,openSUSE的中文输入法有问题,总是无法切换。
经过漫长的分析和尝试,排除了输入法设置问题,安装不完整问题,最终在一次偶然尝试ibus-resta先装的Windows 7,然后装的openSUSE,二者共用一块ntfs格式的磁盘作为数据盘,重启之后,Windows 7启动运行正常,openSUSE的中文输入法有问题,总是无法切换。
经过漫长的分析和尝试,排除了输入法设置问题,安装不完整问题,最终在一次偶然尝试ibus-restart时,发现使用xxx安装的ibus,自身居然没有权限,后来检查权限才发现,整个磁盘所属为user,属主为users,包括xxx的home文件夹在内!而且使用root用户修改文件夹权限,提示成功,检查时发现权限居然没有发生变化。

解决流程

ntfs数据盘挂载,是在openSUSE安装时使用其默认挂载方式挂载的,于是想到检查/etc/fstab,具体设置如下:

UUID=0200584300583FB9                           /home                ntfs-3g    user,gid=users,fmask=133,dmask=022,locale=zh_CN.UTF-8         0 0

果然,该用户属主为user,属组为users。

尝试1

将上面的属组属主均修改为root,然后利用root用户权限修改用户文件夹权限,从而使xxx用户的输入法ibus可以正常使用。

UUID=0200584300583FB9                           /home                ntfs-3g    root,gid=root,fmask=133,dmask=022,locale=zh_CN.UTF-8         0 0

修改完毕,重启设置文件夹权限,发现依然是提示成功,而实际权限未修改成功,于是怀疑是fmask和dmask的设置有问题,导致无法正确赋予用户权限,考虑第二次修改。

尝试2

将fmask和dmask均修改为000,期望权限设置正常,然而依然失败。

UUID=0200584300583FB9                           /home                ntfs-3g    root,gid=root,fmask=000,dmask=000,locale=zh_CN.UTF-8         0 0

不过两次的尝试,发现挂载时文件属主和属组等的设置的确是能够正常设置的,那么,如果将磁盘挂载时的属主设置为xxx,是不是就能正常工作了?于是继续进行第三次尝试。
注:fmask和dmask配合使用,决定新创建文件和新创建目录的权限,比如fmask=133,决定了默认文件权限是644,即rw–w–w-,具体权限相关请百度

尝试3

将属主设置为xxx,属组设置为users,为了防止之前操作的影响,用户是删掉重新创建的。

userdel -r xxx
useradd xxx -d /home/xxx

设置成功后在执行id xxx或者在/etc/passwd中,均能看到该用户的uid,将上面的属主和属组进行相应的修改即可。

binresist@linux-4o87:/home> id binresist 
uid=1000(binresist) gid=100(users) 组=100(users)

修改后如下,重启,安装ibus(为减少不必要的麻烦,建议先将原来安装的ibus卸掉),果然可以正常运行,权限ok。
UUID=0200584300583FB9 /home ntfs-3g uid=1000,gid=100,fmask=133,dmask=022,locale=zh_CN.UTF-8 0 0

进一步了解/etc/fstab

修改了半天的/etc/fstab,才发现自己对其了解甚少,于是百度简单了解了下,这里做一个简单的记录。

  • /etc/fstab在系统开机时会被读取,然后按照该配置文件中的设置,进行相应的挂载。
  • /目录要在靠前的位置挂载,因为其他目录均处于/目录下。
  • fstab总计有六列,每列的具体意义如下:
    • 第一列 磁盘设备的UUID或者Label,可以使用ls -l /dev/disk/by-uuid/ls -l /dev/disk/by-label/blkid等命令进行查看。
    • 第二列 设备挂载点,即挂载磁盘到某个目录下,该目录即为该磁盘的topdir。
    • 第三列 磁盘文件系统格式,ext2,ext3,ntfs,vfat,btrfs等。
    • 第四列 文件系统挂载选项,包括以下几点:
      • rw/ro 读写方式挂载还是只读方式挂载。
      • suid/nosuid 是否允许suid的存在,例如普通用户提升权限。
      • dev/nodev 是否解析文件系统上的块特殊设备。
      • exec/noexec 限制文件系统内是否能够进行”执行”操作
      • auto/noauto 决定在启动时或者mount -a时,此文件系统是否被自动挂载。
      • user/nouser 是否允许用户使用mount命令挂载。
      • async/sync 是否以同步方式运行,即控制修改是否立刻体现到磁盘上,默认是async,即先放到内存缓冲区内,合适的时机写入。
      • nofail设备不存在时不报错。
    • 第五列 是否被dump备份命令作用,有0(不做dump),1(每天dump),2(不定期dump)三种选择。
    • 第六列 是否检验扇区,开机检测,使用fsck,有0(不做检验),1(最早检验,一般/会设置),2(1级别检验后检验)三种选择。

参考自man fstablinux之fstab文件详解,以及Linux命令-自动挂载文件/etc/fstab功能详解转

简单总结

不清楚问题发生原因时,日志很重要,man手册很重要,百度也很重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值