$home/.dmrc 文件权限问题的一种解决方法

        最近服务器要上线了,在测试时,用Xmanager连接远程桌面的时候老是会弹出$home/.dmrc 文件权限问题,提示翻译成中午是提示用户,用户的主目录必须由用户所有,且.dmrc文件的权限必须为644.然后一贯的进行百度与google。发现好多人都遇到了类似的问题。一般的解决方法为: 
chmod 755 -R ~/  
sudo chown -R your name:your group /home/your name  
sudo chmod 644 /home/your name/.dmrc  
sudo chown your name:your group /home/your name/.dmrc  
用putty登录服务器后进行了如上的设置,发现可以正常登录了。正在欣喜之时但发现不能登录其它节点了。 
我们的主机要用来提供并行计算服务,所以需要每个用户在每个节点都有相同的用户名,在并行计算时还需要并行用户可以实现在各个计算节点之间的无密码登录。同样测试了其它的并行用户都不能正常进行登录,往往只能在一个节点登录。但非常奇怪的是其中有一个用户可以自由的在所有节点进行切换并没有出现任何问题。 
我们开始时怀疑是用户目录的权限问题。我们的并行方案是,在第一个节点发起nfs服务,其它节点作为客户端挂载第一个节点的目录。所有并行用户的目录都建立在第一个节点的目录上。普通用户的目录则建立在各自节点的home目录下。但发现有一个并行用户可以自由切换后我们排除了目录权限的问题。 
经过仔细观察我们发现,在每次chmod后其它节点上的公共目录的所有者会变成其它的用户。而有的几点上所有者成为了1002,1003这样的数字。结果发现数字代表的是用户的uid。到这里事情已经基本明了了。 
linux在记录文件所有者时内部用了uid我们每次chmod时目录文件中会记录所有者的uid而不是用户名。假定用户a在第一个节点上的uid为1001,在第二个上的uid为1002则其中一个节点用户不能正常访问自己的主目录。因为对目录没有所有权。而可以实现自由切换的用户恰巧在节点上的uid是一致的。 
这样问题就变得简单开来。只要手动的修改用户的uid即可。 
修改方法: 
usermod -u new uid your username(推荐用webmin修改) 

linux 要使劲折腾。

发表评论

电子邮件地址不会被公开。 必填项已用*标注