日期:2014-05-16  浏览次数:20769 次

在不影响现有文件的前提下,修改用户uid

背景:
公司有两台红帽的服务器简称A,B
这两个服务器都只设定了一个访问用户cmcdev

下面是服务器的/etc/passwd中的相应内容
服务器A
cmcdev:x:503:503::/home/cmcdev:/bin/bash

服务器B
cmcdev:x:603:603::/home/cmcdev:/bin/bash

平时大家登陆的时候都是用Tera Term远程登陆再进行所需操作,倒也相安无事

问题:
服务器B现在mount了服务器A中的一个文件夹
由于服务器A中cmcdev的uid是503,绑定的文件夹权限变成了如下所示
drwxr-xr-x 4    503    503 4096  5月 10  2012 product

这样就无法对product中的内容进行写入修改等操作了,很是让人纠结

要求:
1 不改变product的权限
2 不影响服务器B中cmcdev用户已创建过的文件(不能修改了以后原来cmcdev用户创造的文件显示603这种乌龙)
3 将服务器B中cmcdev的uid和gid都改为503


我的尝试:
---尝试1---
直接修改服务器B的passwd,group

vim /etc/passwd
手动修改603为503
vim /etc/group
手动修改cmcdev:x:603:为cmcdev:x:503:

---尝试1结果---
当从root切换回cmcdev时如下报错
bash: /home/cmcdev/.bashrc:无许可
bash-3.2$


---尝试2---
修改服务器B的passwd,group
并分别执行pwconv和grpconv以同步
---尝试2结果---
结果同1

---尝试3---
在服务器B中执行如下操作
usermod -u 503 cmcdev
vim /etc/group
手动修改cmcdev:x:603:为cmcdev:x:503:

---尝试3结果---
修改完毕后在不退出终端的情况下切换用户正常实现
但本人是使用VirtualBox在本地做的测试
重启虚拟器后无法用cmcdev登入服务器
领导说我们就这一个登陆账号,你虚拟器是这样万一修改完大家都上不去服务器了咋整
还不允许再造新用户,于是只好再想别的办法

---尝试4---
我提议是否可以用命令修改product文件夹的权限
chown -fR cmcdev.cmcdev /var/www/data/product

领导否决

---尝试5---
我提议先删除用户cmcdev,再创建一遍
创建的同时手动指定uid为503
领导否决


各路大侠,我是实在想不到其他法子了
求大家指点!拜谢

------解决方案--------------------
比如啊,用root运行:
find / -uid 500 -printf "%i\n"
这样就找到所有的inode了,然后再怎么改,加在-exec里就行了
------解决方案--------------------
「但本人是使用VirtualBox在本地做的测试
重启虚拟器后无法用cmcdev登入服务器」
引用一楼

可能是因为安装virtualbox虚拟器的时候用GUI安装的,有时候会出现GUI的错误,不用GUI安装再试试