以前の所有者に基づいてファイルの所有権を変更する

以前の所有者に基づいてファイルの所有権を変更する

私は比較的新しいLinuxユーザーです。コンピュータを置き換え、CentOS 6からCentOS 7から始めました。

そのため、ファイルをバックアップするために、既存のハードドライブを新しいコンピュータに接続しました。これでファイルをコピーすると(そして権限とすべてを維持しながら)、ファイル所有者は500(以前のUIDだったようです)として表示されます。

新しいユーザー名に変更する方法はありますか?他の所有者(501など)を表示するファイルを除外したいと思います。

編集する:

例:

ls -l
total 3
-rw-rw-r--.  1 500 500        210 Jan 10  2012 about.xml
drwxr-xr-x.  2 500 500       4096 May 15  2013 apache
drwxrwxr-x.  2 500 500       4096 Dec  9  2012 etc

これでchown -R xyz:xyz .、次のように作成できます。

ls -l
total 3
-rw-rw-r--.  1 xyz xyz        210 Jan 10  2012 about.xml
drwxr-xr-x.  2 xyz xyz       4096 May 15  2013 apache
drwxrwxr-x.  2 xyz xyz       4096 Dec  9  2012 etc 

しかし、ユーザー500をユーザー「xyz」にマップできるコマンドの種類があるかどうかを知りたいです。

ありがとうございます。

ベストアンサー1

私が正しく理解した場合は、他のユーザーが所有するファイルを変更せずに、ユーザー#500が所有するディレクトリ(またはルートディレクトリ)内のすべてのファイルの所有者を別のユーザーの所有に変更しようとしています。この状況は、他のシステムからディレクトリツリー全体をコピーしたため、そのツリー内のファイルを複数の異なるユーザーが所有していますが、現在は「自分の」ユーザーが所有するファイル更新にのみ興味があり、他のシステム更新には興味がないために発生します。します。ユーザー#501または他のユーザーが所有するファイル。

GNUのchownサポート--from=500-Rこれを行うために再帰オプションで使用できるオプションは次のとおりです。

chown -R --from=500 yourusername /path/here

GNUを使用している場合はこれが最速のオプションになり、chownCentOSではこれを行う必要があります。

またはあなたは使用することができますfindすべてのシステムで:

find /path/here -user 500 -exec chown yourusername '{}' '+'

find/path/here内部のすべてのファイルとディレクトリは、ユーザー#500が所有するすべてのファイルとディレクトリと一致して再帰的に調査されます。これらすべてのファイルに対してchown yourusername file1 file2...必要なだけ数回実行されます。コマンドが完了すると、ユーザー#500が所有するすべてのファイルはユーザー#500の所有になります。ファイル所有者を変更するyourusernameには、コマンドを実行する必要があります。root

同じコマンドを実行することで、findコマンドを実行しなくても落ち込んでいることを確認できます。

find /path/here -user 500

現在、ファイルは一覧表示されません。


重要な警告:ユーザー#500が所有するファイルがシンボリックリンクの場合、デフォルトではリンクchown自体ではなくシンボリックリンクが指すファイルの所有者が変更されます。スキャンしているファイルを信頼していない場合、これはセキュリティの脆弱性です。chown -hこの場合に使用されます。

おすすめ記事