Filesystems

在系統範圍內更改使用者和組 ID(包括文件系統屬性)?

  • January 28, 2015

這個問題可能與Linux有關:在掛載“外部”分區時模擬/屏蔽使用者所有權? - 堆棧記憶體溢出

我通常使用 Ubuntu(目前是 11.04)作為我的桌面作業系統;假設在那裡,我是**myselfuid=1000 的使用者,是myself**gid=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,它是users**gid=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)?

非常感謝您的任何答案,

乾杯!

如果我正確理解您的問題,您可以使用find-gid條件:

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

或者,如果您更喜歡find’s -exec

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

或者,查看chown的聯機幫助頁,它有一個--from您可能會覺得有用的選項:

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

有關詳細資訊,請參閱相應的聯機幫助頁。

引用自:https://unix.stackexchange.com/questions/23681