Re: bin/60662: [sysinstall] 5.2 Anonymous FTP server out dated

Olafur Osvaldsson <[email protected]>
Newsgroups gmane.os.freebsd.devel.quality-assurance
Message-ID <[email protected]>
The following reply was made to PR bin/60662; it has been noted by GNATS.

From: Olafur Osvaldsson <[email protected]>
To: [email protected]
Cc: [email protected]
Subject: Re: bin/60662: [sysinstall] 5.2 Anonymous FTP server out dated
Date: Sat, 13 Nov 2004 00:41:25 +0000

 --OgqxwSJOaUobr8KG
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: inline
 
 I've attached a patch that:
  - moves the ftpmotd file to /etc/ftpmotd wich is the correct place
  - does not create the ~ftp/bin directory
  - makes skipping the creation of ~ftp/incoming an option by leaving the
    directory name empty.
  - Added text to the Anon-FTP config prompt that points out the previous change
    and advises the user to add -r to the ftpd command-line options in inetd.conf
  - creates pwd.db instead of passwd in ~ftp/etc
  - does not include group and pwd.db entries that start with - or + incase the
    user is using compat mode for the passwd database
 
 My opinion on other suggestions:
  - ~ftp/pub is still mentioned in the ftpd(8) man page and should therefor be made
  - the ftp/anonymous user does not need to be in the ftpchroot file, it is
    chrooted by default
  - not everyone wants all anon downloads logged so the -S should be up to the user
  - quota for the ftp user is not needed if the ~ftp/ dir is not writeable and the
    ftpd(8) has the -r option set
 
 /Oli
 
 -- 
 Olafur Osvaldsson
 Systems Administrator
 Internet a Islandi hf.
 Tel:   +354 525-5291
 Email: [email protected]
 
 --OgqxwSJOaUobr8KG
 Content-Type: text/plain; charset=us-ascii
 Content-Disposition: attachment; filename="sysinstall.diff"
 
 diff -ruN sysinstall.orig/anonFTP.c sysinstall/anonFTP.c
 --- sysinstall.orig/anonFTP.c	Thu Mar 11 11:58:15 2004
 +++ sysinstall/anonFTP.c	Sat Nov 13 00:38:18 2004
 @@ -105,7 +105,7 @@
        tconf.homedir, STRINGOBJ, NULL },
  #define LAYOUT_UPLOAD		4
      { 14, 20, 22, ANONFTP_UPLOAD_LEN - 1,
 -      "Upload Subdirectory:", "Designated sub-directory that holds uploads",
 +      "Upload Subdirectory:", "Designated sub-directory that holds uploads (leave empty for none)",
        tconf.upload, STRINGOBJ, NULL },
  #define LAYOUT_OKBUTTON		5
      { 19, 15, 0, 0,
 @@ -248,6 +248,9 @@
  		 "ftpd(8) in inetd.conf(5) for FTP services to be available.  If you\n"
  		 "did not do so earlier, you will have the opportunity to enable inetd(8)\n"
  		 "again later.\n\n"
 +                 "If you want the server to be read-only you should leave the upload\n"
 +                 "directory option empty and add the -r command-line option to ftpd(8)\n"
 +                 "in inetd.conf(5)\n\n"
  		 "Do you wish to continue configuring anonymous FTP?")) {
  	return DITEM_FAILURE;
      }
 @@ -268,9 +271,6 @@
      if (!tconf.group[0])
  	SAFE_STRCPY(tconf.group, FTP_GROUP);
      
 -    if (!tconf.upload[0])
 -	SAFE_STRCPY(tconf.upload, FTP_UPLOAD);
 -    
      /*** If the user did not specify a directory, use default ***/
      
      if (tconf.homedir[strlen(tconf.homedir) - 1] == '/')
 @@ -287,18 +287,19 @@
      if (directory_exists(tconf.homedir)) {
  	msgNotify("Configuring %s for use by anon FTP.", tconf.homedir);
  	vsystem("chmod 555 %s && chown root.%s %s", tconf.homedir, tconf.group, tconf.homedir);
 -	vsystem("mkdir %s/bin && chmod 555 %s/bin", tconf.homedir, tconf.homedir);
 -	vsystem("cp /bin/ls %s/bin && chmod 111 %s/bin/ls", tconf.homedir, tconf.homedir);
 -	vsystem("cp /bin/date %s/bin && chmod 111 %s/bin/date", tconf.homedir, tconf.homedir);
  	vsystem("mkdir %s/etc && chmod 555 %s/etc", tconf.homedir, tconf.homedir);
  	vsystem("mkdir -p %s/pub", tconf.homedir);
 -	vsystem("mkdir -p %s/%s", tconf.homedir, tconf.upload);
 -	vsystem("chmod 1777 %s/%s", tconf.homedir, tconf.upload);
 +        if (tconf.upload[0]) {
 +	    vsystem("mkdir -p %s/%s", tconf.homedir, tconf.upload);
 +	    vsystem("chmod 1777 %s/%s", tconf.homedir, tconf.upload);
 +        }
  	
  	if (DITEM_STATUS(createFtpUser()) == DITEM_SUCCESS) {
  	    msgNotify("Copying password information for anon FTP.");
 -	    vsystem("awk -F: '{if ($3 < 10 || $1 == \"ftp\") print $0}' /etc/passwd > %s/etc/passwd && chmod 444 %s/etc/passwd", tconf.homedir, tconf.homedir);
 -	    vsystem("awk -F: '{if ($3 < 100) print $0}' /etc/group > %s/etc/group && chmod 444 %s/etc/group", tconf.homedir, tconf.homedir);
 +	    vsystem("awk -F: '{if ((substr($1, 1, 1) != \"+\") && (substr($1, 1, 1) != \"-\") && ($3 < 10 || $1 == \"ftp\")) print $0}' /etc/master.passwd > %s/etc/master.passwd", tconf.homedir);
 +	    vsystem("/usr/sbin/pwd_mkdb -d %s/etc %s/etc/master.passwd && chmod 444 %s/etc/pwd.db", tconf.homedir, tconf.homedir, tconf.homedir);
 +	    vsystem("rm -f %s/etc/master.passwd %s/etc/spwd.db", tconf.homedir, tconf.homedir);
 +	    vsystem("awk -F: '{if ((substr($1, 1, 1) != \"+\") && (substr($1, 1, 1) != \"-\") && ($3 < 100)) print $0}' /etc/group > %s/etc/group && chmod 444 %s/etc/group", tconf.homedir, tconf.homedir);
  	    vsystem("chown -R root.%s %s/pub", tconf.group, tconf.homedir);
  	}
  	else {
 @@ -308,8 +309,8 @@
  	
  	if (!msgYesNo("Create a welcome message file for anonymous FTP users?")) {
  	    char cmd[256];
 -	    vsystem("echo Your welcome message here. > %s/etc/%s", tconf.homedir, MOTD_FILE);
 -	    sprintf(cmd, "%s %s/etc/%s", variable_get(VAR_EDITOR), tconf.homedir, MOTD_FILE);
 +	    vsystem("echo Your welcome message here. > /etc/%s", MOTD_FILE);
 +	    sprintf(cmd, "%s /etc/%s", variable_get(VAR_EDITOR), MOTD_FILE);
  	    if (!systemExecute(cmd))
  		i = DITEM_SUCCESS;
  	    else
 
 --OgqxwSJOaUobr8KG--
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-qa
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.