Usuário não sudo solicitado com a mensagem "rm: remova arquivo vazio regular protegido contra gravação" em vez de permissão negada

Usuário não sudo solicitado com a mensagem "rm: remova arquivo vazio regular protegido contra gravação" em vez de permissão negada

Adicionei um disco extra a um servidor Linux.

Adicionei a seguinte linha ao fstab:

UUID=e277f402-bbac-4830-bc1d-5a849ffe7f9c /disk1          ext4    defaults 0 0

Em seguida, criei um ponto de montagem /disk1 e montei-o

 sudo mkdir /disk1
 sudo mount /disk1

Criei então um arquivo vazio touch1.txt como usuário "hari" e suas permissões eram as seguintes

sudo touch test1.txt

-rw-rw-r-- 1 hari hari     0 Sep 12 18:23 test1.txt

Agora, quando eu faço login como outro usuário e excluo o arquivo test1.txt, ele realmente me pergunta e depois me nega, em vez de dizer "Permissão negada". Por que? e como posso fazer com que ele se comporte como "normal"

hari2@UBUNTU01:/disk1$ rm test2.txt
rm: remove write-protected regular empty file ‘test2.txt’? y
rm: cannot remove ‘test2.txt’: Operation not permitted

Responder1

As permissões Unix são um pouco estranhas quando se trata da operação de remoção.

Para começar, excluir um arquivo envolve realmente remover o link para o arquivo de um diretório. Como a maioria dos sistemas de arquivos Unix permite links físicos, é possível que o arquivo seja vinculado a mais de um diretório, portanto, existe mais de um link. E quando você remove um link, o arquivo não é excluído, a menos que não existam outros links para ele.

Por esse motivo, a chamada de sistema real usada para "remover" um arquivo é chamada unlink. No entanto, o utilitário de comando shell que realiza a desvinculação é chamado rm, que é um mnemônico para "remover".

Como a operação de desvinculação modifica odiretório(removendo a entrada do diretório) e não o arquivo, a permissão necessária para a operação é a permissão de gravaçãono diretório. As permissões no próprio arquivo são irrelevantes.

No entanto, acontece que é um erro comum tentar excluir um arquivo que na verdade não pertence a você de um diretório no qual você tem permissão de gravação. (Mais precisamente, a situação não é comum, mas nos casos em que existe, é comum tentar excluir o arquivo erroneamente.)

Para ajudar a proteger os administradores de sistemas de atirar nos próprios dedos, o rmutilitário primeiro verifica se a pessoa que o invoca tem permissão de gravação noarquivo, mesmo que essa permissão não seja necessária para desvincular o arquivo. Por razões óbvias, ele faz essa verificação antes de tentar excluir o arquivo.

O rmutilitário faznãoverifique se é permitido desvincular o arquivo, pois "verificar antes da ação" geralmente é considerado um estilo ruim. Em vez disso, ele executa a ação desejada e relata falha se o sistema operacional retornar um erro. Nesse caso, o SO reportará EACCES porque o usuário não tem acesso de gravação no diretório.

A consequência infeliz é que, se você tentar excluir um arquivo para o qual não possui permissão de gravação, de um diretório no qual não possui permissão de gravação, rmserá inutilmente perguntado se deseja prosseguir e, em seguida, relatará a falha.

informação relacionada