如何在Linux上为所有拥有的文件更改USER和GROUP ID

时间:2020-01-09 10:41:17  来源:igfitidea点击:

如何在Linux操作系统上更改UID(用户ID)/GID(组ID)和所有附属文件。
如何在Linux上将UID从1005更改为2005,将GID从1005更改为2005。
如何对所属文件和目录进行此类更改?
该过程非常简单:

  • 使用sudo命令/su命令成为超级用户或获得等效角色
  • 首先,使用usermod命令为用户分配一个新的UID。
  • 其次,使用groupmod命令为组分配一个新的GID。
  • 最后,使用chown和chgrp命令分别更改旧的UID和GID。您可以在find命令的帮助下使其自动化。
  • 使用ls命令验证文件的组所有者是否已更改

在Linux上更改USER和GROUP ID

在执行此操作之前,对系统进行备份有多么重要,这已经足够强调了。
进行备份。
假设我们的示例用户名为foo

  • 旧版UID:1005
  • 取消新的UID:2005
  • 我们的示例组名称:foo
  • 旧版GID:2000
  • 取消新GID:3000

让我们看一些示例和命令来更改Linux中的用户和组ID:

Linux命令更改UID和GID

要为名为foo的用户分配新的UID,请执行:

# usermod -u 2005 foo

要将新的GID分配给名为foo的组,请执行:

# groupmod -g 3000 foo

借助ls命令,验证是否已更改给定用户的UID和GID:

# ls -l

请注意,只要您在上面的两个命令中执行,位于用户主目录中的所有文件的文件UID就会自动更改。
但是,用户主目录外部的文件需要手动更改。
要分别手动更改具有旧GID和UID的文件,请执行:

# find / -group 2000 -exec chgrp -h foo {} \;
# find / -user 1005 -exec chown -h foo {} \;

-exec命令在每个文件上执行chgrp或chmod命令。
传递给chgrp/chmod命令的-h选项会影响每个符号链接,而不是任何引用的文件。
使用以下命令进行验证:

# ls -l /home/foo/
# id -u foo
# id -g foo
# grep foo /etc/passwd
# grep foo /etc/group
# find / -user foo -ls
# find / -group sales -ls