Geçerli dizinin üzerindeki dizinle başlayan özyinelemeli chown


27

"Yönetici" hesabıma giriş yapamadım ve Alt+ Ctrl+ F1tüm dosyalarımın "standart" kullanıcıma sahip olduğunu gösterdi. Garip.

Bu yüzden dikkatli bir şekilde değiştim /home/adminve

sudo chown -R admin:admin *

(ve .*de).

Harika.

Sonra "standart" kullanıcı olarak giriş yapamadım ve tüm dosyaları /home/standardşimdi "admin" ait olduğu ortaya çıkıyor .

Oldukça komik. Bu neden oluyor?

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

aynı şeyi yaptı, aynı /home/adminzamanda değişti /home/standard.

Her zamankinden daha karışıkım çünkü 15.04'e yükseltmeye çalıştım ve bilgisayarımı harap etti, bu yüzden 14.04 ile işleri geri koydum, lütfen bana karşı sabırlı olun.


Belki biri diğerine sembolik bir bağlantıdır? ne ls -l /homediyor
steeldriver

Yanıtlar:


35

Bu sorun, çalıştırdığınız için kaynaklanmaktadır:

sudo chown -R admin:admin .*

.Geçerli dizini ve ..üst dizini gösterdiğini biliyoruz . Komutu ile çalıştırdığınızda, .*geçerli dizindeki (ile belirtilen .) herhangi bir gizli dosyayla , geçerli dizinin kendisiyle ( .), üst dizinle ( ..) eşleştiği anlamına gelir . Basitçe herhangi bir şey koyun .( *0 veya daha fazla karakter anlamına gelir). Sonuç olarak üst dizin tüm alt dizinleri ile birlikte chown-ed olsun admin:admin.

Şu teste bakın:

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

Geri dönmek chowniçin etkilenen dizinlere tekrar ihtiyacınız var .

Planınızın ne olduğundan tam olarak emin değilim, ama işte bazı fikirler:

  • Yinelenen chownherhangi bir dizine (gizli dosyalar dahil):

    sudo chown -R foo:foo /spam/egg/
    
  • To chownbu dizinin (değil dizin kendisi) içindeki (gizli dosyalar dahil) sadece dosyalar:

    (shopt -s dotglob && sudo chown -R foo:foo egg/*)
    
  • To chown(dizininde kendisi olmadan) sadece sigara gizli dosyalar:

    sudo chown -R foo:foo egg/*
    

Teşekkür ederim, şimdi anladım ... duh; P Hala bir hata vermek ve bana 14.04 yükleme programını çökmesini Grub bir şekilde ilişkili olmadıkça neden sahibi ilk etapta değişti bilmiyorum. İlk oluşturduğum standart kullanıcıydı ve daha sonra bunu indirdim ve yeni bir tane oluşturdum.
DavidP

@DavidP Ne aldığına dair net değilim ..
heemayl

3

Bence bu dosyalar için ". *" Parametresidir; "." ile başlayan her şeyle eşleşir. ve ".." dosyaları. "..", altındaki her şeyi içeren üst dizindir.

En iyi yol bir klasörü yedeklemek ve değiştirmek istediğiniz gerçek klasörü (/ home / admin) belirlemektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.