z80oolong さんはインスタンス qiitadon.com のユーザーです。アカウントさえ持っていればフォローしたり会話したりできます。 もしお持ちでないなら こちら からサインアップできます。
z80oolong @z80oolong

# 現在の技術案件の近況

## Debian noroot 環境案件

この度、 Debian noroot 環境において OpenSSH を導入し、 SFTP サーバ経由でディレクトリの読み出しを行った場合に、 proot の link2symlink 機能で使用する内部ファイル及びシンボリックリンク .l2s.* が可視化されることにより、内部ファイルファイル及びシンボリックリンク .l2s.* が読み書き可能となる問題が発生していた。

通常のアプリケーションの場合、ディレクトリの読み出しは標準ライブラリ readdir(3) を用いて行い、この時 Debian noroot 環境下では、 proot がシステムコール getdents(2) をフックして内部ファイル及びシンボリックリンク .l2s.* を不可視化していた。

しかし、詳細についてはソースコードを精査する必要があるものの、 OpenSSH における SFTP サーバにおいては、 readdir 関数を独自に実装してシステムコール getdents(2) を経由せずにディレクトリの読み出している為に、内部ファイル及びシンボリックリンク .l2s.* が可視化される問題が発生するものと考えられた。

この事より、 OpenSSH の SFTP サーバを実装しているコードである sftp-server.c のうち、ディレクトリの読み出しを行っている関数について、内部ファイル及びシンボリックリンク .l2s.* を不可視化する修正を行うことにより、上記の問題を回避することが可能となった。

これに伴い、以下の Gist に投稿した、 [Debian noroot 環境において OpenSSH を動作させるための差分ファイル][1]を更新した。

[1]:gist.github.com/z80oolong/20d3