cpコマンドでファイルをコピーするとき、ファイルを最初に生成するときは パーミッションもコピーされることを今日初めて知った。
ずぅっと大昔から、パーミッションはコピーされないと勘違いしていた。
実際はオプションを何も指定しなくてもファイルのパーミッションもコピーされる。
ただし、そのときにumaskの影響を受けて パーミッションが適当にマスクされる。
-pとか-aとかつけたときはumaskの影響を受けずそのままコピーされる。
$ cp A.txt A2.txt $ cp -a A.txt A3.txt $ ls -l A* total 0 -rwxrwxrwx. 1 hoge hoge 0 Jun 11 14:03 A.txt -rwxr-xr-x. 1 hoge hoge 0 Jun 11 14:04 A2.txt -rwxrwxrwx. 1 hoge hoge 0 Jun 11 14:03 A3.txt
パーミッションがデフォルトの 0022 でマスクされて削れてる
$ cp B.txt B2.txt $ ls -l B* -r--------. 1 hoge hoge 0 Jun 11 14:03 B.txt -r--------. 1 hoge hoge 0 Jun 11 14:04 B2.txt
マスクがかからないパーミッションのときはそのまま
$ chmod 777 B2.txt $ cp B.txt B2.txt $ ls -l B* -r--------. 1 hoge hoge 0 Jun 11 14:03 B.txt -rwxrwxrwx. 1 hoge hoge 0 Jun 11 14:05 B2.txt
上書きのときはパーミッションはコピー先が採用される。タイムスタンプは更新される