Looks to me that while 'uid' is 1000 uid=1000(darkness) gid=1000(darkness) groups=1000(darkness),0(root)
this is still root's env when run from Mesos (also, weird that groups contains 0(root)): USER=root again - not sure how we su to a different user, but this usually happens if one does `su darkness` (instead of `su - darkness`) from the shell, at any rate. *Marco Massenzio* *Distributed Systems Engineer* On Mon, May 11, 2015 at 6:54 AM, John Omernik <[email protected]> wrote: > Paul: I checked in multiple places and I don't see rootsquash being used. > I am using the MapR NFS server, and I do not believe that is a common > option in the default setup ( I will follow up closer on that). > > Adam and Maxime: So I included the output of both id (instead of whoami) > and env (as seen below) and I believe that your ideas may be getting > somewhere. There are a number of things that strike me as odd in the > outputs, and I'd like your thoughts on them. First of all, remember that > the permissions on the folders are 775 right now, so with the primary group > set (which it appears to be based on id) and the user set, it still should > have write access. That said, the SUed process doesn't have any of the > other groups (which I want to test if any of those controls access, > especially with MapR). At risk of exposing to much information about my > test network in a public forum, I left all the details in the ENV to see if > there are things other may see that could be causing me issues. > > Thanks for the replies so far! > > > > > > *New Script:* > > #!/bin/bash > > echo "Writing id information to stderr for one stop logging" 1>&2 > > id 1>&2 > > > echo "" 1>&2 > > > echo "Printing out the env command to std err for one stop loggins" 1>&2 > > env 1>&2 > > > mkdir /mapr/brewpot/mesos/storm/test/test1 > > touch /mapr/brewpot/mesos/storm/test/test1/testing.go > > > > > > *Run within Mesos:* > > I0511 08:41:02.804448 8048 exec.cpp:132] Version: 0.21.0 > I0511 08:41:02.814324 8059 exec.cpp:206] Executor registered on slave > 20150505-145508-1644210368-5050-8608-S2 > Writing id information to stderr for one stop logging > uid=1000(darkness) gid=1000(darkness) groups=1000(darkness),0(root) > > Printing out the env command to std err for one stop loggins > LIBPROCESS_IP=192.168.0.98 > HOST=hadoopmapr3.brewingintel.com > SHELL=/bin/bash > TERM=unknown > PORT_10005=31783 > > MESOS_DIRECTORY=/tmp/mesos/slaves/20150505-145508-1644210368-5050-8608-S2/frameworks/20150302-094409-1644210368-5050-2134-0003/executors/permtest.5f822976-f7e3-11e4-a22d-56847afe9799/runs/e53dc010-dd3c-4993-8f39-f8b532e5cf8b > PORT0=31783 > MESOS_TASK_ID=permtest.5f822976-f7e3-11e4-a22d-56847afe9799 > USER=root > LD_LIBRARY_PATH=:/usr/local/lib > SUDO_USER=darkness > MESOS_EXECUTOR_ID=permtest.5f822976-f7e3-11e4-a22d-56847afe9799 > SUDO_UID=1000 > USERNAME=root > > PATH=/home/darkness:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin > MAIL=/var/mail/root > > PWD=/opt/mapr/mesos/tmp/slave/slaves/20150505-145508-1644210368-5050-8608-S2/frameworks/20150302-094409-1644210368-5050-2134-0003/executors/permtest.5f822976-f7e3-11e4-a22d-56847afe9799/runs/e53dc010-dd3c-4993-8f39-f8b532e5cf8b > MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos-0.21.0.so > MESOS_NATIVE_LIBRARY=/usr/local/lib/libmesos-0.21.0.so > LANG=en_US.UTF-8 > PORTS=31783 > MESOS_SLAVE_PID=slave(1)@192.168.0.98:5051 > MESOS_FRAMEWORK_ID=20150302-094409-1644210368-5050-2134-0003 > MESOS_CHECKPOINT=1 > SUDO_COMMAND=/usr/local/bin/mesos daemon.sh mesos-slave --master= > 192.168.0.98:5050 --ip=192.168.0.98 > --log_dir=/opt/mapr/mesos/tmp/slave_log/ --containerizers=docker,mesos > --gc_delay=600mins --disk_watch_interval=60secs > HOME=/home/darkness > SHLVL=2 > LIBPROCESS_PORT=0 > MARATHON_APP_ID=/permtest > PYTHONPATH=:/usr/local/libexec/mesos/python > MARATHON_APP_VERSION=2015-05-11T13:41:04.218Z > LOGNAME=root > MESOS_SLAVE_ID=20150505-145508-1644210368-5050-8608-S2 > PORT=31783 > SUDO_GID=1000 > MESOS_RECOVERY_TIMEOUT=15mins > _=/usr/bin/env > mkdir: cannot create directory `/mapr/brewpot/mesos/storm/test/test1': > Permission denied > touch: cannot touch `/mapr/brewpot/mesos/storm/test/test1/testing.go': No > such file or directory > > > *Run from command line:* > > Writing id information to stderr for one stop logging > uid=1000(darkness) gid=1000(darkness) > groups=1000(darkness),4(adm),24(cdrom),27(sudo),30(dip),42(shadow),46(plugdev),111(lpadmin),112(sambashare),700(mapr),2000(brewclub),2001(lcusers) > > Printing out the env command to std err for one stop loggins > SHELL=/bin/bash > TERM=xterm-256color > > XDG_SESSION_COOKIE=fd12ce903630f14654f11d12000006ce-1431349941.139006-807917506 > SSH_CLIENT=192.168.0.186 57204 22 > SSH_TTY=/dev/pts/0 > USER=darkness > > LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36: > > PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/scala/bin > MAIL=/var/mail/darkness > PWD=/mnt > LANG=en_US.UTF-8 > NODE_PATH=/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript > HOME=/home/darkness > SHLVL=2 > LOGNAME=darkness > SSH_CONNECTION=192.168.0.186 57204 192.168.0.100 22 > LESSOPEN=| /usr/bin/lesspipe %s > LESSCLOSE=/usr/bin/lesspipe %s %s > _=/usr/bin/env > > > On Mon, May 11, 2015 at 1:05 AM, Maxime Brugidou < > [email protected]> wrote: > >> Mesos does not set the groups of the process correctly. There is a JIRA >> ticket for that. It only set the gid. I believe that this could explain the >> issue if your user is in a specific NFS group to be able go write. >> >> See >> https://issues.apache.org/jira/plugins/servlet/mobile#issue/MESOS-719 >> On May 11, 2015 3:51 AM, "Paul Brett" <[email protected]> wrote: >> >>> Can you check on the NFS server to see if the filesystem has been >>> exported with the rootsquash option? That's a commonly used option which >>> converts root uid on NFS clients to nobody on the server. >>> >>> -- Paul Brett >>> On May 10, 2015 5:15 PM, "Adam Bordelon" <[email protected]> wrote: >>> >>>> Go ahead and run `env` in your script too, and see if there are any >>>> interesting differences when run via Marathon vs. directly. >>>> Maybe you're running in a different shell? >>>> >>>> On Sun, May 10, 2015 at 2:21 PM, John Omernik <[email protected]> wrote: >>>> >>>>> I believe the slave IS running as root. FWIW when I ran the script >>>>> from above as root, it did work as intended (created the files on the NFS >>>>> share). >>>>> >>>>> On Sun, May 10, 2015 at 9:08 AM, Dick Davies <[email protected]> >>>>> wrote: >>>>> >>>>>> Any idea what user mesos is running as? This could just be a >>>>>> filesystem permission >>>>>> thing (ISTR last time I used NFS mounts, they had a 'root squash' >>>>>> option that prevented >>>>>> local root from writing to the NFS mount). >>>>>> >>>>>> On 9 May 2015 at 22:13, John Omernik <[email protected]> wrote: >>>>>> > I am not specifying isolators. The Default? :) Is that a per slave >>>>>> setting? >>>>>> > >>>>>> > On Sat, May 9, 2015 at 3:33 PM, James DeFelice < >>>>>> [email protected]> >>>>>> > wrote: >>>>>> >> >>>>>> >> What isolators are you using? >>>>>> >> >>>>>> >> On Sat, May 9, 2015 at 3:48 PM, John Omernik <[email protected]> >>>>>> wrote: >>>>>> >>> >>>>>> >>> Marco... great idea... thank you. I just tried it and it worked >>>>>> when I >>>>>> >>> had a /mnt/permtesting with the same permissions. So it appears >>>>>> something >>>>>> >>> to do with NFS and Mesos (Remember I tested just NFS that worked >>>>>> fine, it's >>>>>> >>> the combination that is causing this). >>>>>> >>> >>>>>> >>> On Sat, May 9, 2015 at 1:09 PM, Marco Massenzio < >>>>>> [email protected]> >>>>>> >>> wrote: >>>>>> >>>> >>>>>> >>>> Out of my own curiousity (sorry, I have no fresh insights into >>>>>> the issue >>>>>> >>>> here) did you try to run the script and write to a non-NFS >>>>>> mounted >>>>>> >>>> directory? (same ownership/permissions) >>>>>> >>>> >>>>>> >>>> This way we could at least find out whether it's something >>>>>> related to >>>>>> >>>> NFS, or a more general permission-related issue. >>>>>> >>>> >>>>>> >>>> Marco Massenzio >>>>>> >>>> Distributed Systems Engineer >>>>>> >>>> >>>>>> >>>> On Sat, May 9, 2015 at 5:10 AM, John Omernik <[email protected]> >>>>>> wrote: >>>>>> >>>>> >>>>>> >>>>> Here is the testing I am doing. I used a simple script >>>>>> (run.sh) It >>>>>> >>>>> writes the user it is running as to stderr (so it's the same >>>>>> log as the >>>>>> >>>>> errors from file writing) and then tries to make a directory in >>>>>> nfs, and >>>>>> >>>>> then touch a file in nfs. Note: This script directly run >>>>>> works on every >>>>>> >>>>> node. You can see the JSON I used in marathon, and in the >>>>>> sandbox results, >>>>>> >>>>> you can see the user is indeed darkness and the directory >>>>>> cannot be created. >>>>>> >>>>> However when directly run, it the script, with the same user, >>>>>> creates the >>>>>> >>>>> directory with no issue. Now, I realize this COULD still be a >>>>>> NFS quirk >>>>>> >>>>> here, however, this testing points at some restriction in how >>>>>> marathon kicks >>>>>> >>>>> off the cmd. Any thoughts on where to look would be very >>>>>> helpful! >>>>>> >>>>> >>>>>> >>>>> John >>>>>> >>>>> >>>>>> >>>>> >>>>>> >>>>> >>>>>> >>>>> Script: >>>>>> >>>>> >>>>>> >>>>> #!/bin/bash >>>>>> >>>>> echo "Writing whoami to stderr for one stop logging" 1>&2 >>>>>> >>>>> whoami 1>&2 >>>>>> >>>>> mkdir /mapr/brewpot/mesos/storm/test/test1 >>>>>> >>>>> touch /mapr/brewpot/mesos/storm/test/test1/testing.go >>>>>> >>>>> >>>>>> >>>>> >>>>>> >>>>> >>>>>> >>>>> Run Via Marathon >>>>>> >>>>> >>>>>> >>>>> >>>>>> >>>>> { >>>>>> >>>>> "cmd": "/mapr/brewpot/mesos/storm/run.sh", >>>>>> >>>>> "cpus": 1.0, >>>>>> >>>>> "mem": 1024, >>>>>> >>>>> "id": "permtest", >>>>>> >>>>> "user": "darkness", >>>>>> >>>>> "instances": 1 >>>>>> >>>>> } >>>>>> >>>>> >>>>>> >>>>> >>>>>> >>>>> I0509 07:02:52.457242 9562 exec.cpp:132] Version: 0.21.0 >>>>>> >>>>> I0509 07:02:52.462700 9570 exec.cpp:206] Executor registered >>>>>> on slave >>>>>> >>>>> 20150505-145508-1644210368-5050-8608-S0 >>>>>> >>>>> Writing whoami to stderr for one stop logging >>>>>> >>>>> darkness >>>>>> >>>>> mkdir: cannot create directory >>>>>> `/mapr/brewpot/mesos/storm/test/test1': >>>>>> >>>>> Permission denied >>>>>> >>>>> touch: cannot touch >>>>>> `/mapr/brewpot/mesos/storm/test/test1/testing.go': >>>>>> >>>>> No such file or directory >>>>>> >>>>> >>>>>> >>>>> >>>>>> >>>>> Run Via Shell: >>>>>> >>>>> >>>>>> >>>>> >>>>>> >>>>> $ /mapr/brewpot/mesos/storm/run.sh >>>>>> >>>>> Writing whoami to stderr for one stop logging >>>>>> >>>>> darkness >>>>>> >>>>> darkness@hadoopmapr1:/mapr/brewpot/mesos/storm$ ls ./test/ >>>>>> >>>>> test1 >>>>>> >>>>> darkness@hadoopmapr1:/mapr/brewpot/mesos/storm$ ls >>>>>> ./test/test1/ >>>>>> >>>>> testing.go >>>>>> >>>>> >>>>>> >>>>> >>>>>> >>>>> On Sat, May 9, 2015 at 3:14 AM, Adam Bordelon < >>>>>> [email protected]> >>>>>> >>>>> wrote: >>>>>> >>>>>> >>>>>> >>>>>> I don't know of anything inside of Mesos that would prevent >>>>>> you from >>>>>> >>>>>> writing to NFS. Maybe examine the environment variables set >>>>>> when running as >>>>>> >>>>>> that user. Or are you running in a Docker container? Those can >>>>>> have >>>>>> >>>>>> additional restrictions. >>>>>> >>>>>> >>>>>> >>>>>> On Fri, May 8, 2015 at 4:44 PM, John Omernik <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> >>>>>> >>>>>>> I am doing something where people may recommend against my >>>>>> course of >>>>>> >>>>>>> action. However, I am curious if there is "a way" basically I >>>>>> have a process >>>>>> >>>>>>> being kicked off in marathon that is trying to write to a nfs >>>>>> location. The >>>>>> >>>>>>> permissions of the user running the task and the nfs location >>>>>> are good. So >>>>>> >>>>>>> what component of mesos or marathon is keeping me from >>>>>> writing here ? ( I >>>>>> >>>>>>> am getting permission denied). Is this one of those things >>>>>> that is just not >>>>>> >>>>>>> allowed, or is there an option to pass to marathon to allow >>>>>> this? Thanks ! >>>>>> >>>>>>> >>>>>> >>>>>>> -- >>>>>> >>>>>>> Sent from my iThing >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>>>> >>>> >>>>>> >>> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> -- >>>>>> >> James DeFelice >>>>>> >> 585.241.9488 (voice) >>>>>> >> 650.649.6071 (fax) >>>>>> > >>>>>> > >>>>>> >>>>> >>>>> >>>> >

