更改系统范围内的用户和组 ID(包括文件系统属性)?

更改系统范围内的用户和组 ID(包括文件系统属性)?

这个问题可能与Linux:在安装“外部”分区时模拟/屏蔽用户所有权? - 堆栈溢出

我通常使用 Ubuntu(当前为 11.04)作为我的桌面操作系统;假设我是用户myselfuid=1000,属于该组myselfgid=1000;所以基本上主目录权限如下所示:

> stat ~
  File: `/home/myself'
...
Access: (0755/drwxr-xr-x)  Uid: ( 1000/   myself)   Gid: (  1000/   myself)

现在,在同一台机器上,我有时需要通过 LiveUSB (Live-CD) 启动 OpenSuse(当前为 11.2)。所有这些对我来说都很好,除了 Live-CD 环境中的默认用户是linuxuid=999,属于该组usersgid=100;所以主目录权限如下所示:

> stat ~
  File: `/home/linux'
...
Access: (0755/drwxr-xr-x)  Uid: ( 999/   linux)   Gid: (  100/   myself)

 

因此,基本上,当我在实时 OpenSUSE(其默认用户为 999:100)下安装我的 Ubuntu 驱动器(由 1000:1000 拥有)时,我无法像往常一样访问它们,即:

linux@linux:~> touch /media/extdrive/xxx
touch: cannot touch `/media/extdrive/xxx': Permission denied

 

所以,我想我应该尝试更改linux:usersOpenSUSE 机器上的默认 uid/gud,所以我尝试了以下方法:

> sudo /usr/sbin/usermod -u 1000 linux
usermod: Account `linux' is currently in use.

> id linux
uid=999(linux) gid=100(users) groups=100(users),33(video)

# so if that fails.... change directly from /etc/passwd? 
> sudo nano /etc/passwd

> id linux
uid=1000(linux) gid=100(users) groups=100(users),33(video)

...只需更改 uid,就可以很好地访问 Ubuntu 驱动器 - 但是,现在我无法访问以前拥有的 OpenSUSE 内容linux:users

> sudo nano /etc/fstab
sudo: unknown uid: 999

...所以,事实证明,坏的直接更改 /etc/passwd 的想法:) 这里的解决方案似乎是先进入 root shell,执行命令usermod,重新启动 - 现在我已经从 OpenSUSE 环境中启动了:

linux@linux:~> stat ~
Access: (0755/drwxr-xr-x)  Uid: ( 1000/   linux)   Gid: (  100/   users)

这使得我在很大程度上可以像往常一样访问 Ubuntu 文件系统/驱动器;同时还可以正常访问 OpenSUSE 中默认用户拥有的任何内容。

 

不过,为了安全起见,我还想更改组ID。推荐的执行此操作的方法是什么(如果我在上面的讨论中没有正确执行,那么推荐的更改 uid 的方法是什么)?

非常感谢您的回答,
干杯!

答案1

如果我正确理解你的问题,你可以使用find-gid条件:

find /media/extdrive -gid 100 | sudo xargs chown myself:myself 

或者如果您愿意的find-exec

sudo find /media/extdrive -gid 100 -exec chown myself:myself {} +

或者,查看 的chown联机帮助页,它有一个--from您可能会觉得有用的选项:

sudo chown -R myself:myself --from=:100

有关详细信息,请参阅相应的联机帮助页。

相关内容