From: Corinna Vinschen <corinna-cygwin@cygwin.com>
To: cygwin@cygwin.com
Subject: Re: SMBFS mount's file cannot be made executable
Date: Tue, 19 Nov 2024 21:54:44 +0100 [thread overview]
Message-ID: <Zzz7FJim9kIiqjyy@calimero.vinschen.de> (raw)
In-Reply-To: <20241119175806.321cdb7e65a727a2eb58c8a6@nifty.ne.jp>
On Nov 19 17:58, Takashi Yano via Cygwin wrote:
> On Mon, 18 Nov 2024 17:26:12 +0100
> Corinna Vinschen wrote:
> > We can safely assume that the current user is already authorized on the
> > SMB server. So... shouldn't AuthzInitializeResourceManager be
> > sufficient and the code from class authz_ctx already does what we want?
> > We may just have to use in in place of calling NtCheckAccess(),
> > maybe with a tweak or two...
>
> I already tried AuthzInitializeResourceManager(), but the result
> was the same with current implementation...
So you tried to call authz_get_user_attribute()?
> BTW, I come up with another implementation. This make the things
> much simpler. What do you think of the patch attached?
> [...]
> int
> check_file_access (path_conv &pc, int flags, bool effective)
> {
> @@ -711,10 +618,14 @@ check_file_access (path_conv &pc, int flags, bool effective)
> desired |= FILE_EXECUTE;
> if (!get_file_sd (pc.handle (), pc, sd, false))
> {
> - /* Tweak Samba security descriptor as necessary. */
> - if (pc.fs_is_samba ())
> - convert_samba_sd (sd);
> - ret = check_access (sd, file_mapping, desired, flags, effective);
> + HANDLE h = CreateFileW (pc.get_nt_native_path ()->Buffer, desired,
> + 0, NULL, OPEN_EXISTING,
> + FILE_FLAG_BACKUP_SEMANTICS, NULL);
> + if (h != INVALID_HANDLE_VALUE)
> + {
> + CloseHandle (h);
> + ret = 0;
> + }
> }
> debug_printf ("flags %y, ret %d", flags, ret);
> return ret;
No, we can't do that, it's too simple.
Just kidding.
This is so simple, I'm puzzled we never tried that before. Or, if we
did, it's a loooong time ago...
If we really do this, we don't even need to call get_file_sd(). And it
should use NtOpenFile and reopen semantics i.e. pc.init_reopen_attr().
Also, the sharing flags should allow all access. And the `effective'
argument needs to be taken into account.
I wonder what side effects this has, but I can't think of any...
And I don't see any way around that, actually. {Nt}AccessCheck
as well as AuthzAccessCheck(*) use a token/sid context and compare
that against a security descriptor. Both don't care where the
SD is coming from, so the fact that this is coming from an
authenticated connection to a remote SMB server is just lost on them.
There's no simple CheckFileAccess function in the Windows API I'm
aware of :(
Thanks,
Corinna
(*) I wonder if AuthzAccessCheck isn't implemented using NtAccessCheck
under the hood...
next prev parent reply other threads:[~2024-11-19 20:58 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-08 15:42 Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin
2024-11-08 11:51 ` Takashi Yano
2024-11-08 13:11 ` Corinna Vinschen
2024-11-11 10:31 ` Takashi Yano
2024-11-11 10:31 ` Takashi Yano via Cygwin
2024-11-11 10:56 ` Corinna Vinschen
2024-11-11 10:56 ` Corinna Vinschen via Cygwin
2024-11-11 11:19 ` Takashi Yano
2024-11-11 11:19 ` Takashi Yano via Cygwin
2024-11-11 11:32 ` Takashi Yano
2024-11-11 11:32 ` Takashi Yano via Cygwin
2024-11-11 11:40 ` Takashi Yano
2024-11-11 11:40 ` Takashi Yano via Cygwin
2024-11-11 12:03 ` Corinna Vinschen
2024-11-11 12:03 ` Corinna Vinschen via Cygwin
2024-11-11 12:19 ` Takashi Yano
2024-11-11 12:19 ` Takashi Yano via Cygwin
2024-11-11 13:35 ` Corinna Vinschen
2024-11-11 13:35 ` Corinna Vinschen via Cygwin
2024-11-11 19:29 ` Takashi Yano
2024-11-11 19:29 ` Takashi Yano via Cygwin
2024-11-12 8:54 ` Takashi Yano
2024-11-12 11:56 ` Corinna Vinschen
2024-11-13 9:17 ` Takashi Yano
2024-11-13 15:10 ` Bill Stewart
2024-11-13 15:37 ` Takashi Yano
2024-11-13 15:58 ` Bill Stewart
2024-11-13 16:08 ` Takashi Yano
2024-11-15 15:21 ` Takashi Yano
2024-11-18 16:26 ` Corinna Vinschen
2024-11-19 8:58 ` Takashi Yano
2024-11-19 20:54 ` Corinna Vinschen [this message]
2024-12-07 23:13 ` Takashi Yano
2024-12-08 7:57 ` Takashi Yano
2024-12-09 11:11 ` Corinna Vinschen
2024-11-12 11:31 ` Corinna Vinschen
2024-11-11 11:51 ` Takashi Yano
2024-11-11 11:51 ` Takashi Yano via Cygwin
2024-11-11 11:59 ` Corinna Vinschen
2024-11-11 11:59 ` Corinna Vinschen via Cygwin
2024-11-11 12:25 ` Takashi Yano
2024-11-11 12:25 ` Takashi Yano via Cygwin
2024-11-11 13:00 ` Takashi Yano
2024-11-11 13:00 ` Takashi Yano via Cygwin
2024-11-11 13:18 ` Corinna Vinschen
2024-11-11 13:18 ` Corinna Vinschen via Cygwin
2024-11-08 16:07 ` [EXTERNAL] " Lavrentiev, Anton (NIH/NLM/NCBI) [C]
2024-11-11 9:04 ` Takashi Yano
2024-11-11 9:04 ` Takashi Yano via Cygwin
2019-08-12 19:05 Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin
2019-08-13 8:28 ` KAVALAGIOS Panagiotis (EEAS-EXT)
[not found] ` <704986a5a4ab41709eb963dcd23887b1@BELBRU-EXMP101.eeas.europa.eu>
2019-08-13 12:27 ` Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin
2019-08-13 18:34 ` Achim Gratz
2019-08-13 18:35 ` Andrey Repin
2019-08-13 23:19 ` Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin
2019-08-14 20:05 ` Andrey Repin
2019-08-14 0:53 Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin
2019-08-14 2:36 ` Ken Brown
2019-08-14 16:59 ` Achim Gratz
2019-08-14 4:24 Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin
2019-08-14 11:22 ` Ken Brown
2019-08-14 22:58 ` Brian Inglis
2019-08-14 14:07 Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin
2019-08-15 1:28 ` Ken Brown
2019-08-14 20:39 Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin
2019-08-15 1:31 ` Ken Brown
2019-08-15 1:40 Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin
2019-08-15 2:59 ` Brian Inglis
2019-08-15 2:00 Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin
2019-08-15 9:21 ` L A Walsh
2019-08-15 9:23 ` L A Walsh
2019-08-21 7:12 ` Lavrentiev, Anton (NIH/NLM/NCBI) [C] via cygwin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zzz7FJim9kIiqjyy@calimero.vinschen.de \
--to=corinna-cygwin@cygwin.com \
--cc=cygwin@cygwin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).