After emerge vsftp doesn't create /usr/share/vsftp/empty. Which is empty, and must be empty. # grep share/vsft /var/db/pkg/net-ftp/vsftpd-1.0.1-r1/CONTENTS dir /usr/share/vsftpd dir /usr/share/vsftpd/empty # ls /usr/share/vsftpd ls: /usr/share/vsftpd: No such file or directory # ftp localhost Connected to localhost. 500 OOPS: vsftpd: not found: directory given in 'tunable_secure_chroot_dir' ftp> # emerge -V Portage 2.0.46-r4 (default-x86-1.4, gcc-3.2.1, glibc-2.3.1-r2) # emerge -p vsftpd These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild R ] net-ftp/vsftpd-1.0.1-r1 # emerge info Portage 2.0.46-r4 (default-x86-1.4, gcc-3.2.1, glibc-2.3.1-r2) ================================================================= System uname: 2.4.20 i586 AMD-K6(tm) 3D processor USE="-3dfx 3dnow aalib -acl -afs -alsa apm -arts -avi -atlas berkdb -bonobo - can a -cdr -cjk crypt -cups -dga -directfb doc -dvd encode esd -fbcon -flash - freewn n -gb gd gdbm -ggi gif -gnome -gphoto2 -gpm gtk gtk2 gtkhtml -guile -icc -icc- pgo -imap imlib innodb ipv6 java jikes jpeg -junit -kde -kerberos -lcms -ldap - leim libg++ -libgda libwww -maildir mbox mikmod mmx motif -mozilla mpeg -mule mysql nas ncurses nls -oci8 odbc oggvorbis opengl -oss pam -pcmcia -pda pdflib perl pic plotutils png -postgres python qt qtmt quicktime readline -ruby samba sasl -scanner sdl slang -slp -snmp -socks5 spell -sse ssl -static -svga tcltk tcpd -tetex tiff truetype voodoo3 -wavelan wmf X xml xml2 xmms xv zlib x86" ARCH="x86" COMPILER="gcc3" CHOST="i586-pc-linux-gnu" CFLAGS="-march=k6-2 -O3 -pipe" CXXFLAGS="-march=k6-2 -O3 -pipe" ACCEPT_KEYWORDS="x86" CONFIG_PROTECT="/etc /var/qmail/control /usr/share/config /usr/kde/2/share/conf ig /usr/kde/3/share/config" CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d" MAKEOPTS="-j2" JDK_HOME="/opt/blackdown-jdk-1.3.1" JAVA_HOME="/opt/blackdown-jdk-1.3.1" AUTOCLEAN="yes" SYNC="rsync://rsync.gentoo.org/gentoo-portage" GENTOO_MIRRORS="http://www.ibiblio.org/pub/Linux/distributions/gentoo"
could you re-emerge the package and see if the directories exist ?
# ls -l /usr/share/vsftpd/empty ls: /usr/share/vsftpd/empty: No such file or directory # mkdir -p /usr/share/vsftpd/empty # ls -l /usr/share/vsftpd/empty total 0 # emerge -p vsftpd These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild R ] net-ftp/vsftpd-1.0.1-r1 # emerge vsftpd Calculating dependencies ...done! >>> emerge (1 of 1) net-ftp/vsftpd-1.0.1-r1 to / >>> md5 ;-) vsftpd-1.0.1.tar.gz >>> Unpacking source... >>> Unpacking vsftpd-1.0.1.tar.gz patching file defs.h patching file tunables.c patching file vsftpd.8 patching file vsftpd.conf.5 >>> Source unpacked. gcc -c main.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c utility.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c prelogin.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c ftpcmdio.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c postlogin.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c privsock.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c tunables.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c ftpdataio.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c secbuf.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c ls.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c postprivparent.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c logging.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c str.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c netstr.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c sysstr.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c strlist.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c dirchange.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c filestr.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c parseconf.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c secutil.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c ascii.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c oneprocess.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c twoprocess.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c privops.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c sysutil.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -c sysdeputil.c -march=k6-2 -O3 -pipe -idirafter dummyinc gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o dirchange.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o sysutil.o sysdeputil.o -Wl,-s `./vsf_findlibs.sh` >>> Install vsftpd-1.0.1-r1 into /var/tmp/portage/vsftpd-1.0.1-r1/image/ category net-ftp strip: /var/tmp/portage/vsftpd-1.0.1-r1/image/usr/sbin/vsftpd >>> Completed installing into /var/tmp/portage/vsftpd-1.0.1-r1/image/ >>> Merging net-ftp/vsftpd-1.0.1-r1 to / --- /etc/ >>> /etc/ftpusers --- /etc/pam.d/ >>> /etc/pam.d/vsftpd --- /etc/xinetd.d/ >>> /etc/xinetd.d/vsftpd --- /etc/vsftpd/ >>> /etc/vsftpd/vsftpd.conf.sample --- /var/ --- /var/log/ --- /var/log/vsftpd/ --- /usr/ --- /usr/sbin/ >>> /usr/sbin/vsftpd --- /usr/share/ --- /usr/share/doc/ --- /usr/share/doc/vsftpd-1.0.1-r1/ >>> /usr/share/doc/vsftpd-1.0.1-r1/FAQ.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/README.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/SIZE.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/KERNEL-2.4.0-WARNING.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/REWARD.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/Changelog.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/TODO.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/INSTALL.gz --- /usr/share/doc/vsftpd-1.0.1-r1/security/ >>> /usr/share/doc/vsftpd-1.0.1-r1/security/OVERVIEW.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/security/IMPLEMENTATION.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/security/vsftpd.conf.sample.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/security/vsftpd.conf.dist.sample.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/security/DESIGN.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/security/TRUST.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/AUDIT.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/LICENSE.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/README.security.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/SPEED.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/BUGS.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/TUNING.gz >>> /usr/share/doc/vsftpd-1.0.1-r1/BENCHMARKS.gz --- /usr/share/man/ --- /usr/share/man/man5/ >>> /usr/share/man/man5/vsftpd.conf.5.gz --- /usr/share/man/man8/ >>> /usr/share/man/man8/vsftpd.8.gz --- /usr/share/vsftpd/ --- /usr/share/vsftpd/empty/ --- /home/ >>> /home/ftp/ >>> Safely unmerging already-installed instance... --- !mtime obj /usr/share/man/man8/vsftpd.8.gz --- !mtime obj /usr/share/man/man5/vsftpd.conf.5.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/security/vsftpd.conf.sample.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1- r1/security/vsftpd.conf.dist.sample.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/security/TRUST.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/security/OVERVIEW.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/security/IMPLEMENTATION.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/security/DESIGN.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/TUNING.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/TODO.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/SPEED.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/SIZE.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/REWARD.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/README.security.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/README.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/LICENSE.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/KERNEL-2.4.0-WARNING.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/INSTALL.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/FAQ.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/Changelog.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/BUGS.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/BENCHMARKS.gz --- !mtime obj /usr/share/doc/vsftpd-1.0.1-r1/AUDIT.gz --- !mtime obj /usr/sbin/vsftpd --- cfgpro obj /etc/xinetd.d/vsftpd --- cfgpro dir /etc/xinetd.d --- cfgpro obj /etc/vsftpd/vsftpd.conf.sample --- cfgpro dir /etc/vsftpd --- cfgpro obj /etc/pam.d/vsftpd --- cfgpro dir /etc/pam.d --- cfgpro obj /etc/ftpusers <<< dir /usr/share/vsftpd/empty <<< dir /usr/share/vsftpd <<< dir /home/ftp --- !empty dir /var/log/vsftpd --- !empty dir /var/log --- !empty dir /var --- !empty dir /usr/share/man/man8 --- !empty dir /usr/share/man/man5 --- !empty dir /usr/share/man --- !empty dir /usr/share/doc/vsftpd-1.0.1-r1/security --- !empty dir /usr/share/doc/vsftpd-1.0.1-r1 --- !empty dir /usr/share/doc --- !empty dir /usr/share --- !empty dir /usr/sbin --- !empty dir /usr --- !empty dir /home --- !empty dir /etc >>> original instance of package unmerged safely. >>> Regenerating /etc/ld.so.cache... >>> net-ftp/vsftpd-1.0.1-r1 merged. >>> Recording net-ftp/vsftpd in "world" favorites file... net-ftp/vsftpd selected: none protected: 1.0.1-r1 omitted: none >>> clean: No packages selected for removal. >>> Regenerating /etc/ld.so.cache... >>> Auto-cleaning packages ... >>> No outdated packages were found on your system. * GNU info directory index is up-to-date. # ls -l /usr/share/vsftpd/empty ls: /usr/share/vsftpd/empty: No such file or directory This is becouse /usr/share/vsftpd/empty is realy empty. If you can see .keep files a lot into gentoo file system. /home/.keep /var/.keep and ... I think that is feature of emerge (portage) system. And may be this is incorect feature, becouse on file system is to many .keep files: # find / -name .keep | wc 70 70 1450 Create .keep file into /usr/share/vsftpd/empty is not good idea becouse: (from man vsftp.conf) secure_chroot_dir This option should be the name of a directory which is empty. Also, the directory should not be writable by the ftp user. This directory is used as a secure chroot() jail at times vsftpd does not require filesystem access. Default: /usr/share/vsftpd/empty Rokas
# grep -A 5 pkg_postinst /usr/portage/net-ftp/vsftpd/vsftpd-1.1.2.ebuild pkg_postinst() { # empty dirs... install -m0755 -o root -g root -d ${ROOT}/home/ftp install -m0755 -o root -g root -d ${ROOT}/usr/share/vsftpd/empty install -m0755 -o root -g root -d ${ROOT}/var/log/vsftpd } newer vsftpd ebuilds fix this issue ... `ACCEPT_KEYWORDS="~x86" emerge vsftpd`
yup this is fixed in the most recent ebuilds.
when I emerged -u vsftp, it still didn't make /usr/share/vsftpd/empty - i had to do it manually. i have 1.2.0 - latest version available...