特定のユーザーのすべてのファイルの所有権を変更できますか?


9

ユーザーが所有するすべてのファイルを再帰的に検索し、それらをGnu / Linuxの別のユーザー/グループに変更する方法はありますか?

私はいくつかの魔法のワンライナーがあるはずだと思いますが、私のコマンドラインウィザードのスキルはそれまでではありません:)

ありがとう!

回答:


14

オプションを指定してfindコマンドを使用し-userます。何かのようなもの:

find / -user john

ユーザー「john」が所有するすべてのファイルが最終的に表示されます。

それらの所有権を変更したい場合は(実行せfindずにを実行して、必要なリストがあることを確認します)、次のようになります。

find / -user john -exec chown harry {} \;

それを行います。


1
私は通常chown harry:harry、グループメンバーシップが正しいことを確認する必要がある場合は、UIDを使用して実行します。しかし、それはここのアプリケーションに大きく依存します。
ewwhite 2012

UIDを使用しない限り、実際には機能しません。UIDは/ etc / passwdにあります
user222054

7

これは遅いですが、今日rsync--usermap選択肢がないのでこの質問に遭遇しました。

chown(v。chown(GNU coreutils)8.13)には組み込みの再帰(-R)と--fromオプションが用意されているので、あなた(と私の)の問題も

chown -R --from=john harry /


より具体的には、サーバーをOpenSuseからdebianに移行しています。apache2のユーザーとグループは、ディストリビューション間で異なります。OpenSuseでは、ユーザーwwwrun (id:30)とグループwww (id:8)、debian www-data (id: 33)では両方。を使用してファイルをコピーした後

rsync -az /path/to/files me@debian:/path/to/

使った

chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/

ターゲット(debian)マシン上。


注:rsync version 3.1.0 protocol version 31上記のように--usermapなっているので、ソースマシンで1つのコマンドを使用して3つの手順をすべて実行できたとします。

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/

特にグループを変更するオプションのために、私はこれを好みます。find -exec私のための1つのライナーは、手動で物事を行う直前に、最後の手段です。(また、私は書くの{} \;が嫌いですが、これは個人的なものです)
Tomasz Gandor 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.