web-dev-qa-db-ja.com

現在のディレクトリの上のディレクトリから始まる再帰chown

「管理者」アカウントにログインできず、 Alt+Ctrl+F1 すべてのファイルが私の「標準」ユーザーによって所有されていることを示しました。奇数。

慎重に/home/adminに変更して、

Sudo chown -R admin:admin *

(および.*も)。

すばらしいです。

その後、「標準」ユーザーとしてログインできず、/home/standard内のすべてのファイルが「admin」によって所有されていることがわかりました。

かなりユーモラスです。なぜこうなった?

Sudo chown -R standard:standard /home/standard/*

同じことを行い、/home/admin/home/standardを変更しました。

私は15.04にアップグレードしようとし、それが私のコンピューターをほとんど破壊したので、いつもよりも混乱しています。

17
DavidP

この問題は、次を実行したために発生します。

Sudo chown -R admin:admin .*

.は現在のディレクトリを示し、..は親ディレクトリを示します。 .*を使用してコマンドを実行すると、単に、現在のディレクトリ(.で統計)、現在のディレクトリ自体(.)、親ディレクトリ( ..)。 .*は0個以上の文字を意味します)の後に何かを置くだけです。その結果、親ディレクトリとそのすべての子ディレクトリは、chown- edからadmin:adminになります。

このテストを見てください:

test$ ls -al
drwxrwxr-x 4 foo foo 4096 Jun  3 07:15 .
drwxrwxr-x 4 foo foo 4096 Jun  2 18:06 ..
drwxrwxr-x 2 foo foo 4096 Jun  3 07:15 Egg
drwxrwxr-x 2 foo foo 4096 Jun  3 07:12 spam

$ Sudo chown -R bar:bar spam/.*

test$ ls -al
drwxrwxr-x 4 bar  bar  4096 Jun  3 07:15 .
drwxrwxr-x 4 foo  foo  4096 Jun  2 18:06 ..
drwxrwxr-x 2 bar  bar  4096 Jun  3 07:15 Egg
drwxrwxr-x 2 bar  bar  4096 Jun  3 07:12 spam

元に戻すには、chown影響を受けるディレクトリを再度必要があります。

私はあなたの計画が何だったのか本当に分かりませんが、いくつかのアイデアがあります:

  • chownディレクトリを再帰的に(非表示ファイルを含む)するには:

    Sudo chown -R foo:foo /spam/Egg/
    
  • chownそのディレクトリ内のファイル(隠しファイルを含む)のみ(ディレクトリ自体ではありません):

    (shopt -s dotglob && Sudo chown -R foo:foo Egg/*)
    
  • chown隠されていないファイルのみ(ディレクトリ自体なし):

    Sudo chown -R foo:foo Egg/*
    
25
heemayl

ファイルの「。*」パラメーターだと思います。 「。」を含む「。」で始まるすべてに一致します。 and「..」ファイル。 「..」は親ディレクトリであり、その下にあるすべてのものが含まれます。

最良の方法は、1つのフォルダーをバックアップし、変更する実際のフォルダー(/ home/admin)を指定することです。

3
Marty Fried