Abito ricorsivo che inizia con la directory sopra la directory corrente


27

Non sono riuscito ad accedere al mio account "admin" e Alt+ Ctrl+ ha F1mostrato che tutti i miei file erano di proprietà del mio utente "standard". Dispari.

Quindi ho cambiato con cura /home/admine ho fatto un

sudo chown -R admin:admin *

(e .*anche).

Grande.

Quindi non ho potuto accedere come utente "standard" e risulta che tutti i file in /home/standardora erano di proprietà di "admin".

Piuttosto divertente. Perché sta succedendo?

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

ha fatto la stessa cosa, ha cambiato /home/admincosì come /home/standard.

Sono più confuso del solito perché ho provato ad aggiornare a 15.04 e questo ha praticamente rovinato il mio computer, quindi sto rimettendo le cose con 14.04, per favore sii paziente con me.


Forse l'uno è un collegamento simbolico all'altro? cosa ls -l /homedice
steeldriver,

Risposte:


35

Questo problema è causato perché hai eseguito:

sudo chown -R admin:admin .*

Sappiamo che .indica la directory corrente e ..indica la directory padre. Quando si esegue il comando con .*, significa semplicemente che corrisponde a qualsiasi file nascosto nella directory corrente (indicando con .), la directory corrente stessa ( .), la directory padre ( ..). Inserisci semplicemente qualcosa dopo .( *significa 0 o più caratteri). Di conseguenza la directory padre insieme a tutto questo bambino directory ottenere chown-ed a admin:admin.

Guarda questo test:

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

Per tornare indietro è necessario di chownnuovo le directory interessate.

Non sono sicuro di quale fosse il tuo piano, ma ecco alcune idee:

  • A chownqualsiasi directory ricorsivamente (compresi i file nascosti):

    sudo chown -R foo:foo /spam/egg/
    
  • Per chownsolo i file (inclusi i file nascosti) all'interno quella directory (non la directory stessa):

    (shopt -s dotglob && sudo chown -R foo:foo egg/*)
    
  • Per chownsolo i file non nascosti (senza la directory stessa):

    sudo chown -R foo:foo egg/*
    

Grazie, ho capito ora ... duh; P Ancora non so perché il proprietario sia cambiato in primo luogo a meno che non fosse in qualche modo correlato a Grub che mi ha dato un errore e mi ha bloccato il programma di installazione 14.04 su di me. Il mio utente standard è stato il primo che ho creato e successivamente l'ho declassato e ne ho creato uno nuovo.
DavidP

@DavidP Non sono chiaro a cosa stai arrivando ..
heemayl

3

Penso che sia il parametro ". *" Per i file; che corrisponde a tutto a partire da ".", incluso "." e i file "..". ".." è la directory principale, che include tutto ciò che contiene.

Il modo migliore è eseguire il backup di una cartella e specificare la cartella effettiva che si desidera modificare (/ home / admin).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.