Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > gnu.bash.bug > #14971

Re: difference between /tmp and other directory for loadable mkdir?

Path csiph.com!goblin3!goblin1!goblin.stu.neva.ru!usenet.stanford.edu!not-for-mail
From Chet Ramey <chet.ramey@case.edu>
Newsgroups gnu.bash.bug
Subject Re: difference between /tmp and other directory for loadable mkdir?
Date Thu, 27 Dec 2018 14:50:23 -0500
Organization ITS, Case Western Reserve University
Lines 49
Approved bug-bash@gnu.org
Message-ID <mailman.6408.1545940237.1284.bug-bash@gnu.org> (permalink)
References <CABrM6wmWnNA0PZmdd=C5Y1-ABSJ_beHdY4V5NSzgZROUCUP5WQ@mail.gmail.com> <20181226195615.GB31843@debian.vc.shawcable.net>
Reply-To chet.ramey@case.edu
NNTP-Posting-Host lists.gnu.org
Mime-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Transfer-Encoding 8bit
X-Trace usenet.stanford.edu 1545940238 1229 208.118.235.17 (27 Dec 2018 19:50:38 GMT)
X-Complaints-To action@cs.stanford.edu
Cc chet.ramey@case.edu
To Peng Yu <pengyu.ut@gmail.com>, bug-bash <bug-bash@gnu.org>
Envelope-to bug-bash@gnu.org
X-Google-DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:reply-to:cc:subject:to:references:from:openpgp :autocrypt:organization:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=v5wRVk5VkrkCyiVbD61LU2H+/ICkiCS1FNoWXS4Ayps=; b=ovPKbrbqDovTDwW9iGjkAXSsa91h9MYaYt8wd1Gipv0F6YV5c3AhKVR15Jd8j+Q+NW /2WSQbO7maYuk7w+97VmGhG4i7SqU53G4MzS2Xf5Rv9Sf28nbhabFl3ksW74yCtUmFtV ZRO5OkdtdTC/Ka2aAotRzghr/aJnCxtTNTL+8tmKn/vR4wREs1xErBBxt7H38fP8f/5Y S1laKTKnd8E6EiG8m6RL3EB2T0cmb9bijdpM+5vaW7t8SiNjrZ7sqfvMTuQF1joxmIHi ac1MHa6uvJBRir4SdcbxQGFei7umGD6FGJT31PrY80oo1jit/P0rYOGzhbdCScxf1Ptp TFCw==
X-Gm-Message-State AA+aEWYrtfVnVSukJYU+Ccs0Q4rHaaQQDkujNNPP86J347uvEVLx0YtV xDqKT7WfT7JX330/juNWXX5NE+BFncQn5uTvFiQO2XwNnMEWcUAKBcYPa3Wut340zqxKeX+55lx XbwEG8ipEOtk=
X-Received by 2002:a81:29d5:: with SMTP id p204mr25088408ywp.285.1545940226396; Thu, 27 Dec 2018 11:50:26 -0800 (PST)
X-Google-Smtp-Source AFSGD/WHPRSs395eeu6wy766Ao5s80hSju1woTR0PEFfdhS3Xetk70Wp9GwI0eyLpCzNVCeHyjrLMQ==
X-Received by 2002:a81:29d5:: with SMTP id p204mr25088396ywp.285.1545940226132; Thu, 27 Dec 2018 11:50:26 -0800 (PST)
Openpgp preference=signencrypt
Autocrypt addr=chet.ramey@case.edu; prefer-encrypt=mutual; keydata= xsDiBEEOsGwRBACFa0A1oa71HSZLWxAx0svXzhOZNQZOzqHmSuGOG92jIpQpr8DpvgRh40Yp AwdcXb8QG1J5yGAKeevNE1zCFaA725vGSdHUyypHouV0xoWwukYO6qlyyX+2BZU+okBUqoWQ koWxiYaCSfzB2Ln7pmdys1fJhcgBKf3VjWCjd2XJTwCgoFJOwyBFJdugjfwjSoRSwDOIMf0D /iQKqlWhIO1LGpMrGX0il0/x4zj0NAcSwAk7LaPZbN4UPjn5pqGEHBlf1+xDDQCkAoZ/VqES GZragl4VqJfxBr29Ag0UDvNbUbXoxQsARdero1M8GiAIRc50hj7HXFoERwenbNDJL86GPLAQ OTGOCa4W2o29nFfFjQrsrrYHzVtyA/9oyKvTeEMJ7NA3VJdWcmn7gOu0FxEmSNhSoV1T4vP2 1Wf7f5niCCRKQLNyUy0wEApQi4tSysdz+AbgAc0b/bHYVzIf2uO2lIEZQNNt+3g2bmXgloWm W5fsm/di50Gm1l1Na63d3RZ00SeFQos6WEwLUHEB0yp6KXluXLLIZitEJM0aQ2hldCBSYW1l eSA8Y2hldEBjd3J1LmVkdT7CYQQTEQIAIQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAUCQ+La kQIZAQAKCRC7WGnwZOp0q9rGAJ4sRGLmlF8klZTH75z7jyQScpU6aACeNMahjWIhumt4u96d 9mdMJqlabVnOwE0EQQ6wbxAEAJCukwDigRDPhAuI+lf+6P64lWanIFOXIndqhvU13cDbQ/Wt 5LwPzm2QTvd7F+fcHOgZ8KOFScbDpjJaRqwIybMTcIN0B2pBLX/C10W1aY+cUrXZgXUGVISE MmpaP9v02auToo7XXVEHC+XLO9IU7/xaU98FL69l6/K4xeNSBRM/AAMHA/wNAmRBpcyK0+Vg gZ5esQaIP/LyolAm2qwcmrd3dZi+g24s7yjV0EUwvRP7xHRDQFgkAo6++QbuecU/J90lxrVn QwucZmfz9zgWDkT/MpfB/CNRSKLFjhYq2yHmHWT6vEjw9Ry/hF6Pc0oh1a62USdfaKAiim0n VxxQmPmiRvtCmcJJBBgRAgAJBQJBDrBvAhsMAAoJELtYafBk6nSr43AAn2ZZFQg8Gs/zUzvX Mt7evaFqVTzcAJ0cHtKpP1i/4H4R9+OsYeQdxxWxTQ==
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1
In-Reply-To <20181226195615.GB31843@debian.vc.shawcable.net>
Content-Language en-US
X-Junkmail-Status score=7/90, host=mpv4-2015.case.edu
X-Junkmail-PrAS-Raw score=7/90, refid=2.7.2:2018.12.27.192416:17:7.944, ip=, rules=__YOUTUBE_RCVD, __X_GOOGLE_DKIM_SIGNATURE, __HAS_REPLYTO, __HAS_CC_HDR, __SUBJ_REPLY, __BOUNCE_CHALLENGE_SUBJ, __BOUNCE_NDR_SUBJ_EXEMPT, __TO_MALFORMED_2, __TO_NAME, __TO_NAME_DIFF_FROM_ACC, __REFERENCES, __HAS_FROM, FROM_EDU_TLD, __HAS_MSGID, __SANE_MSGID, DATE_TZ_NA, __USER_AGENT, __MOZILLA_USER_AGENT, __MIME_VERSION, __IN_REP_TO, __CT, __CT_TEXT_PLAIN, __CTE, __REPLYTO_SAMEAS_FROM_ADDY, __REPLYTO_SAMEAS_FROM_ACC, __FROM_DOMAIN_IN_ANY_CC1, __FROM_DOMAIN_IN_ANY_CC2, __REPLYTO_SAMEAS_FROM_DOMAIN, __ANY_URI, __URI_WITH_PATH, __URI_NO_WWW, __CP_URI_IN_BODY, __FRAUD_MONEY_CURRENCY_DOLLAR, __SUBJ_ALPHA_NEGATE, __MULTIPLE_URI_TEXT, __URI_IN_BODY, __URI_NOT_IMG, __FORWARDED_MSG, __NO_HTML_TAG_RAW, BODY_SIZE_1900_1999, BODYTEXTP_SIZE_3000_LESS, __MIME_TEXT_P1, __MIME_TEXT_ONLY, __URI_NS, HTML_00_01, HTML_00_10, __FRAUD_MONEY_CURRENCY, BODY_SIZE_5000_LESS, [TRUNCATED], so=2010-03-03 19:42:08, dmn=2016-08-03-0138
X-detected-operating-system by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] [fuzzy]
X-Received-From 129.22.103.195
X-BeenThere bug-bash@gnu.org
X-Mailman-Version 2.1.21
Precedence list
List-Id Bug reports for the GNU Bourne Again SHell <bug-bash.gnu.org>
List-Unsubscribe <https://lists.gnu.org/mailman/options/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=unsubscribe>
List-Archive <http://lists.gnu.org/archive/html/bug-bash/>
List-Post <mailto:bug-bash@gnu.org>
List-Help <mailto:bug-bash-request@gnu.org?subject=help>
List-Subscribe <https://lists.gnu.org/mailman/listinfo/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=subscribe>
Xref csiph.com gnu.bash.bug:14971

