/var/data/chroot/
リモート中央NFSサーバーのNFSマウントであるsftpdを実行するUbuntuサーバーがあり、各sftpdユーザーのchrootホームがあり、各ユーザーにはsyslog-ngを使用して正常に読み取られた/var/data/chroot/<username>/
ログデバイスがあります。/var/data/chroot/<username>/dev/log
source s_chroot_<username> { unix-stream("/var/data/chroot/<username>/dev/log" optional(yes) ); };
destination d_sftp_<username> { file("/var/log/sftp/<username>.log"); };
これで、同じユーザーデータベースとNFSを介してマウントされ、同じsyslog-ng構成を使用する2番目のパラレルsftpdサーバーがあるため、/var/data/chroot/
各ユーザーはあるサーバーまたは別のサーバーにログインできます。これは高可用性のためです。これはこれまで動作します。
現在動作していないのはsftpdロギングです。 sftpユーザーのログは次の場所にのみあります。一つsftpサーバーは排他的です。これは、syslog-ngが各ユーザーの.sftpファイルに対して独自のUnixソケットファイルロックを取得するため、最も少なく開始するサーバーです/dev/log
。
したがって、ユーザーが syslog-ng の起動が最も少ない最初のサーバーにログインすると、そのユーザーの SFTP アクティビティが最初のサーバーに記録されます。ただし、ユーザーが2番目のサーバーにログインすると、そのSFTPアクティビティは2番目のサーバーまたは1番目のサーバーに書き込まれません。
その後、2 番目のサーバーで syslog-ng が再起動されると、sftp ユーザーのアクティビティは 2 番目のサーバーにのみ記録され、2 番目のサーバーのログインに対してのみ記録されます。
ユーザーがそのサーバーにログインしたときに、ユーザーのホームページがNFSを介して2つのサーバーで共有されている間に、SFTPユーザーのアクティビティが各SFTPサーバーに記録されるようにするにはどうすればよいですか。
答え1
私の解決策は次のとおりです。
作る地元のユーザーサブディレクトリを作成するディレクトリ:
sudo mkdir /var/data/dev
各ユーザー名<username>
とユーザーのデフォルトグループに対して、<groupname>
次の操作を行います。
sudo mkdir /var/data/dev/<username>
sudo chmod 550 /var/data/dev/<username> # This restrictive permission is a requirement I think
sudo chgrp <groupname> /var/data/dev/<username> # so the user can read the directory
/var/data/chroot/<username>/dev
したがって、新しいディレクトリは既存のディレクトリ(nfsマウントにある)とまったく同じです/var/data/chroot/
。
実際にmount --bind /var/data/dev/<username> /var/data/chroot/<username>/dev
行うことは、/var/data/chroot/<username>/dev
nfsマウントではなくsftpサーバーでローカルに実行することです。
次に、syslog-ng 構成を変更します。
~から
source s_chroot_<username> { unix-stream("/var/data/chroot/<username>/dev/log" optional(yes) ); };
到着
source s_chroot_<username> { unix-stream("/var/data/dev/<username>/log" optional(yes) ); };
(これは必ずしも必要ではありませんが、syslog-ngは確かにローカルファイルからのみ読み取るので、これはnfsからマウントされないようにします。これは良いことです。)
ユーザーが1つのSFTPサーバーにログインしていても、別のSFTPサーバーにログインしても、syslog-ngは影響を受けるSFTPサーバーからSFTPセッションを記録できるようになりました。
何度も(私の場合は何百回も)バインドマウントを避けたいのですが、影響はSFTPサービス自体ではなくロギング機能に制限されているため、この回避策は許容可能であると思います。言い換えれば、バインドインストールに問題がある場合は、SFTPセッションのログ記録がないことが唯一の影響です。そしてそれは非常に簡単で、統一され、明確です。