ディレクトリ内のすべてのファイルをCHOWNするスクリプトを作成しますが、その中の特定のディレクトリはスキップされます。

ディレクトリ内のすべてのファイルをCHOWNするスクリプトを作成しますが、その中の特定のディレクトリはスキップされます。

そのため、OSを再起動した後、次の起動スクリプトを実行しました。

  • インストールドライバ
  • マウントZプール
  • ユーザーとSMBユーザーとSMB共有を追加します。

新しいOSで生き残った唯一のことは、ほとんどのファイルがbobが所有するZpoolであり、機密コンテンツのために私のdockerボリュームフォルダにあるいくつかのファイルがルートが所有していたとしましょう。

私のスクリプトではZpoolのすべてのファイルを使用していsudo chown -Rますが、rootがファイルとディレクトリを所有しているので、それをしたくないことがわかりました。ドッカーボリュームの所有権をそのまま維持したいです。

だから私が本当に欲しいのは、この特定のフォルダ内の「root」が所有するファイルを変更せずに、「bob」のユーザーが所有するファイルの所有権を以前の状態から現在の状態に変更することです。

  • chownZpoolのすべてのファイルを見て、その中の特定のフォルダを完全にスキップできますか?
  • chown同じオペレーティングシステムを新しくインストールするたびに自分のユーザー名が変更されない場合でも、すべてのファイルが必要ですか?
  • 他のオペレーティングシステムはどうですか?

ありがとう

ベストアンサー1

sudo find /zpool -path /zpool/some/dir/to/exclude -prune -o \
  -exec chown -h someuser:somegroup {} +

GNU を使用すると、chown特定の user:group が所有するファイルだけを chown することもできます。

sudo chown -Rh --from=user:group someuser:somegroup /zpool

(グループに関係なくグループが所有するファイルの場合--from=user、またはユーザーに関係なくグループが所有するファイルの場合)user--from=:groupgroup

標準に対応するものは次のとおりです。

sudo find /zpool -user user -group group \
  -exec chown -h someuser:some group {} +

おすすめ記事