Interesting permissions difference on NanoBSD build

Karl Denninger karl at denninger.net
Fri Jun 16 15:53:01 UTC 2017



On 6/16/2017 09:55, Karl Denninger wrote:
> On 6/16/2017 08:21, Karl Denninger wrote:
>> On 6/16/2017 07:52, Guido Falsi wrote:
>>> On 06/16/17 14:25, Karl Denninger wrote:
>>>> I've recently started playing with the "base" NanoBSD scripts and have
>>>> run into an interesting issue.
>>> [...]
>>>> Note the missing "r" bit for "other" in usr and etc directories -- and
>>>> the missing "x" bit (at minimum) for the root!  The same is carried down
>>>> to "local" under usr:
>>>>
>>>> root at NewFS:/pics/Crochet-work-AMD/obj/_.w # ls -al usr
>>>> total 134
>>>> drwxr-x--x  12 root  wheel   12 Jun 15 17:10 .
>>>> drwxr-x---  18 root  wheel   24 Jun 15 17:10 ..
>>>> drwxr-xr-x   2 root  wheel  497 Jun 15 17:09 bin
>>>> drwxr-xr-x  52 root  wheel  327 Jun 15 17:10 include
>>>> drwxr-xr-x   8 root  wheel  655 Jun 15 17:10 lib
>>>> drwxr-xr-x   4 root  wheel  670 Jun 15 17:09 lib32
>>>> drwxr-xr-x   5 root  wheel    5 Jun 15 17:10 libdata
>>>> drwxr-xr-x   7 root  wheel   70 Jun 15 17:10 libexec
>>>> drwxr-x--x  10 root  wheel   11 Jun 15 17:10 local
>>>> drwxr-xr-x   2 root  wheel  294 Jun 15 17:08 sbin
>>>> drwxr-xr-x  31 root  wheel   31 Jun 15 17:10 share
>>>> drwxr-xr-x  14 root  wheel   17 Jun 15 17:10 tests
>>>> root at NewFS:/pics/Crochet-work-AMD/obj/_.w #
>>> I have no idea why this is happening on your system but I'm not
>>> observing it here:
>>>
>>>> ls -al usr
>>> total 85
>>> drwxr-xr-x   9 root  wheel    9 Jun 15 13:32 .
>>> drwxr-xr-x  22 root  wheel   29 Jun 15 13:32 ..
>>> drwxr-xr-x   2 root  wheel  359 Jun 15 13:32 bin
>>> drwxr-xr-x   4 root  wheel  446 Jun 15 13:32 lib
>>> drwxr-xr-x   3 root  wheel    3 Jun 15 13:32 libdata
>>> drwxr-xr-x   5 root  wheel   47 Jun 15 13:32 libexec
>>> drwxr-xr-x  12 root  wheel   13 Jun 15 13:32 local
>>> drwxr-xr-x   2 root  wheel  218 Jun 15 13:32 sbin
>>> drwxr-xr-x  17 root  wheel   17 Jun 15 13:32 share
>>>
>>>
>>> and I get (almost) the same on the installed nanobsd system:
>>>> ls -al usr
>>> total 24
>>> drwxr-xr-x   9 root  wheel    512 Jun 15 13:32 .
>>> drwxr-xr-x  23 root  wheel    512 Jun 15 13:34 ..
>>> drwxr-xr-x   2 root  wheel   6144 Jun 15 13:32 bin
>>> drwxr-xr-x   4 root  wheel  10752 Jun 15 13:32 lib
>>> drwxr-xr-x   3 root  wheel    512 Jun 15 13:32 libdata
>>> drwxr-xr-x   5 root  wheel   1024 Jun 15 13:32 libexec
>>> drwxr-xr-x  12 root  wheel    512 Jun 15 13:32 local
>>> drwxr-xr-x   2 root  wheel   4096 Jun 15 13:32 sbin
>>> drwxr-xr-x  17 root  wheel    512 Jun 15 13:32 share
>>>
>>> The machine I'm building the NanoBSD image on is running head r318959,
>>> and is running ZFS, while the NanoBSD system I've built is tracking
>>> 11-STABLE and is at r319971 at present, so a BETA1.
>>>
>>> Could you report version information too? maybe it's a problem present
>>> on head NanoBSD scripts?
>> FreeBSD 11.0-STABLE #15 r312669M: Mon Jan 23 14:01:03 CST 2017    
>> karl at NewFS.denninger.net:/usr/obj/usr/src/sys/KSD-SMP
>>
>> I also build using Crochet against both /usr/src (my "primary" source
>> repo, which is on the rev noted here) and against a second one (-HEAD),
>> which I need to use for the RPI3.  Neither winds up with this sort of
>> permission issue.
>>
>> The obj directory is on /pics/Crochet-Work-AMD, which is a zfs
>> filesystem mounted off a "scratch" SSD.
>>
>> The problem appears to stem from the creation of "_.w" and since
>> directory permissions are "normally" inherited it promulgates from there
>> unless an explicit permission set occurs.  Yet I see nothing that would
>> create the world directory with anything other than the umask at the
>> time it runs.
>>
>> I *am* running this from "batch" -- perhaps that's where the problem is
>> coming from?  I'll try adding a "umask 022" to the nanobsd.sh script at
>> the top and see what that does.
> Nope.
>
> It's something in the installworld subset; I put a stop in after the
> clean/create world directory and I have a 0755 permission mask on the
> (empty) directory.
>
> Hmmm...
>
> I do not know where this is coming from now but this test implies that
> it's the "installworld" action that causes it.
>
> root at NewFS:/pics/Crochet-work-AMD/obj # ls -al
>
> total 2176760
> drwxr-xr-x  5 root  wheel          24 Jun 16 09:41 .
> drwxr-xr-x  3 root  wheel           3 Jun 16 08:25 ..
> -rw-r--r--  1 root  wheel     7658918 Jun 16 09:22 _.bk
> -rw-r--r--  1 root  wheel    53768368 Jun 16 09:15 _.bw
> -rw-r--r--  1 root  wheel         200 Jun 16 09:25 _.cust.cust_comconsole
> -rw-r--r--  1 root  wheel         733 Jun 16 09:25 _.cust.cust_freebsd
> -rw-r--r--  1 root  wheel         550 Jun 16 09:25 _.cust.cust_install_files
> -rw-r--r--  1 root  wheel       16958 Jun 16 09:25 _.cust.cust_pkgng
> -rw-r--r--  1 root  wheel     2566610 Jun 16 09:26 _.di
> -rw-r--r--  1 root  wheel  6000000000 Jun 16 09:26 _.disk.full
> -rw-r--r--  1 root  wheel  2711020032 Jun 16 09:26 _.disk.image
> -rw-r--r--  1 root  wheel          59 Jun 16 09:25 _.dl
> -rw-r--r--  1 root  wheel       59521 Jun 16 09:25 _.du
> -rw-r--r--  1 root  wheel        2041 Jun 16 08:25 _.env
> -rw-r--r--  1 root  wheel       75783 Jun 16 09:24 _.etc
> -rw-r--r--  1 root  wheel         148 Jun 16 09:25 _.fdisk
> -rw-r--r--  1 root  wheel      215692 Jun 16 09:25 _.ik
> -rw-r--r--  1 root  wheel     4085907 Jun 16 09:24 _.iw
> drwxr-xr-x  2 root  wheel           2 Jun 16 09:25 _.mnt
> -rw-r--r--  1 root  wheel     2676015 Jun 16 09:25 _.mtree
> drwxr-xr-x  2 root  wheel           2 Jun 16 09:41 _.w
> -rw-r--r--  1 root  wheel          22 Jun 16 08:25 make.conf.build
> -rw-r--r--  1 root  wheel          22 Jun 16 09:22 make.conf.install
> drwxr-xr-x  3 root  wheel           3 Jun 16 08:25 usr
>
> root at NewFS:/usr/src/tools/tools/nanobsd # sh nanobsd.sh -b -n -c
> PCEngines.conf
> 00:00:00 ### Exporting NanoBSD variables
> 00:00:00 ### Setting variable: MAKEOBJDIRPREFIX="/pics/Crochet-work-AMD/obj"
> 00:00:00 ### Setting variable: NANO_ARCH="amd64"
> 00:00:00 ### Setting variable: NANO_CODESIZE="0"
> 00:00:00 ### Setting variable: NANO_CONFSIZE="125000"
> 00:00:00 ### Setting variable: NANO_CUSTOMIZE=" cust_comconsole
> cust_pkgng cust_install_files cust_freebsd"
> 00:00:00 ### Setting variable: NANO_DATASIZE="1000000"
> 00:00:00 ### Setting variable: NANO_DRIVE="mmcsd0"
> 00:00:00 ### Setting variable: NANO_HEADS="16"
> 00:00:00 ### Setting variable: NANO_IMAGES="2"
> 00:00:00 ### Setting variable: NANO_IMGNAME="_.disk.full"
> 00:00:00 ### Setting variable: NANO_MAKE="make"
> 00:00:00 ### Setting variable:
> NANO_MAKE_CONF_BUILD="/pics/Crochet-work-AMD/obj/make.conf.build"
> 00:00:00 ### Setting variable:
> NANO_MAKE_CONF_INSTALL="/pics/Crochet-work-AMD/obj/make.conf.install"
> 00:00:00 ### Setting variable: NANO_MEDIASIZE="11718750"
> 00:00:00 ### Setting variable: NANO_NAME="pcengines"
> 00:00:00 ### Setting variable: NANO_NEWFS="-b 4096 -f 512 -i 8192 -U"
> 00:00:00 ### Setting variable: NANO_OBJ="/pics/Crochet-work-AMD/obj"
> 00:00:00 ### Setting variable: NANO_PMAKE="make -j 8"
> 00:00:00 ### Setting variable: NANO_SECTS="63"
> 00:00:00 ### Setting variable: NANO_SRC="/usr/src"
> 00:00:00 ### Setting variable: NANO_TOOLS="/usr/src/tools/tools/nanobsd"
> 00:00:00 ### Setting variable:
> NANO_WORLDDIR="/pics/Crochet-work-AMD/obj/_.w"
> 00:00:00 ### Setting variable: NANO_BOOT0CFG="-o packet -s 1 -m 3"
> 00:00:00 ### Setting variable: NANO_BOOTLOADER="boot/boot0sio"
> 00:00:00 ### Setting variable: NANO_LABEL=""
> 00:00:00 ### Setting variable: NANO_MODULES="default"
> 00:00:00 ### Setting variable: NANO_NOPRIV_BUILD=""
> 00:00:00 ### Setting variable: NANO_METALOG=""
> 00:00:00 ### Setting variable: NANO_LOG="/pics/Crochet-work-AMD/obj"
> 00:00:00 ### Setting variable: SRCCONF="/dev/null"
> 00:00:00 ### Setting variable: SRC_ENV_CONF="/dev/null"
> 00:00:00 # NanoBSD image pcengines build starting
> 00:00:00 ## run early customize scripts
> 00:00:00 ## Skipping buildworld (as instructed)
> 00:00:00 ## Skipping buildkernel (as instructed)
> 00:00:00 ## Clean and create world directory
> (/pics/Crochet-work-AMD/obj/_.w)
> STOP STOP STOP
I found the problem -- the customize file function that I was using was
picking up the directory tree permissions in the source and applying it
across the board; the error was in there.

Disregard; the script is ok; this is a potential mine field in its use,
but it's one that falls under "user error" in terms of category :-)

-- 
Karl Denninger
karl at denninger.net <mailto:karl at denninger.net>
/The Market Ticker/
/[S/MIME encrypted email preferred]/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2993 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20170616/a38f0f45/attachment.bin>


More information about the freebsd-stable mailing list