GNU/Linux >> Linux Esercitazione >  >> Linux

Mv sovrascrive il file di sola lettura senza chiedere conferma?

Il manuale GNU Coreutils per mv dice:

Se un file di destinazione esiste ma normalmente non è scrivibile, l'input standard
è un terminale e l'opzione -f o –force non viene fornita, mv
chiede all'utente se sostituire il file. (Potresti essere il proprietario del file
o disporre dell'autorizzazione di scrittura sulla sua directory.) Se la risposta
non è affermativa, il file viene saltato.

Tuttavia, la versione di mv Sto usando (GNU coreutils 8.21 su Ubuntu 14.04.3 LTS) mostra un comportamento inaspettato:

$ which mv
/bin/mv
$ ls -l
total 0
$ echo foo > 1; chmod -w 1; cp 1 2; ls -l | cut -d' ' -f 1-5,9
-r-x------ 1 me me 4 1
-r-x------ 1 me me 4 2
$ echo bar > 2
-bash: 2: Permission denied
$ mv 1 2
$ ls -l | cut -d' ' -f 1-5,9
-r-x------ 1 me me 4 2

Sulla base dell'estratto del manuale citato sopra, mi sarei aspettato il mv 1 2 comando per aver richiesto all'utente prima di sovrascrivere il file 2 .

C'è un bug nella mia versione di mv , o un bug nella mia comprensione? Se quest'ultimo, allora cosa fa il manuale significa?

Risposta accettata:

Si scopre che il server utilizzava un file system di tipo "cifs" (presumibilmente il Common Internet File System, noto anche come CIFS). Questo è stato scoperto eseguendo il comando df -T .

Apparentemente CIFS mostra un comportamento non convenzionale rispetto alle autorizzazioni.

L'esecuzione degli stessi comandi su una macchina con un file system ext4 e una versione recente di Coreutils ha prodotto:

$ mv 1 2
mv: replace ‘2’, overriding mode 0444 (r--r--r--)?

come previsto.


Linux
  1. Impossibile scrivere su file su Freebsd — Filesystem di sola lettura?

  2. Editor di testo che aggiorna il file senza chiedere conferma?

  3. grep senza mostrare percorso/file:riga

  4. Decomprimi tutti i file nella directory senza chiedere conferma

  5. Come eseguire un file senza estensione .sh nella shell

Come eseguire il comando Sudo senza password

Come modificare un file senza modificarne i timestamp in Linux

Copia il contenuto del file negli Appunti senza visualizzarli

Echo To File Descriptor sovrascrive il file?

Linux:oscuri motivi per cui un file è di sola lettura?

Rename() senza fsync() è sicuro?