Commit cffd044
Al Viro
use uniform permission checks for all mount propagation changes
do_change_type() and do_set_group() are operating on different
aspects of the same thing - propagation graph. The latter
asks for mounts involved to be mounted in namespace(s) the caller
has CAP_SYS_ADMIN for. The former is a mess - originally it
didn't even check that mount *is* mounted. That got fixed,
but the resulting check turns out to be too strict for userland -
in effect, we check that mount is in our namespace, having already
checked that we have CAP_SYS_ADMIN there.
What we really need (in both cases) is
* only touch mounts that are mounted. That's a must-have
constraint - data corruption happens if it get violated.
* don't allow to mess with a namespace unless you already
have enough permissions to do so (i.e. CAP_SYS_ADMIN in its userns).
That's an equivalent of what do_set_group() does; let's extract that
into a helper (may_change_propagation()) and use it in both
do_set_group() and do_change_type().
Fixes: 12f147d "do_change_type(): refuse to operate on unmounted/not ours mounts"
Acked-by: Andrei Vagin <[email protected]>
Reviewed-by: Pavel Tikhomirov <[email protected]>
Tested-by: Pavel Tikhomirov <[email protected]>
Reviewed-by: Christian Brauner <[email protected]>
Signed-off-by: Al Viro <[email protected]>1 parent da025cd commit cffd044
1 file changed
Lines changed: 20 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2859 | 2859 | | |
2860 | 2860 | | |
2861 | 2861 | | |
| 2862 | + | |
| 2863 | + | |
| 2864 | + | |
| 2865 | + | |
| 2866 | + | |
| 2867 | + | |
| 2868 | + | |
| 2869 | + | |
| 2870 | + | |
| 2871 | + | |
| 2872 | + | |
| 2873 | + | |
| 2874 | + | |
2862 | 2875 | | |
2863 | 2876 | | |
2864 | 2877 | | |
| |||
2895 | 2908 | | |
2896 | 2909 | | |
2897 | 2910 | | |
2898 | | - | |
2899 | | - | |
| 2911 | + | |
| 2912 | + | |
2900 | 2913 | | |
2901 | | - | |
| 2914 | + | |
2902 | 2915 | | |
2903 | 2916 | | |
2904 | 2917 | | |
| |||
3344 | 3357 | | |
3345 | 3358 | | |
3346 | 3359 | | |
3347 | | - | |
3348 | | - | |
3349 | | - | |
3350 | | - | |
3351 | | - | |
3352 | | - | |
3353 | | - | |
3354 | | - | |
3355 | | - | |
3356 | | - | |
| 3360 | + | |
| 3361 | + | |
3357 | 3362 | | |
3358 | | - | |
| 3363 | + | |
| 3364 | + | |
3359 | 3365 | | |
3360 | 3366 | | |
3361 | 3367 | | |
| |||
0 commit comments