找回密码
 注册
首页 ≡≡网络技术≡≡ 服务器 Linux中修改用户UID和组GID的方法

linux Linux中修改用户UID和组GID的方法

灰儿 2016-7-22 07:24:08
我在部署nfs的时候,共享了一个文件夹。为了让远程nfs客户端挂载这个文件夹的时候都有可读写权限,我需要把服务器上的用户uid、gid设置成nfs服务端文件夹一样的权限。不过因为之前新建的用户uid、gid都是系统自动生成的,几台服务器之前某个用户的uid、gid可能都不一样,所以现在需要把这个uid、gid都设置成统一某个值。

修改用户uid和组gid的命令分别是usermod和groupmod,思路很简单。先使用usermod修改用户的uid,然后使用groupmod修改组的gid,最后使用chown和chgrp命令修改原来用户文件和目录的属主属组。

用户 foo uid 1000 我想把值改为1001 ,不知道如何改,其他都不变,直接用nano 在/etc/passwd里面修改可以吧!

当然可以的,不过推荐用系统管理命令修改,修改用户uid和组gid的命令分别是usermod和groupmod,思路很简单。先使用usermod修改用户的uid,然后使用groupmod修改组的gid,最后使用chown和chgrp命令修改原来用户文件和目录的属主属组。

例如测试用户foo和测试组foo。
foo old UID: 1000
foo new UID: 1001
foo old GID: 1000
foo new GID: 1001

命令:
1、查看1001是不是已经被用了
# grep 1001 /etc/passwd

2、修改foo用户的uid
# usermod -u 1001 foo

3、修改foo组的gid
# groupmod -g 1001 foo

3、foo用户的家目录下面的文件属主和属组会在1、2命令执行后自动修改成新的uid、gid对应的属主属组,但是其他文件目录需要手动修改。手动修改的命令也比较简单。
  1. # find / -user 1000 -exec chown 1001:1001 {} \;
  2. # find / -group 1000 -exec chgrp 1001 {} \;
复制代码
或者
  1. # find / -user 1000 -exec chown -h foo {} \;
  2. # find / -group 1000 -exec chgrp -h foo {} \;
复制代码

命令find参数说明:
-exec是执行的意思,
{}是find的搜寻结果,注意{}与后面的\;有一个空格,\;是转义分号,不让shell去解释,在 -exec 后面需要一个表示该命令终结的的符号。

这样用户和组的uid、gid就修改好了。

可以用ls/id/cat等命令看下是否修改的如我们所愿。

# ls -nd username    #查看目录和文件的归属uid和gid
# ls -l /home/username/
# id  username
# cat /etc/passwd
# cat /etc/group

您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。