Show key headers only | View raw


On 12/26/18 2:56 PM, Eduardo A. Bustamante López wrote:
> On Wed, Dec 26, 2018 at 12:40:09PM -0600, Peng Yu wrote:
>> Hi,
>>
>> I can not mkdir -p . in /tmp/ via the loadable mkdir. What is the
>> difference between /tmp/ and other directories? I am on Mac OS X. Is
>> this a bug in mkdir?

The difference between /tmp and your home directory, at least in this
case, is that /tmp has the sticky bit (S_ISVTX) set.


> mkdir("/tmp/", 0777)                    = -1 EEXIST (File exists)
> stat("/tmp/", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
> +++ exited with 0 +++
> 
> 
> My guess is that the "problem" has to do with how bash computes the `parent_mode':
> 
> dualbus@debian:~/src/gnu/bash$ cat -n examples/loadables/mkdir.c | sed -n '106,114p'
>    106	  /* Make the new mode */
>    107	  original_umask = umask (0);
>    108	  umask (original_umask);
>    109	
>    110	  nmode = (S_IRWXU | S_IRWXG | S_IRWXO) & ~original_umask;
>    111	  parent_mode = nmode | (S_IWUSR|S_IXUSR);	/* u+wx */
>    112	
>    113	  /* Adjust new mode based on mode argument */
>    114	  nmode &= omode;

That's the POSIX algorithm for creating the intermediate directories and
setting the mode of the final created directory:

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/mkdir.html#tag_20_79

but the code should probably perform the mkdir and chmod separately, as the
text suggests.

In any event, that's not the problem. The existing code tries to chmod the
directory even if it already exists, and doesn't take the non-permission
bits (SVTX/SUID/SGID) into account, as POSIX says it shouldn't. It should
probably attempt the chmod only if the user has specified a mode using
`-m mode'.

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
		 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/

Back to gnu.bash.bug | Previous | Next | Find similar | Unroll thread


Thread

Re: difference between /tmp and other directory for loadable mkdir? Chet Ramey <chet.ramey@case.edu> - 2018-12-27 14:50 -0500

csiph-web