#!/usr/bin/python3 # # Small script that returns 0 if all the requested mount flags # are present for a given mount and returns 1 otherwise import argparse import os import sys # from /usr/include/sys/mount.h # these are file-system independent MS_RDONLY = 1 MS_NOSUID = 2 MS_NODEV = 4 MS_NOEXEC = 8 KNOWN_FLAGS = { "ro": MS_RDONLY, "nosuid": MS_NOSUID, "nodev": MS_NODEV, "noexec": MS_NOEXEC } def main(): parser = argparse.ArgumentParser(description="Check for mount flags") parser.add_argument("path", metavar="PATH", help="path for the file-system to check for read-only status") parser.add_argument("flags", metavar="FLAGS", help="comma separated list of flags to check for") args = parser.parse_args(sys.argv[1:]) want = 0 strflags = [x.strip() for x in args.flags.split(",")] for flag in strflags: num = KNOWN_FLAGS.get(flag, None) if flag is None: print(f"Unknown flag: '{flag}'") sys.exit(2) want |= num sb = os.statvfs(args.path) have = sb.f_flag ok = (have & want) == want sys.exit(0 if ok else 1) if __name__ == "__main__": main()