ディストリビューション間でファイルの所有権を転送する方法は?

ディストリビューション間でファイルの所有権を転送する方法は?

現在、私は1つのパーティションにUbuntuをインストールし、2番目のパーティションにプライベートファイル(写真、文書など)をインストールしています。プライベートファイルパーティションを維持しながら、Ubuntuを含むパーティションにKDE Neonをインストールしたいと思います。

まだNeonをインストールしていませんが、起動可能なUSBを試してみました。

私が経験している問題は、あるインストールアカウントから別のインストールアカウントにファイルの所有権を移行する方法がわからないことです。同じOSのアカウント間でファイルを転送する場合は、chownを使用できますが、OS間でどのように実行するのかわかりません。

他の人が読み取り権限を持つように権限を設定してから、Neonアカウントを使用してすべてのファイルをコピーできることに気づきましたが、私が持っているファイルの数によってこの操作には数時間かかります。むしろchownや似たようなものを使いたいです。

ベストアンサー1

あるインストールアカウントから別のインストールアカウントにファイルの所有権を移行する方法がわかりません。

ファイルはユーザー名に属さず、UIDに属します。ユーザー名とUID間のマッピングは通常、ユーザーデータベースファイルで管理されます/etc/passwd。以下はサンプルスニペットです。

root:x:0:0:root:/root:/bin/bash
tom:x:1000:1000:Tom Pearce,,,:/home/tom:/bin/bash
bill:x:1001:1001:Bill Brewer,,,:/home/bill:/bin/bash
jan:x:1002:1002:Jan Stewer,,,:/home/jan:/bin/bash
peter:x:1003:1003:Peter Gurney,,,:/home/peter:/bin/bash

実行すると、ls -l各ファイルのUID / GID所有者はこのデータベースを使用してその名前に変換されます。を使用して実際の名前を確認できますls -ln

したがって、ファイルの所有権を「以前」にするにはいくつかのオプションがあります。

  1. UID / GIDマッピングの名前が両方のシステムで同じであることを確認してください。この場合、ファイルの所有権は両方のシステムの同じ名前のセットにマップされるため、chown/は必要ありません。chgrp

  2. ソースUID / GIDとターゲットUID / GIDを見つけて、影響を受ける各ファイルを1つずつ変更します。ファイルをUID / GIDペアに変更してから再度変更しないように注意する必要があるため、これは言葉のように単純ではありません。通常、各ファイルを両方のシステムで使用されていない一時的なUID範囲にchown設定し、そのセットから実際のセットに変更します。chgrp

    # Example to change file UIDs from 1000 to 1010
    find / -mount -user 1000 -exec chown 61010 {} +
    
    # Later, when you've moved all the file ownwerships out of the 1xxx range
    find / -mount -user 61010 -exec chown 1010 {} +
    

おすすめ記事