head 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 2003.06.15.15.44.01; author swiergot; state Exp; branches; next ; desc @@ 1.1 log @- Version 1.2.0. - Splitted misc patch into five new patches. - Reviewed docs_source. - Preserving old configuration files. - Don't enable local users logins by default. - Extended configuration file. @ text @diff -ruN vsftpd-1.2.0.orig/defs.h vsftpd-1.2.0/defs.h --- vsftpd-1.2.0.orig/defs.h 2002-07-10 00:51:57.000000000 +0200 +++ vsftpd-1.2.0/defs.h 2003-06-15 15:27:59.000000000 +0200 @@@@ -1,7 +1,7 @@@@ #ifndef VSF_DEFS_H #define VSF_DEFS_H -#define VSFTP_DEFAULT_CONFIG "/etc/vsftpd.conf" +#define VSFTP_DEFAULT_CONFIG "/etc/vsftpd/vsftpd.conf" #define VSFTP_COMMAND_FD 0 diff -ruN vsftpd-1.2.0.orig/EXAMPLE/INTERNET_SITE/README vsftpd-1.2.0/EXAMPLE/INTERNET_SITE/README --- vsftpd-1.2.0.orig/EXAMPLE/INTERNET_SITE/README 2002-07-31 21:12:02.000000000 +0200 +++ vsftpd-1.2.0/EXAMPLE/INTERNET_SITE/README 2003-06-15 15:44:57.000000000 +0200 @@@@ -41,13 +41,13 @@@@ As an example of how to ban certain sites from connecting, 192.168.1.3 will be denied access. -banner_fail = /etc/vsftpd.busy_banner +banner_fail = /etc/vsftpd/busy_banner This is the file to display to users if the connection is refused for whatever reason (too many users, IP banned). Example of how to populate it: -echo "421 Server busy, please try later." > /etc/vsftpd.busy_banner +echo "421 Server busy, please try later." > /etc/vsftpd/busy_banner log_on_success += PID HOST DURATION log_on_failure += HOST @@@@ -62,7 +62,7 @@@@ An example file is supplied. Install it like this: -cp vsftpd.conf /etc +cp vsftpd.conf /etc/vsftpd Let's example the contents of the file: diff -ruN vsftpd-1.2.0.orig/EXAMPLE/INTERNET_SITE/vsftpd.xinetd vsftpd-1.2.0/EXAMPLE/INTERNET_SITE/vsftpd.xinetd --- vsftpd-1.2.0.orig/EXAMPLE/INTERNET_SITE/vsftpd.xinetd 2002-07-31 00:57:21.000000000 +0200 +++ vsftpd-1.2.0/EXAMPLE/INTERNET_SITE/vsftpd.xinetd 2003-06-15 15:45:08.000000000 +0200 @@@@ -9,7 +9,7 @@@@ per_source = 5 instances = 200 no_access = 192.168.1.3 - banner_fail = /etc/vsftpd.busy_banner + banner_fail = /etc/vsftpd/busy_banner log_on_success += PID HOST DURATION log_on_failure += HOST } diff -ruN vsftpd-1.2.0.orig/EXAMPLE/INTERNET_SITE_NOINETD/README vsftpd-1.2.0/EXAMPLE/INTERNET_SITE_NOINETD/README --- vsftpd-1.2.0.orig/EXAMPLE/INTERNET_SITE_NOINETD/README 2002-11-09 17:07:09.000000000 +0100 +++ vsftpd-1.2.0/EXAMPLE/INTERNET_SITE_NOINETD/README 2003-06-15 15:31:39.000000000 +0200 @@@@ -17,7 +17,7 @@@@ To use this example config: -1) Copy the vsftpd.conf file in this directory to /etc/vsftpd.conf. +1) Copy the vsftpd.conf file in this directory to /etc/vsftpd/vsftpd.conf. 2) Start up vsftpd, e.g. vsftpd & @@@@ -51,5 +51,5 @@@@ listen_address=192.168.1.2 And launch vsftpd with a specific config file like this: -vsftpd /etc/vsftpd.conf.site1 & +vsftpd /etc/vsftpd/vsftpd.conf.site1 & diff -ruN vsftpd-1.2.0.orig/EXAMPLE/PER_IP_CONFIG/hosts.allow vsftpd-1.2.0/EXAMPLE/PER_IP_CONFIG/hosts.allow --- vsftpd-1.2.0.orig/EXAMPLE/PER_IP_CONFIG/hosts.allow 2002-11-09 17:04:24.000000000 +0100 +++ vsftpd-1.2.0/EXAMPLE/PER_IP_CONFIG/hosts.allow 2003-06-15 15:44:40.000000000 +0200 @@@@ -4,6 +4,6 @@@@ # by the '/usr/sbin/tcpd' server. # -vsftpd: 192.168.1.3: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap.conf +vsftpd: 192.168.1.3: setenv VSFTPD_LOAD_CONF /etc/vsftpd/tcp_wrap.conf vsftpd: 192.168.1.4: DENY diff -ruN vsftpd-1.2.0.orig/EXAMPLE/PER_IP_CONFIG/README vsftpd-1.2.0/EXAMPLE/PER_IP_CONFIG/README --- vsftpd-1.2.0.orig/EXAMPLE/PER_IP_CONFIG/README 2002-11-09 17:16:12.000000000 +0100 +++ vsftpd-1.2.0/EXAMPLE/PER_IP_CONFIG/README 2003-06-15 15:44:29.000000000 +0200 @@@@ -20,13 +20,13 @@@@ Let's have a look at the example: -vsftpd: 192.168.1.3: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap.conf +vsftpd: 192.168.1.3: setenv VSFTPD_LOAD_CONF /etc/vsftpd/tcp_wrap.conf vsftpd: 192.168.1.4: DENY The first line: If a client connects from 192.168.1.3, then vsftpd will apply the vsftpd -config file /etc/vsftpd_tcp_wrap.conf to the session! These settings are -applied ON TOP of the default vsftpd.conf. +config file /etc/vsftpd/tcp_wrap.conf to the session! These settings +are applied ON TOP of the default vsftpd.conf. This is obviously very powerful. You might use this to apply different access restrictions for some IPs (e.g. the ability to upload). Or you could give certain classes of IPs the ability to skip connection diff -ruN vsftpd-1.2.0.orig/EXAMPLE/VIRTUAL_HOSTS/README vsftpd-1.2.0/EXAMPLE/VIRTUAL_HOSTS/README --- vsftpd-1.2.0.orig/EXAMPLE/VIRTUAL_HOSTS/README 2002-07-31 22:17:42.000000000 +0200 +++ vsftpd-1.2.0/EXAMPLE/VIRTUAL_HOSTS/README 2003-06-15 15:38:45.000000000 +0200 @@@@ -39,11 +39,11 @@@@ Edit vsftpd2, and change - The bind line to refer to the IP address 192.168.1.10 - Add the line -server_args = /etc/vsftpd_site2.conf +server_args = /etc/vsftpd/vsftpd_site2.conf This launches this FTP site with a different vsftpd configuration file. -cp /etc/vsftpd.conf /etc/vsftpd_site2.conf +cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd_site2.conf Add two lines: ftp_username=ftp_site2 diff -ruN vsftpd-1.2.0.orig/EXAMPLE/VIRTUAL_USERS/README vsftpd-1.2.0/EXAMPLE/VIRTUAL_USERS/README --- vsftpd-1.2.0.orig/EXAMPLE/VIRTUAL_USERS/README 2002-07-30 21:32:12.000000000 +0200 +++ vsftpd-1.2.0/EXAMPLE/VIRTUAL_USERS/README 2003-06-15 15:45:36.000000000 +0200 @@@@ -15,13 +15,13 @@@@ "fred" with password "bar". Whilst logged in as root, create the actual database file like this: -db_load -T -t hash -f logins.txt /etc/vsftpd_login.db +db_load -T -t hash -f logins.txt /etc/vsftpd/login.db (Requires the Berkeley db program installed). -This will create /etc/vsftpd_login.db. Obviously, you may want to make sure -the permissions are restricted: +This will create /etc/vsftpd/login.db. Obviously, you may want to make +sure the permissions are restricted: -chmod 600 /etc/vsftpd_login.db +chmod 600 /etc/vsftpd/login.db For more information on maintaing your login database, look around for documentation on "Berkeley DB", e.g. @@@@ -32,8 +32,8 @@@@ See the example file vsftpd.pam. It contains two lines: -auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login -account required /lib/security/pam_userdb.so db=/etc/vsftpd_login +auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login +account required /lib/security/pam_userdb.so db=/etc/vsftpd/login This tells PAM to authenticate users using our new database. Copy this PAM file to the PAM directory - typically /etc/pam.d/ @@@@ -100,9 +100,9 @@@@ These put a port range on passive FTP incoming requests - very useful if you are configuring a firewall. -Copy the example vsftpd.conf file to /etc: +Copy the example vsftpd.conf file to /etc/vsftpd: -cp vsftpd.conf /etc/ +cp vsftpd.conf /etc/vsftpd Step 5) Start up vsftpd. diff -ruN vsftpd-1.2.0.orig/EXAMPLE/VIRTUAL_USERS/vsftpd.pam vsftpd-1.2.0/EXAMPLE/VIRTUAL_USERS/vsftpd.pam --- vsftpd-1.2.0.orig/EXAMPLE/VIRTUAL_USERS/vsftpd.pam 2002-07-30 20:36:38.000000000 +0200 +++ vsftpd-1.2.0/EXAMPLE/VIRTUAL_USERS/vsftpd.pam 2003-06-15 15:45:53.000000000 +0200 @@@@ -1,2 +1,2 @@@@ -auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login -account required /lib/security/pam_userdb.so db=/etc/vsftpd_login +auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login +account required /lib/security/pam_userdb.so db=/etc/vsftpd/login diff -ruN vsftpd-1.2.0.orig/EXAMPLE/VIRTUAL_USERS_2/README vsftpd-1.2.0/EXAMPLE/VIRTUAL_USERS_2/README --- vsftpd-1.2.0.orig/EXAMPLE/VIRTUAL_USERS_2/README 2002-07-30 23:40:51.000000000 +0200 +++ vsftpd-1.2.0/EXAMPLE/VIRTUAL_USERS_2/README 2003-06-15 15:46:53.000000000 +0200 @@@@ -15,12 +15,12 @@@@ Step 1) Activate per-user configurability. To activate this powerful vsftpd feature, add the following to -/etc/vsftpd.conf: -user_config_dir=/etc/vsftpd_user_conf +/etc/vsftpd/vsftpd.conf: +user_config_dir=/etc/vsftpd/user_conf And, create this directory: -mkdir /etc/vsftpd_user_conf +mkdir /etc/vsftpd/user_conf Step 2) Give tom the ability to read all files / directories. @@@@ -34,21 +34,21 @@@@ For the tom user, supply a config setting override for anon_world_readable_only: -echo "anon_world_readable_only=NO" > /etc/vsftpd_user_conf/tom +echo "anon_world_readable_only=NO" > /etc/vsftpd/user_conf/tom Check it out - login as tom and now "ls" will return a directory listing! Log in as fred and it won't. NOTE - restart vsftpd to pick up the config setting changes to -/etc/vsftpd.conf. (Advanced users can send SIGHUP to the vsftpd listener +/etc/vsftpd/vsftpd.conf. (Advanced users can send SIGHUP to the vsftpd listener process). Step 3) Give fred the ability to read all files / directories and create new ones but not interfere with existing files. -echo "anon_world_readable_only=NO" > /etc/vsftpd_user_conf/fred -echo "write_enable=YES" >> /etc/vsftpd_user_conf/fred -echo "anon_upload_enable=YES" >> /etc/vsftpd_user_conf/fred +echo "anon_world_readable_only=NO" > /etc/vsftpd/user_conf/fred +echo "write_enable=YES" >> /etc/vsftpd/user_conf/fred +echo "anon_upload_enable=YES" >> /etc/vsftpd/user_conf/fred Check it out - login as tom and you can't upload. Log in as fred and you can! Try and delete a file as both tom and fred - you can't. diff -ruN vsftpd-1.2.0.orig/FAQ vsftpd-1.2.0/FAQ --- vsftpd-1.2.0.orig/FAQ 2003-05-28 01:37:35.000000000 +0200 +++ vsftpd-1.2.0/FAQ 2003-06-15 15:29:31.000000000 +0200 @@@@ -33,9 +33,9 @@@@ Q) Help! Local users cannot log in. A) There are various possible problems. A1) By default, vsftpd disables any logins other than anonymous logins. Put -local_enable=YES in your /etc/vsftpd.conf to allow local users to log in. -A2) vsftpd tries to link with PAM. (Run "ldd vsftpd" and look for libpam to -find out whether this has happened or not). If vsftpd links with PAM, then +local_enable=YES in your /etc/vsftpd/vsftpd.conf to allow local users to log +in. A2) vsftpd tries to link with PAM. (Run "ldd vsftpd" and look for libpam +to find out whether this has happened or not). If vsftpd links with PAM, then you will need to have a PAM file installed for the vsftpd service. There is a sample one for RedHat systems included in the "RedHat" directory - put it under /etc/pam.d @@@@ -45,12 +45,12 @@@@ A4) If you are not using PAM, then vsftpd will do its own check for a valid user shell in /etc/shells. You may need to disable this if you use an invalid shell to disable logins other than FTP logins. Put check_shell=NO in your -/etc/vsftpd.conf. +/etc/vsftpd/vsftpd.conf. Q) Help! Uploads or other write commands give me "500 Unknown command.". A) By default, write commands, including uploads and new directories, are disabled. This is a security measure. To enable writes, put write_enable=YES -in your /etc/vsftpd.conf. +in your /etc/vsftpd/vsftpd.conf. Q) Help! What are the security implications referred to in the "chroot_local_user" option? @@@@ -86,11 +86,11 @@@@ mode. Use "listen_address=x.x.x.x" to set the virtual IP. Q) Help! Does vsftpd support virtual users? -A) Yes, via PAM integration. Set "guest_enable=YES" in /etc/vsftpd.conf. This -has the effect of mapping every non-anonymous successful login to the local -username specified in "guest_username". Then, use PAM and (e.g.) its pam_userdb -module to provide authentication against an external (i.e. non-/etc/passwd) -repository of users. +A) Yes, via PAM integration. Set "guest_enable=YES" in /etc/vsftpd/vsftpd.conf. +This has the effect of mapping every non-anonymous successful login to the +local username specified in "guest_username". Then, use PAM and (e.g.) its +pam_userdb module to provide authentication against an external (i.e. +non-/etc/passwd) repository of users. Note - currently there is a restriction that with guest_enable enabled, local users also get mapped to guest_username. There is an example of virtual users setup in the "EXAMPLE" directory. diff -ruN vsftpd-1.2.0.orig/INSTALL vsftpd-1.2.0/INSTALL --- vsftpd-1.2.0.orig/INSTALL 2002-11-09 16:45:02.000000000 +0100 +++ vsftpd-1.2.0/INSTALL 2003-06-15 15:43:33.000000000 +0200 @@@@ -56,14 +56,14 @@@@ "make install" doesn't copy the sample config file. It is recommended you do this: -cp vsftpd.conf /etc +cp vsftpd.conf /etc/vsftpd Step 4) Smoke test (without an inetd). vsftpd can run standalone or via an inetd (such as inetd or xinetd). You will typically get more control running vsftpd from an inetd. But first we will run it without, so we can check things are going well so far. -Edit /etc/vsftpd.conf, and add this line at the bottom: +Edit /etc/vsftpd/vsftpd.conf, and add this line at the bottom: listen=YES @@@@ -133,11 +133,12 @@@@ Step 7) Customize your configuration As well as the above three pre-requisites, you are recommended to install a -config file. The default location for the config file is /etc/vsftpd.conf. -There is a sample vsftpd.conf in the distribution tarball. You probably want -to copy that to /etc/vsftpd.conf as a basis for modification, i.e.: +config file. The default location for the config file is +/etc/vsftpd/vsftpd.conf. There is a sample vsftpd.conf in the distribution +tarball. You probably want to copy that to /etc/vsftpd/vsftpd.conf as a basis +for modification, i.e.: -cp vsftpd.conf /etc +cp vsftpd.conf /etc/vsftpd The default configuration allows neither local user logins nor anonymous uploads. You may wish to change these defaults. diff -ruN vsftpd-1.2.0.orig/tunables.c vsftpd-1.2.0/tunables.c --- vsftpd-1.2.0.orig/tunables.c 2003-05-28 00:30:06.000000000 +0200 +++ vsftpd-1.2.0/tunables.c 2003-06-15 15:42:52.000000000 +0200 @@@@ -84,11 +84,11 @@@@ const char* tunable_message_file = ".message"; const char* tunable_nopriv_user = "nobody"; const char* tunable_ftpd_banner = 0; -const char* tunable_banned_email_file = "/etc/vsftpd.banned_emails"; -const char* tunable_chroot_list_file = "/etc/vsftpd.chroot_list"; +const char* tunable_banned_email_file = "/etc/vsftpd/banned_emails"; +const char* tunable_chroot_list_file = "/etc/vsftpd/chroot_list"; const char* tunable_pam_service_name = "ftp"; const char* tunable_guest_username = "ftp"; -const char* tunable_userlist_file = "/etc/vsftpd.user_list"; +const char* tunable_userlist_file = "/etc/vsftpd/user_list"; const char* tunable_anon_root = 0; const char* tunable_local_root = 0; const char* tunable_banner_file = 0; diff -ruN vsftpd-1.2.0.orig/vsftpd.8 vsftpd-1.2.0/vsftpd.8 --- vsftpd-1.2.0.orig/vsftpd.8 2002-12-20 19:14:46.000000000 +0100 +++ vsftpd-1.2.0/vsftpd.8 2003-06-15 15:29:45.000000000 +0200 @@@@ -20,6 +20,6 @@@@ An optional .Op configuration file may be given on the command line. The default configuration file is -.Pa /etc/vsftpd.conf . +.Pa /etc/vsftpd/vsftpd.conf . .Sh SEE ALSO .Xr vsftpd.conf 5 diff -ruN vsftpd-1.2.0.orig/vsftpd.conf.5 vsftpd-1.2.0/vsftpd.conf.5 --- vsftpd-1.2.0.orig/vsftpd.conf.5 2003-05-28 00:50:28.000000000 +0200 +++ vsftpd-1.2.0/vsftpd.conf.5 2003-06-15 15:42:17.000000000 +0200 @@@@ -4,7 +4,7 @@@@ .SH DESCRIPTION vsftpd.conf may be used to control various aspects of vsftpd's behaviour. By default, vsftpd looks for this file at the location -.BR /etc/vsftpd.conf . +.BR /etc/vsftpd/vsftpd.conf . However, you may override this by specifying a command line argument to vsftpd. The command line argument is the pathname of the configuration file for vsftpd. This behaviour is useful because you may wish to use an advanced @@@@ -128,7 +128,7 @@@@ different if chroot_local_user is set to YES. In this case, the list becomes a list of users which are NOT to be placed in a chroot() jail. By default, the file containing this list is -/etc/vsftpd.chroot_list, but you may override this with the +/etc/vsftpd/chroot_list, but you may override this with the .BR chroot_list_file setting. @@@@ -156,7 +156,7 @@@@ .B deny_email_enable If activated, you may provide a list of anonymous password e-mail responses which cause login to be denied. By default, the file containing this list is -/etc/vsftpd.banned_emails, but you may override this with the +/etc/vsftpd/banned_emails, but you may override this with the .BR banned_email_file setting. @@@@ -528,7 +528,7 @@@@ .BR deny_email_enable is enabled. -Default: /etc/vsftpd.banned_emails +Default: /etc/vsftpd/banned_emails .TP .B banner_file This option is the name of a file containing text to display when someone @@@@ -556,7 +556,7 @@@@ .BR chroot_local_user is disabled. -Default: /etc/vsftpd.chroot_list +Default: /etc/vsftpd/chroot_list .TP .B cmds_allowed This options specifies a comma separated list of allowed FTP commands (post @@@@ -646,10 +646,10 @@@@ with an example. If you set .BR user_config_dir to be -.BR /etc/vsftpd_user_conf +.BR /etc/vsftpd/user_conf and then log on as the user "chris", then vsftpd will apply the settings in the file -.BR /etc/vsftpd_user_conf/chris +.BR /etc/vsftpd/user_conf/chris for the duration of the session. The format of this file is as detailed in this manual page! @@@@ -660,7 +660,7 @@@@ .BR userlist_enable option is active. -Default: /etc/vsftpd.user_list +Default: /etc/vsftpd/user_list .BR .B vsftpd_log_file This option is the name of the file to which we write the vsftpd style @ .