Open4

Linux で自分が書き込みできないファイルを作成する

hankei6kmhankei6km

簡単なようで意外と落とし穴があるような気もするのでメモ。

なお、自分は sudo などができないという設定。

hankei6kmhankei6km

普通に書き込み権限を外す

$ echo 123 > abc.txt
$ chmod u-w abc.txt
$ echo 456 > abc.txt
-bash: abc.txt: Permission denied

ファイルのオーナーは自分のままなので戻せる。

$ chmod u+w abc.txt
$ echo 456 > abc.txt
$ cat abc.txt 
456
hankei6kmhankei6km

オーナーを変更してもらう

# chown hankei7km:hankei7km abc.txt 
# chmod a-w abc.txt

chmod できない。

$ echo 789 > abc.txt
-bash: abc.txt: Permission denied
$ chmod u+w abc.txt
chmod: changing permissions of 'abc.txt': Operation not permitted

が、ディレクトリの権限によっては再作成できる。

$ rm abc.txt 
rm: remove write-protected regular file 'abc.txt'? y
$ echo ABC > abc.txt
$ cat abc.txt 
ABC
hankei6kmhankei6km

書き込みできないディレクトリにファイルを作成してもらう

# echo 123 > /opt/abc.txt
$ cat /opt/abc.txt 
123
$ echo 456 > /opt/abc.txt 
-bash: /opt/abc.txt: Permission denied
$ rm /opt/abc.txt 
rm: remove write-protected regular file '/opt/abc.txt'? y
rm: cannot remove '/opt/abc.txt': Permission denied

普通は最初からこのパターンじゃね?と思うけど、最近はコンテナイメージ作ったりでごちゃごちゃするからという言い訳。