6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WinSCPで"パーミッション/タイムスタンプの設定中にエラーが発生しました"について調べてみた

Last updated at Posted at 2020-04-21

発生事象

WinSCPのSFTPモードでファイルを転送すると以下のようなエラーメッセージが表示されることがある。

ファイル 'sample.txt' のアップロードは成功しましたが、パーミッション/タイムスタンプの設定中にエラーが発生しました.
問題が解決しない場合は、パーミッションの設定・タイムスタンプの設定を無効にするか、パーミッション設定時のエラーを無視するように設定してください。 ("権限がありません エラー コード: 3からのエラー メッセージ: Permission denied")"

解決策としてはこのキーワードで調べてみると分かるが、環境設定から「タイムスタンプの更新」を無効にする、というのがある。
デフォルトではパーミッションの書き換えはOFF / タイムスタンプの更新はONになっているが、何故タイムスタンプの更新でエラーが起こるのかが分からなかったのでちょっと調べてみた。

なお、対象はLinux (今回はCentOS7) で検証した。

発生原因

  • ファイルの属するグループに対する書き込み権限はある
  • ファイルのOwnerではない

例えば、以下のようなファイルがある場合、

  • hoge ユーザーでアップロードした場合は問題が起きない
  • apache グループに属している hoge 以外のユーザーでアップロードした場合は問題が起きる(ファイルは更新されるが、掲題のエラーが表示される)
  • apacheグループに属していないユーザーはそもそもアップロードに失敗する
-rw-rw---- 1 hoge apache 10  4月 21 18:25 sample.txt

ちなみに同様のエラーについては

On some systems (e.g. Linux), you need to be an owner of the file (write permissions are not enough) to modify its permissions or timestamp (you will see an error like “Permissions denied” in error details).
https://winscp.net/eng/docs/message_preserve_time_perm

ファイルオーナーでないと失敗する、とWinSCPのドキュメントに記載されている。
なお、タイムスタンプとパーミッションの変更を無効にすればよい、と公式がこの方法で回避してくれとなっている。

Whatever the reason is, you need to turn off Set permissions and Preserve timestamp options or turn on Ignore permission errors.

ファイルオーナーでないと、何故タイムスタンプの書き換え だけ でもエラーが起こるのか、原因が知りたかったのだが……(それこそ、touchすれば更新できるぐらいのはずなのに)。
さすがにファイルのパーミッション書き換えはオーナーしかできてはまずいから、こっちを書き換えてるのであればエラーの説明はつくが……

結論

完全に推測になる点に注意。 正確なところを知ってる人がいれば教えて欲しい。

SFTPでタイムスタンプなどを変更するには preserve というコマンド(?のようなもの?)でタイムスタンプだけではなく、ファイルのパーミッションもまとめて更新するのではないかと思える。
これは sftp コマンドの man を見る限り、

-p	     Preserves modification times, access times, and modes from	the
	     original files transferred.

となっているため。
で、ファイルのオーナー以外にはその権限がないためタイムスタンプ・ファイルそのもののパーミッションを変えようとしてエラーとなっているように見える。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?