Como as outras respostas afirmaram: Sim, o arquivo pode ser editado / modificado. E,
Correndo o risco de dividir os cabelos, permita-me salientar que a pergunta diz
… he has [write permission] on a file under [the directory].
e para fazer o comentário semi-óbvio de que,
para editar um arquivo no significado tradicional da palavra,
o usuário também deve ter a permissão read para o arquivo,
a fim de obter seu conteúdo atual. Sem permissão de leitura,
o usuário pode sobrescrever dados existentes e / ou adicionar dados (anexados) no final,
mas ele não pode fazer edições úteis como corrigir erros de digitação ou inserir texto.
E eu digo "modificado" para enfatizar que estamos falando de vários cenários,
para incluir os que eu mencionei acima (substituir ou anexar), bem como
- copiando os dados do arquivo (por exemplo, para um arquivo em outro diretório),
manipulá-lo de alguma forma e, em seguida, copiá-lo de volta (sobrescrevendo o arquivo) ou
- usando um editor de texto tradicional , como
vi
,
(ou até mesmo um editor hexadecimal , se aplicável),
e vi
, em particular, não tem problemas com a edição de um arquivo nesta situação.
Eu não testei muitos outros editores.
Espero que a maioria deles (por exemplo, emacs
, pico
,…) seja boa também.
Mas,
sed -i sed_command(s) filename
não funcionará, porque sed -i
funciona por
- criando um arquivo temporário no mesmo diretório,
- copiando o texto do arquivo original para o novo arquivo (temporário),
executando o
sed_command(s)
especificado no processo,
- excluindo o arquivo original e, em seguida,
- renomeando o arquivo temporário para o nome original
(e
chmod
ing para corresponder ao modo original do arquivo original).
e essas operações falham quando o diretório está protegido contra gravação.
(Eu acredito / suspeito que alguns outros editores podem se comportar da mesma maneira,
mas não posso citar nenhum exemplo.)
Portanto, sed -i
requer acesso de gravação ao diretório.
E, claro, também requer permissão de leitura para o arquivo.
Mas o final surpresa de dupla torção é:
não requer acesso de gravação ao arquivo .
Afinal, você não precisa de acesso de gravação a um arquivo para excluí-lo;
basta escrever o acesso ao diretório.