sda*_*aau 2 filesystems users permissions group chown
(这个问题可能与Linux的:模拟/后安装的屏蔽用户所有权“外部”分区-堆栈溢出)
我通常使用 Ubuntu(目前是 11.04)作为我的桌面操作系统;假设在那里,我是myself
uid=1000的用户,是myself
gid=1000的组的一部分;所以基本上主目录权限如下所示:
> stat ~
File: `/home/myself'
...
Access: (0755/drwxr-xr-x) Uid: ( 1000/ myself) Gid: ( 1000/ myself)
Run Code Online (Sandbox Code Playgroud)
现在,在同一台机器上,我有时需要通过 LiveUSB (Live-CD) 启动 OpenSuse(当前为 11.2)。所有这些对我来说都很好,除了 Live-CD 环境中的默认用户是linux
uid=999,属于users
gid=100的组;所以主目录权限如下所示:
> stat ~
File: `/home/linux'
...
Access: (0755/drwxr-xr-x) Uid: ( 999/ linux) Gid: ( 100/ myself)
Run Code Online (Sandbox Code Playgroud)
因此,基本上,当我在实时 OpenSUSE(其默认用户为 999:100)下安装我的 Ubuntu 驱动器(由 1000:1000 所有)时,我无法像往常一样访问它们,即:
linux@linux:~> touch /media/extdrive/xxx
touch: cannot touch `/media/extdrive/xxx': Permission denied
Run Code Online (Sandbox Code Playgroud)
所以,我想我应该尝试更改linux:users
OpenSUSE 机器上的默认 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)
Run Code Online (Sandbox Code Playgroud)
...并且只是更改了 uid,使我可以很好地访问 Ubuntu 驱动器 - 但是,现在我无法访问以前拥有的 OpenSUSE 内容linux:users
:
> sudo nano /etc/fstab
sudo: unknown uid: 999
Run Code Online (Sandbox Code Playgroud)
...所以,事实证明,直接更改 /etc/passwd 是个坏主意 :) 这里的解决方案似乎是先降到 root shell,执行usermod
命令,重新启动 - 现在我从 OpenSUSE 环境开始:
linux@linux:~> stat ~
Access: (0755/drwxr-xr-x) Uid: ( 1000/ linux) Gid: ( 100/ users)
Run Code Online (Sandbox Code Playgroud)
这让我 - 在大多数情况下 - 可以像往常一样访问 Ubuntu 文件系统/驱动器;同时还可以正常访问 OpenSUSE 中默认用户拥有的任何内容。
但是,为了安全起见,我还想更改组 ID。这样做的推荐方法是什么(如果我在上面的讨论中没有做对,推荐的方法是更改 uid )?
非常感谢您提供任何答案,
干杯!
如果我正确理解您的问题,您可以使用find
's-gid
条件:
find /media/extdrive -gid 100 | sudo xargs chown myself:myself
Run Code Online (Sandbox Code Playgroud)
或者如果你喜欢find
的-exec
:
sudo find /media/extdrive -gid 100 -exec chown myself:myself {} +
Run Code Online (Sandbox Code Playgroud)
或者,查看chown
的联机帮助页,它有一个--from
您可能会觉得有用的选项:
sudo chown -R myself:myself --from=:100
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅相应的联机帮助页。