GNU/Linux >> Znalost Linux >  >> Linux

MV přepíše soubor pouze pro čtení bez výzvy?

Manuál GNU Coreutils pro mv říká:

Pokud cílový soubor existuje, ale je normálně nezapisovatelný, standardní
vstup je terminál a volba -f nebo –force není dána, mv
se uživatele zeptá, zda má soubor nahradit. (Můžete vlastnit soubor
nebo mít oprávnění k zápisu do jeho adresáře.) Pokud odpověď
není kladná, soubor je přeskočen.

Verze mv Používám (GNU coreutils 8.21 na Ubuntu 14.04.3 LTS) vykazuje neočekávané chování:

$ 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

Na základě výše citovaného úryvku manuálu bych očekával mv 1 2 příkaz k zobrazení výzvy uživateli před přepsáním souboru 2 .

Je v mé verzi mv chyba , nebo chyba v mém chápání? Pokud to druhé, tak co dělá manuál znamená?

Přijatá odpověď:

Ukázalo se, že server používal souborový systém typu „cifs“ (pravděpodobně Common Internet File System, neboli CIFS). To bylo zjištěno spuštěním příkazu df -T .

CIFS zjevně vykazuje nekonvenční chování s ohledem na oprávnění.

Spuštění stejných příkazů na počítači se souborovým systémem ext4 a poslední verzí Coreutils přineslo:

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

podle očekávání.


Linux
  1. Echo To File Descriptor přepíše soubor?

  2. Linux – nejasné důvody, proč je soubor pouze pro čtení?

  3. Nelze zapisovat do souboru na Freebsd – souborový systém pouze pro čtení?

  1. Textový editor, který aktualizuje soubor bez vyzvání?

  2. Je rename() bez fsync() bezpečné?

  3. grep bez zobrazení cesty/souboru:řádku

  1. Přesouvání souborů na Linuxu bez mv

  2. Unrar všechny soubory v adresáři bez výzvy

  3. dokončení bash souboru bez zadání ./