アットウィキロゴ

vsftpd_1.2.1_main.c_session_init

session_init


source

main.c

line

245 - 285

概要


static void session_init(struct vsf_session* p_sess)

処理の流れ


    • コントロールコネクションのアドレス取得
   248   /* Get the addresses of the control connection */
   249   vsf_sysutil_getpeername(VSFTP_COMMAND_FD, &p_sess->p_remote_addr);
   250   vsf_sysutil_getsockname(VSFTP_COMMAND_FD, &p_sess->p_local_addr);

    • tunable_anonymous_enableが有効な場合の処理

tunable_anonymous_enable (デフォルトは1)
Anonymous(匿名)ログインを許可するか否かのコントロールをします。有効にした場合、ユーザ名"ftp"も"anonymous"も共にAnonymous(匿名)ログインとして承認されます。

   253   {
   254     const struct vsf_sysutil_user* p_user =
   255       vsf_sysutil_getpwnam(tunable_ftp_username);
   256     if (p_user == 0)
   257     {
   258       die2("vsftpd: cannot locate user specified in 'ftp_username':",
   259            tunable_ftp_username);
   260     }
   261     p_sess->anon_ftp_uid = vsf_sysutil_user_getuid(p_user);
   262   }

    • tunable_guest_enableが有効の場合の処理

tunable_guest_enable (デフォルトは0)
If enabled, all non-anonymous logins are classed as "guest" logins. 
A guest login is remapped to the user specified in the guest_username setting. 
可能にされるなら、すべての非匿名のログインが「お客様」ログインとして分類されます。 
お客様ログインはお客様_ユーザ名設定で指定されたユーザに再写像されます。

   264   {
   265     const struct vsf_sysutil_user* p_user =
   266       vsf_sysutil_getpwnam(tunable_guest_username);
   267     if (p_user == 0)
   268     {
   269       die2("vsftpd: cannot locate user specified in 'guest_username':",
   270            tunable_guest_username);
   271     }
   272     p_sess->guest_user_uid = vsf_sysutil_user_getuid(p_user);
   273   }

    • tunable_chown_uploadsが有効な場合の処理

tunable_chown_uploads (デフォルトは0)
有効にすると、全ての匿名によるアップロードファイルはchown_usernameオプションで指定された所有者に変更されるようになります。
これは管理の、そして恐らくセキュリティの、見地から役立つといえます。

   275   {
   276     const struct vsf_sysutil_user* p_user =
   277       vsf_sysutil_getpwnam(tunable_chown_username);
   278     if (p_user == 0)
   279     {
   280       die2("vsftpd: cannot locate user specified in 'chown_username':",
   281            tunable_chown_username);
   282     }
   283     p_sess->anon_upload_chown_uid = vsf_sysutil_user_getuid(p_user);
   284   }
   285 }

function


   245 static void
   246 session_init(struct vsf_session* p_sess)
   247 {
   248   /* Get the addresses of the control connection */
   249   vsf_sysutil_getpeername(VSFTP_COMMAND_FD, &p_sess->p_remote_addr);
   250   vsf_sysutil_getsockname(VSFTP_COMMAND_FD, &p_sess->p_local_addr);
   251   /* If anonymous mode is active, fetch the uid of the anonymous user */
   252   if (tunable_anonymous_enable)
   253   {
   254     const struct vsf_sysutil_user* p_user =
   255       vsf_sysutil_getpwnam(tunable_ftp_username);
   256     if (p_user == 0)
   257     {
   258       die2("vsftpd: cannot locate user specified in 'ftp_username':",
   259            tunable_ftp_username);
   260     }
   261     p_sess->anon_ftp_uid = vsf_sysutil_user_getuid(p_user);
   262   }
   263   if (tunable_guest_enable)
   264   {
   265     const struct vsf_sysutil_user* p_user =
   266       vsf_sysutil_getpwnam(tunable_guest_username);
   267     if (p_user == 0)
   268     {
   269       die2("vsftpd: cannot locate user specified in 'guest_username':",
   270            tunable_guest_username);
   271     }
   272     p_sess->guest_user_uid = vsf_sysutil_user_getuid(p_user);
   273   }
   274   if (tunable_chown_uploads)
   275   {
   276     const struct vsf_sysutil_user* p_user =
   277       vsf_sysutil_getpwnam(tunable_chown_username);
   278     if (p_user == 0)
   279     {
   280       die2("vsftpd: cannot locate user specified in 'chown_username':",
   281            tunable_chown_username);
   282     }
   283     p_sess->anon_upload_chown_uid = vsf_sysutil_user_getuid(p_user);
   284   }
   285 }
最終更新:2009年03月01日 22:15
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。