私は比較的新しい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を使用している場合はこれが最速のオプションになり、chown
CentOSではこれを行う必要があります。
またはあなたは使用することができます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
この場合に使用されます。
答え2
このコマンドの問題の1つchown
(しかし実際にはchown()
システムコールによって異なります)は、セキュリティ対策として権限からsetuidビットとsetgidビットを削除することです。
ACLも扱いません。
この問題を解決する1つの方法は、rsync
ディレクトリ自体で使用することです。修正するモードとオプション--usermap
:
$ ls -ln
total 6732
-rwsr-xr-x 1 1002 1000 6888896 Nov 3 21:50 a
drwxr-xr-x+ 2 1002 1000 4096 Nov 3 21:46 x
$ getfacl -n x
# file: x
# owner: 1002
# group: 1000
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:1002:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
$ sudo rsync -rAau --usermap=1002:1000 . .
$ ls -ln
total 6732
-rwsr-xr-x 1 1000 1000 6888896 Nov 3 21:50 a
drwxr-xr-x+ 2 1000 1000 4096 Nov 3 21:46 x
$ getfacl -n x
# file: x
# owner: 1000
# group: 1000
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:1000:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
ファイル所有者とACLエントリの1002の両方が1000に変更されます。
また、シンボリックリンクも正しく処理します。