* [LTP] [PATCH] safe_setuid: skip if testing on CIFS
@ 2019-05-10 4:38 Murphy Zhou
2019-05-13 14:34 ` Petr Vorel
0 siblings, 1 reply; 4+ messages in thread
From: Murphy Zhou @ 2019-05-10 4:38 UTC (permalink / raw)
To: ltp
As CIFS is not supporting setuid operations.
Signed-off-by: Murphy Zhou <xzhou@redhat.com>
---
include/tst_fs.h | 1 +
lib/safe_macros.c | 16 ++++++++++++++++
lib/tst_fs_type.c | 2 ++
lib/tst_safe_macros.c | 8 ++++++++
4 files changed, 27 insertions(+)
diff --git a/include/tst_fs.h b/include/tst_fs.h
index 423ca82ec..5025f0459 100644
--- a/include/tst_fs.h
+++ b/include/tst_fs.h
@@ -42,6 +42,7 @@
#define TST_NILFS_MAGIC 0x3434
#define TST_EXOFS_MAGIC 0x5DF5
#define TST_OVERLAYFS_MAGIC 0x794c7630
+#define TST_CIFS_MAGIC 0xfe534d42
enum {
TST_BYTES = 1,
diff --git a/lib/safe_macros.c b/lib/safe_macros.c
index bac34cdb7..c3ba1d5be 100644
--- a/lib/safe_macros.c
+++ b/lib/safe_macros.c
@@ -277,6 +277,14 @@ int safe_seteuid(const char *file, const int lineno, void (*cleanup_fn) (void),
uid_t euid)
{
int rval;
+ long fs_type;
+
+ fs_type = tst_fs_type(NULL, ".");
+ if (fs_type == TST_CIFS_MAGIC) {
+ tst_brkm(TCONF, cleanup_fn,
+ "seteuid is not supported on %s filesystem",
+ tst_fs_type_name(fs_type));
+ }
rval = seteuid(euid);
if (rval == -1) {
@@ -307,6 +315,14 @@ int safe_setuid(const char *file, const int lineno, void (*cleanup_fn) (void),
uid_t uid)
{
int rval;
+ long fs_type;
+
+ fs_type = tst_fs_type(NULL, ".");
+ if (fs_type == TST_CIFS_MAGIC) {
+ tst_brkm(TCONF, cleanup_fn,
+ "setuid is not supported on %s filesystem",
+ tst_fs_type_name(fs_type));
+ }
rval = setuid(uid);
if (rval == -1) {
diff --git a/lib/tst_fs_type.c b/lib/tst_fs_type.c
index 1d0ac9669..eea7c5d4b 100644
--- a/lib/tst_fs_type.c
+++ b/lib/tst_fs_type.c
@@ -84,6 +84,8 @@ const char *tst_fs_type_name(long f_type)
return "EXOFS";
case TST_OVERLAYFS_MAGIC:
return "OVERLAYFS";
+ case TST_CIFS_MAGIC:
+ return "CIFS";
default:
return "Unknown";
}
diff --git a/lib/tst_safe_macros.c b/lib/tst_safe_macros.c
index 0e59a3f98..36941ec0b 100644
--- a/lib/tst_safe_macros.c
+++ b/lib/tst_safe_macros.c
@@ -111,6 +111,7 @@ int safe_setreuid(const char *file, const int lineno,
uid_t ruid, uid_t euid)
{
int rval;
+ long fs_type;
rval = setreuid(ruid, euid);
if (rval == -1) {
@@ -119,6 +120,13 @@ int safe_setreuid(const char *file, const int lineno,
(long)ruid, (long)euid);
}
+ fs_type = tst_fs_type(".");
+ if (fs_type == TST_CIFS_MAGIC) {
+ tst_brk_(file, lineno, TCONF,
+ "setreuid is not supported on %s filesystem",
+ tst_fs_type_name(fs_type));
+ }
+
return rval;
}
--
2.21.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* [LTP] [PATCH] safe_setuid: skip if testing on CIFS
2019-05-10 4:38 [LTP] [PATCH] safe_setuid: skip if testing on CIFS Murphy Zhou
@ 2019-05-13 14:34 ` Petr Vorel
2019-05-13 20:13 ` Steve French
0 siblings, 1 reply; 4+ messages in thread
From: Petr Vorel @ 2019-05-13 14:34 UTC (permalink / raw)
To: ltp
Hi Murphy,
> As CIFS is not supporting setuid operations.
Any reference to this?
fs/cifs/cifsfs.c and other parts of kernel cifs works with CIFS_MOUNT_SET_UID.
Also samba_setreuid() from lib/util/setid.c from samba git (I guess used in
samba libraries works with SYS_setreuid syscall or setreuid() libc wrapper.
What am I missing?
> diff --git a/lib/tst_safe_macros.c b/lib/tst_safe_macros.c
> index 0e59a3f98..36941ec0b 100644
> --- a/lib/tst_safe_macros.c
> +++ b/lib/tst_safe_macros.c
> @@ -111,6 +111,7 @@ int safe_setreuid(const char *file, const int lineno,
> uid_t ruid, uid_t euid)
> {
> int rval;
> + long fs_type;
> rval = setreuid(ruid, euid);
> if (rval == -1) {
> @@ -119,6 +120,13 @@ int safe_setreuid(const char *file, const int lineno,
> (long)ruid, (long)euid);
> }
> + fs_type = tst_fs_type(".");
> + if (fs_type == TST_CIFS_MAGIC) {
> + tst_brk_(file, lineno, TCONF,
> + "setreuid is not supported on %s filesystem",
> + tst_fs_type_name(fs_type));
> + }
I guess this check should be before setreuid() As it's in safe_seteuid() and
safe_setuid()
> +
> return rval;
> }
Kind regards,
Petr
^ permalink raw reply [flat|nested] 4+ messages in thread* [LTP] [PATCH] safe_setuid: skip if testing on CIFS
2019-05-13 14:34 ` Petr Vorel
@ 2019-05-13 20:13 ` Steve French
2019-05-14 12:38 ` Murphy Zhou
0 siblings, 1 reply; 4+ messages in thread
From: Steve French @ 2019-05-13 20:13 UTC (permalink / raw)
To: ltp
Also note that we are working on patches to improve saving of mode
bits and ownership information even in cases where the server does not
support POSIX Extensions.
Currently mount options cifsacl and idsfromsid can be used for some
use cases but they are being extended.
On Mon, May 13, 2019 at 11:04 AM Petr Vorel <pvorel@suse.cz> wrote:
>
> Hi Murphy,
>
> > As CIFS is not supporting setuid operations.
> Any reference to this?
> fs/cifs/cifsfs.c and other parts of kernel cifs works with CIFS_MOUNT_SET_UID.
> Also samba_setreuid() from lib/util/setid.c from samba git (I guess used in
> samba libraries works with SYS_setreuid syscall or setreuid() libc wrapper.
> What am I missing?
>
> > diff --git a/lib/tst_safe_macros.c b/lib/tst_safe_macros.c
> > index 0e59a3f98..36941ec0b 100644
> > --- a/lib/tst_safe_macros.c
> > +++ b/lib/tst_safe_macros.c
> > @@ -111,6 +111,7 @@ int safe_setreuid(const char *file, const int lineno,
> > uid_t ruid, uid_t euid)
> > {
> > int rval;
> > + long fs_type;
>
> > rval = setreuid(ruid, euid);
> > if (rval == -1) {
> > @@ -119,6 +120,13 @@ int safe_setreuid(const char *file, const int lineno,
> > (long)ruid, (long)euid);
> > }
>
> > + fs_type = tst_fs_type(".");
> > + if (fs_type == TST_CIFS_MAGIC) {
> > + tst_brk_(file, lineno, TCONF,
> > + "setreuid is not supported on %s filesystem",
> > + tst_fs_type_name(fs_type));
> > + }
> I guess this check should be before setreuid() As it's in safe_seteuid() and
> safe_setuid()
> > +
> > return rval;
> > }
>
> Kind regards,
> Petr
--
Thanks,
Steve
^ permalink raw reply [flat|nested] 4+ messages in thread* [LTP] [PATCH] safe_setuid: skip if testing on CIFS
2019-05-13 20:13 ` Steve French
@ 2019-05-14 12:38 ` Murphy Zhou
0 siblings, 0 replies; 4+ messages in thread
From: Murphy Zhou @ 2019-05-14 12:38 UTC (permalink / raw)
To: ltp
Hi Petr and Steve,
Thanks for reviewing! Steve you are right that this is more about
mode bits and ownership. Great to know the development work progress.
Most of the tests fail after setuid because chmod/chown operations
before that does not take effect, which is expected now I guess.
Now I am testing option "dynperm".
Self nack for this patch. Don't skip them.
Thanks!
M
On Mon, May 13, 2019 at 03:13:39PM -0500, Steve French wrote:
> Also note that we are working on patches to improve saving of mode
> bits and ownership information even in cases where the server does not
> support POSIX Extensions.
>
> Currently mount options cifsacl and idsfromsid can be used for some
> use cases but they are being extended.
>
> On Mon, May 13, 2019 at 11:04 AM Petr Vorel <pvorel@suse.cz> wrote:
> >
> > Hi Murphy,
> >
> > > As CIFS is not supporting setuid operations.
> > Any reference to this?
> > fs/cifs/cifsfs.c and other parts of kernel cifs works with CIFS_MOUNT_SET_UID.
> > Also samba_setreuid() from lib/util/setid.c from samba git (I guess used in
> > samba libraries works with SYS_setreuid syscall or setreuid() libc wrapper.
> > What am I missing?
> >
> > > diff --git a/lib/tst_safe_macros.c b/lib/tst_safe_macros.c
> > > index 0e59a3f98..36941ec0b 100644
> > > --- a/lib/tst_safe_macros.c
> > > +++ b/lib/tst_safe_macros.c
> > > @@ -111,6 +111,7 @@ int safe_setreuid(const char *file, const int lineno,
> > > uid_t ruid, uid_t euid)
> > > {
> > > int rval;
> > > + long fs_type;
> >
> > > rval = setreuid(ruid, euid);
> > > if (rval == -1) {
> > > @@ -119,6 +120,13 @@ int safe_setreuid(const char *file, const int lineno,
> > > (long)ruid, (long)euid);
> > > }
> >
> > > + fs_type = tst_fs_type(".");
> > > + if (fs_type == TST_CIFS_MAGIC) {
> > > + tst_brk_(file, lineno, TCONF,
> > > + "setreuid is not supported on %s filesystem",
> > > + tst_fs_type_name(fs_type));
> > > + }
> > I guess this check should be before setreuid() As it's in safe_seteuid() and
> > safe_setuid()
> > > +
> > > return rval;
> > > }
> >
> > Kind regards,
> > Petr
>
>
>
> --
> Thanks,
>
> Steve
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-05-14 12:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-05-10 4:38 [LTP] [PATCH] safe_setuid: skip if testing on CIFS Murphy Zhou
2019-05-13 14:34 ` Petr Vorel
2019-05-13 20:13 ` Steve French
2019-05-14 12:38 ` Murphy Zhou
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox