Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 May 2013 23:58:21 +0200
From:      Simon Wright <simon.wright@gmx.net>
To:        freebsd-ports@freebsd.org
Subject:   Re: Why does Samba requires 777 permissions on /tmp
Message-ID:  <519A9C7D.3040101@gmx.net>
In-Reply-To: <20130520143853.79242743@raksha.tavi.co.uk>
References:  <CAFzAeSdgRotc34%2BeyfVHZBA-QGUCWJ1MZDYw1ysRxEV9MhG2BQ@mail.gmail.com> <8661yedqyy.wl%poyopoyo@puripuri.plala.or.jp> <CAFzAeSe4YTdUiqcxSDUGDf6fQEeDK_sDVYym1hsck8fms8kJqA@mail.gmail.com> <20130520143853.79242743@raksha.tavi.co.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On 20/05/2013 15:38, Bob Eager wrote:
> On Mon, 20 May 2013 08:03:09 -0500
> sindrome <sindrome@gmail.com> wrote:
>
> What I think is happening is that portupgrade is building and running
> shell scripts in /tmp. It's running them with (in ruby):
>
>    system('/tmp/script')             [roughly]
>
> The ruby runtime is checking the *path-to-the-command* and THAT is what
> it's complaining about.
>
> Try setting PKG_TMPDIR (in pkgtools.conf) to some suitable non world
> writable temporary directory.
>
> I have an older ports tree on this machine or I'd try it myself. I had
> to download the latest sources to check all this,

Trying to summarise what I've tested here with the results.

My PKG_TMPDIR and TMPDIR are set to /var/tmp:

pkgtools.conf:

   ENV['TMPDIR'] ||= '/var/tmp'
   ENV['PKG_TMPDIR'] ||= '/var/tmp'
   ENV['PORTSDIR'] ||= '/usr/ports'
   ENV['PACKAGES'] ||= ENV['PORTSDIR'] + '/packages'

from /usr/local/etc/sudoers:
# Uncomment if needed to preserve environmental variables related to the
# FreeBSD pkg_* utilities and fetch.
Defaults        env_keep += "PKG_PATH PKG_DBDIR PKG_TMPDIR TMPDIR 
PACKAGEROOT PACKAGESITE PKGDIR FTP_PASSIVE_MODE"

[simon@vmserver04 ~]$ ls -ld /var/tmp
drwxrwxr-t  9 root  wheel  33280 May 20 23:02 /var/tmp/

Note: /var/tmp is not world writeable

[simon@vmserver04 ~]$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/local/scripts:

root@vmserver04:/root # echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin

I run portupgrade via sudo but both $PATH's show no /tmp or .

[simon@vmserver04 ~]$ ruby -v
ruby 1.8.7 (2012-10-12 patchlevel 371) [amd64-freebsd9]

portupgrade-2.4.10.5_1,2 FreeBSD ports/packages administration and 
management tool s

Other (not likely) relevant stuff:
- I have /usr/ports mounted rw with NFS
- I have the packages directory mounted rw with NFS and amd then 
redefine $PACKAGES to point to the mount point
This has been working for several years with no issues

[simon@vmserver04 ~]$ sudo portupgrade -v portupgrade*
--->  Reading default options: -v -D -l 
/var/tmp/portupgrade.results_20130520-22:56:25 -L 
/var/tmp/portupgrade/%s::%s.log
--->  Session started at: Mon, 20 May 2013 22:56:26 +0200
** None has been installed or upgraded.
--->  Saving the results to 
'/var/tmp/portupgrade.results_20130520-22:56:25'
/usr/local/lib/ruby/site_ruby/1.8/pkgtools/pkgtools.rb:483: warning: 
Insecure world writable dir /tmp/ in PATH, mode 041777

Still the complaint about /tmp/

[simon@vmserver04 ~]$ sudo chmod 1775 /tmp

[simon@vmserver04 ~]$ ls -ld /tmp
drwxrwxr-t  9 root  wheel  1024 May 20 23:16 /tmp/

[simon@vmserver04 ~]$ sudo portupgrade -v portupgrade*
--->  Reading default options: -v -D -l 
/var/tmp/portupgrade.results_20130520-23:16:07 -L 
/var/tmp/portupgrade/%s::%s.log
--->  Session started at: Mon, 20 May 2013 23:16:07 +0200
** None has been installed or upgraded.
--->  Saving the results to '/var/tmp
/portupgrade.results_20130520-23:16:07'
--->  Session ended at: Mon, 20 May 2013 23:16:08 +0200 (consumed 
00:00:00)

No more complaint.

I can't read the portupgrade code well enough to see what it's doing 
with the script, but if Bob is right that Ruby is running the 
portupgrade commands from /tmp then the error is within the checks 
in Ruby which is saying the 777 permission on /tmp is not 
acceptable, 775 *is* acceptable. Which is strange since surely then 
everyone with 777 permissions on /tmp would be seeing this message? 
Does this get us any further?

Thanks for all the input, it is appreciated.

Cheers

Simon.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?519A9C7D.3040101>