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,才发现自己对其了解甚少,于是百度简单了解了下,这里做一个简单的记录。

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

简单总结

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

Table of Contents