From: "Pali Rohár" <pali@kernel.org>
To: Kari Argillander <kari.argillander@gmail.com>
Cc: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>,
ntfs3@lists.linux.dev, Christoph Hellwig <hch@lst.de>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
Matthew Wilcox <willy@infradead.org>,
Christian Brauner <christian.brauner@ubuntu.com>
Subject: Re: [PATCH v3 9/9] fs/ntfs3: Show uid/gid always in show_options()
Date: Sun, 29 Aug 2021 12:36:00 +0200 [thread overview]
Message-ID: <20210829103600.pfwtm5c3sdpcnzlm@pali> (raw)
In-Reply-To: <20210829095614.50021-10-kari.argillander@gmail.com>
On Sunday 29 August 2021 12:56:14 Kari Argillander wrote:
> Show options should show option according documentation when some value
> is not default or when ever coder wants. Uid/gid are problematic because
> it is hard to know which are defaults. In file system there is many
> different implementation for this problem.
>
> Some file systems show uid/gid when they are different than root, some
> when user has set them and some show them always. There is also problem
> that what if root uid/gid change. This code just choose to show them
> always. This way we do not need to think this any more.
Hello! IIRC ntfs disk storage supports POSIX permissions and uid/gid for
files and directories. But from ntfs3 documentation it is not clear if
this ntfs3 implementation supports it or not.
Currently ntfs3 documentation says:
> https://github.com/Paragon-Software-Group/linux-ntfs3/blob/master/Documentation/filesystems/ntfs3.rst
> uid= gid= umask= Controls the default permissions for
> files/directories created after the NTFS volume is mounted.
(and looks that rst formatting is broken)
And from this description I'm not really sure what these option
controls.
For example udf filesystem also supports storing POSIX uid/gid and
supports also additional extension per file to "do not store uid" and
"do not store gid". Moreover kernel implementation has mount option
(uid= and gid=) which overrides disk's uid/gid to mount option value.
And also has mount option to allow storing new files "without uid/gid".
So there does not have to be any default for uid=/gid= like it is for
"native" POSIX filesystems (e.g. ext4).
And so interpretation of uid/gid options is not always easy; specially
if filesystem has extensions to POSIX permissions. And NTFS has it too
as it by default has in its storage (only?) NT permissions and NT SIDs.
> Signed-off-by: Kari Argillander <kari.argillander@gmail.com>
> ---
> fs/ntfs3/ntfs_fs.h | 23 ++++++++++-------------
> fs/ntfs3/super.c | 12 ++++--------
> 2 files changed, 14 insertions(+), 21 deletions(-)
>
> diff --git a/fs/ntfs3/ntfs_fs.h b/fs/ntfs3/ntfs_fs.h
> index 5df55bc733bd..a3a7d10de7cb 100644
> --- a/fs/ntfs3/ntfs_fs.h
> +++ b/fs/ntfs3/ntfs_fs.h
> @@ -60,19 +60,16 @@ struct ntfs_mount_options {
> u16 fs_fmask_inv;
> u16 fs_dmask_inv;
>
> - unsigned uid : 1, /* uid was set */
> - gid : 1, /* gid was set */
> - fmask : 1, /* fmask was set */
> - dmask : 1, /*dmask was set*/
> - sys_immutable : 1, /* immutable system files */
> - discard : 1, /* issue discard requests on deletions */
> - sparse : 1, /*create sparse files*/
> - showmeta : 1, /*show meta files*/
> - nohidden : 1, /*do not show hidden files*/
> - force : 1, /*rw mount dirty volume*/
> - noacs_rules : 1, /*exclude acs rules*/
> - prealloc : 1 /*preallocate space when file is growing*/
> - ;
> + unsigned fmask : 1; /* fmask was set */
> + unsigned dmask : 1; /*dmask was set*/
> + unsigned sys_immutable : 1; /* immutable system files */
> + unsigned discard : 1; /* issue discard requests on deletions */
> + unsigned sparse : 1; /*create sparse files*/
> + unsigned showmeta : 1; /*show meta files*/
> + unsigned nohidden : 1; /*do not show hidden files*/
> + unsigned force : 1; /*rw mount dirty volume*/
> + unsigned noacs_rules : 1; /*exclude acs rules*/
> + unsigned prealloc : 1; /*preallocate space when file is growing*/
> };
>
> /* special value to unpack and deallocate*/
> diff --git a/fs/ntfs3/super.c b/fs/ntfs3/super.c
> index d7408b4f6813..d28fab6c2297 100644
> --- a/fs/ntfs3/super.c
> +++ b/fs/ntfs3/super.c
> @@ -287,13 +287,11 @@ static int ntfs_fs_parse_param(struct fs_context *fc,
> opts->fs_uid = make_kuid(current_user_ns(), result.uint_32);
> if (!uid_valid(opts->fs_uid))
> return invalf(fc, "ntfs3: Invalid value for uid.");
> - opts->uid = 1;
> break;
> case Opt_gid:
> opts->fs_gid = make_kgid(current_user_ns(), result.uint_32);
> if (!gid_valid(opts->fs_gid))
> return invalf(fc, "ntfs3: Invalid value for gid.");
> - opts->gid = 1;
> break;
> case Opt_umask:
> if (result.uint_32 & ~07777)
> @@ -512,12 +510,10 @@ static int ntfs_show_options(struct seq_file *m, struct dentry *root)
> struct ntfs_mount_options *opts = sbi->options;
> struct user_namespace *user_ns = seq_user_ns(m);
>
> - if (opts->uid)
> - seq_printf(m, ",uid=%u",
> - from_kuid_munged(user_ns, opts->fs_uid));
> - if (opts->gid)
> - seq_printf(m, ",gid=%u",
> - from_kgid_munged(user_ns, opts->fs_gid));
> + seq_printf(m, ",uid=%u",
> + from_kuid_munged(user_ns, opts->fs_uid));
> + seq_printf(m, ",gid=%u",
> + from_kgid_munged(user_ns, opts->fs_gid));
> if (opts->fmask)
> seq_printf(m, ",fmask=%04o", ~opts->fs_fmask_inv);
> if (opts->dmask)
> --
> 2.25.1
>
next prev parent reply other threads:[~2021-08-29 10:36 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-29 9:56 [PATCH v3 0/9] fs/ntfs3: Use new mount api and change some opts Kari Argillander
2021-08-29 9:56 ` [PATCH v3 1/9] fs/ntfs3: Remove unnecesarry mount option noatime Kari Argillander
2021-08-29 9:56 ` [PATCH v3 2/9] fs/ntfs3: Remove unnecesarry remount flag handling Kari Argillander
2021-08-29 9:56 ` [PATCH v3 3/9] fs/ntfs3: Convert mount options to pointer in sbi Kari Argillander
2021-08-29 9:56 ` [PATCH v3 4/9] fs/ntfs3: Use new api for mounting Kari Argillander
2021-08-29 9:56 ` [PATCH v3 5/9] fs/ntfs3: Init spi more in init_fs_context than fill_super Kari Argillander
2021-08-29 9:56 ` [PATCH v3 6/9] fs/ntfs3: Make mount option nohidden more universal Kari Argillander
2021-08-29 9:56 ` [PATCH v3 7/9] fs/ntfs3: Add iocharset= mount option as alias for nls= Kari Argillander
2021-08-29 9:56 ` [PATCH v3 8/9] fs/ntfs3: Rename mount option no_acl_rules > (no)acl_rules Kari Argillander
2021-08-29 10:16 ` Pali Rohár
2021-08-29 11:49 ` Kari Argillander
2021-08-29 9:56 ` [PATCH v3 9/9] fs/ntfs3: Show uid/gid always in show_options() Kari Argillander
2021-08-29 10:36 ` Pali Rohár [this message]
2021-09-07 7:36 ` [PATCH v3 0/9] fs/ntfs3: Use new mount api and change some opts Kari Argillander
2021-09-07 16:14 ` Konstantin Komarov
[not found] ` <CAHp75Vd==Dm1s=WK9p2q3iEBSHxN-1spHmmtZ21eRNoqyJ5v=Q@mail.gmail.com>
2021-09-07 20:47 ` Kari Argillander
2021-09-08 9:00 ` Andy Shevchenko
2021-09-08 10:32 ` Konstantin Komarov
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=20210829103600.pfwtm5c3sdpcnzlm@pali \
--to=pali@kernel.org \
--cc=almaz.alexandrovich@paragon-software.com \
--cc=christian.brauner@ubuntu.com \
--cc=hch@lst.de \
--cc=kari.argillander@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ntfs3@lists.linux.dev \
--cc=willy@infradead.org \
/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 NNTP newsgroup(s).