PDA

Visualizza la versione completa : File impossibile da eliminare


emanueledg
11-11-2007, 19:39
Ciao,
su server Linux ho un file che non riesco a cancellare.
Credo che sia per via del nome del file:

.pureftpd-upload.4705868f.15.3860.c4a78f5d

L'origine del file dovrebbe essere questa: quando con SmartFTP si tenta di caricare un file sul server, SmartFTP crea un file temporaneo a cui da un nome simile che poi scompare ad upload completo.
Causa interruzione indesiderata dell'upload mi è rimasto questo file che è impossibile eliminare ed anche rinominare.
Il messaggio che si ottiene è:

550 Prohibited file name: .pureftpd-upload.4705868f.15.3860.c4a78f5d


Caso strano, è impossibile eliminare anche la cartella in cui si trova
Ho provato a rinominare la cartella o a spostare il file in altra cartella ma niente.

I permessi CHMOD sono 755, ho provato a cambiarli in 777, ma anche questo è impossibile.

Cosa posso fare?

sacarde
11-11-2007, 20:45
che ti visualizzano i comandi:


stat .............

lsattr ..............

sacarde
11-11-2007, 22:37
Esempio 12-4. Cancellare un file tramite il suo numero di inode

http://www.pluto.it/files/ildp/guide/abs/moreadv.html

emanueledg
11-11-2007, 22:38
Originariamente inviato da sacarde
che ti visualizzano i comandi:


stat .............

lsattr ..............

stat nomefile restituisce questo:



[21:31:42] stat .pureftpd-upload.4705868f.15.3860.c4a78f5d
[21:31:42] 213-STAT
[21:31:42] -rwxr-xr-x 1 1096 users 66170880 Oct 5 04:01 .pureftpd-upload.4705868f.15.3860.c4a78f5d
[21:31:42] 213 End.


Per lsattr che riga di comando devo inserire?
(Pardon, non sono un sistemista...)

sacarde
11-11-2007, 23:45
lsattr <nomefile>


forse con lo script 12-4 descritto qui funziona


http://www.pluto.it/files/ildp/guide/abs/moreadv.html

emanueledg
14-11-2007, 16:01
Originariamente inviato da sacarde
lsattr <nomefile>


forse con lo script 12-4 descritto qui funziona


http://www.pluto.it/files/ildp/guide/abs/moreadv.html

lsattr nomefile restituisce questo:



[14:57:51] lsattr .pureftpd-upload.4705868f.15.3860.c4a78f5d
[14:57:51] 500 Unknown command


da cui deduco che neanche lsattr riesce ad accedere a quel file.

:(

Circa lo script (un file bash?) del link che hai postato non saprei proprio come customizzarlo per l'occasione... Se mi dessi qualche direttiva (ovvero cosa deve modificare dello script per il caso specifico) te ne sarei grato.

sacarde
14-11-2007, 18:03
prova a fare un file di nome pippo (o cosa vuoi) con inserito questo:

1 #!/bin/bash
2 # idelete.sh: Cancellare un file per mezzo del suo numero di inode.
3
4 # Questo si rivela utile quando il nome del file inizia con un
5 #+ carattere scorretto, come ? o -.
6
7 CONTA_ARG=1 # Allo script deve essere passato come argomento
8 #+ il nome del file.
9 E_ERR_ARG=70
10 E_FILE_NON_ESISTE=71
11 E_CAMBIO_IDEA=72
12
13 if [ $# -ne "$CONTA_ARG" ]
14 then
15 echo "Utilizzo: `basename $0` nomefile"
16 exit $E_ERR_ARG
17 fi
18
19 if [ ! -e "$1" ]
20 then
21 echo "Il file \""$1"\" non esiste."
22 exit $E_FILE_NON_ESISTE
23 fi
24 inum=`ls -i | grep "$1" | awk '{print $1}'`
25 # inum = numero di inode (index node) del file
26 # ---------------------------------------------------------------
27 # Tutti i file posseggono un inode, la registrazione che contiene
28 #+ informazioni sull'indirizzo fisico del file stesso.
29 # ---------------------------------------------------------------
30
31 echo; echo -n "Sei assolutamente sicuro di voler cancellare \"$1\"(s/n)?"
32 # Anche 'rm' con l'opzione '-v' visualizza la stessa domanda.
33 read risposta
34 case "$risposta" in
35 [nN]) echo "Hai cambiato idea, vero?"
36 exit $E_CAMBIO_IDEA
37 ;;
38 *) echo "Cancello il file \"$1\".";;
39 esac
40
41 find . -inum $inum -exec rm {} \;
42 # ^^
43 # Le parentesi graffe sono il segnaposto
44 #+ per il testo prodotto da "find."
45 echo "Il file "\"$1"\" è stato cancellato!"
46
47 exit 0


poi lo rendi eseguibile
e poi dai:

pippo <nomefile>

sacarde
14-11-2007, 18:14
ovvero, senza usare tutto lo script:

com

ls -i <nomefile>

ottiemi il numero di <inode> del file

e poi con

find . -inum <inode> -exec rm {} \;

cancelli l'inode ovvero il file

sacarde
14-11-2007, 18:50
Originariamente inviato da emanueledg
lsattr nomefile restituisce questo:



[14:57:51] lsattr .pureftpd-upload.4705868f.15.3860.c4a78f5d
[14:57:51] 500 Unknown command


da cui deduco che neanche lsattr riesce ad accedere a quel file.

:(

.

lsattr e chattr sono programmi inclusi nel pacchetto e2fsprogs, strano che non ti trovi il comando


p.s.
http://openskills.info/infobox.php?ID=1183

mykol
14-11-2007, 19:22
magari dirò una banalità e capisco che ormai è quasi diventata una questione personale con quel file, ma avviare da un live CD e provare a cancellarlo da lì ?

Loading