O usuário pode editar um arquivo usando o vim

0

Eu tenho um arquivo chamado file.txt com algum conteúdo localizado no diretório /home/myuser e altero as permissões desse arquivo para root.root e 644 .

-rw-r--r-- 1 root root 1.4K Jan 15 07:09 file.txt

Então mudei para myuser e abri com vim ( sem sudo ) e tentei editar e salvar :wq! e obtive uma saída como:

"file.txt" E949: File changed while writing
Press ENTER or type command to continue

Então eu pressionei enter e depois novamente :wq! e a saída foi:

WARNING: The file has been changed since reading it!!!
Do you really want to write to it (y/n)?

Eu toquei em y , o arquivo foi salvo e sai de vim .

A pergunta é por que um arquivo com ROOT privileges e read-only access para um usuário mudou por sinal?

PS: 1. myuser é um usuário sudo.

  1. As permissões de usuário depois de salvar o arquivo também mudaram para myuser.myuser .

    -rw-r--r-- 1 myuser myuser 1.4K Jun 27 18:57 file.txt

por prado 27.06.2018 / 15:30

1 resposta

2

Como o arquivo reside em um diretório gravável pelo usuário, o usuário tem permissões para excluir e recriar o arquivo. Isso é mais ou menos o que o vim faz quando você força a gravação no arquivo.

$ ls -li file
3481899 -r--r--r--  1 root  wheel  6 Jun 27 15:48 file

$ vim file

$ ls -li file
3481905 -rw-r--r--  1 myself  myself  6 Jun 27 15:49 file

Como você pode ver neste exemplo, o arquivo foi recriado e possui um novo número de inode. O usuário e o grupo foram definidos para o usuário que escreveu o arquivo e as permissões foram definidas de acordo com o usuário umask .

    
por 27.06.2018 / 15:52