Esempio n. 1
0
    def test_disable_permissions_warnings(self):
        # Setup the config directory
        os.chmod(self.TEMP_CONFIG_DIR, 0o0755)

        self.assertNotEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o0770)

        # Setup the config file
        os.chmod(self.TEMP_FILE_PATH, 0o664)

        self.assertNotEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o770)

        parser = CLIConfigParser(config_file_path=self.TEMP_FILE_PATH,
                                 validate_config_exists=True,
                                 validate_config_permissions=False)
        parser.LOG = mock.Mock()

        result = parser.parse()  # noqa F841

        self.assertEqual(parser.LOG.info.call_count, 0)
        self.assertEqual(parser.LOG.warn.call_count, 0)

        # Make sure we left the file alone
        self.assertTrue(os.path.exists(self.TEMP_FILE_PATH))
        self.assertEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o664)

        self.assertTrue(os.path.exists(self.TEMP_CONFIG_DIR))
        self.assertEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o0755)
Esempio n. 2
0
    def test_disable_permissions_warnings(self):
        # Setup the config directory
        os.chmod(self.TEMP_CONFIG_DIR, 0o0755)

        self.assertNotEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o0770)

        # Setup the config file
        os.chmod(self.TEMP_FILE_PATH, 0o664)

        self.assertNotEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o770)

        parser = CLIConfigParser(
            config_file_path=self.TEMP_FILE_PATH,
            validate_config_exists=True,
            validate_config_permissions=False,
        )
        parser.LOG = mock.Mock()

        result = parser.parse()  # noqa F841

        self.assertEqual(parser.LOG.info.call_count, 0)
        self.assertEqual(parser.LOG.warn.call_count, 0)

        # Make sure we left the file alone
        self.assertTrue(os.path.exists(self.TEMP_FILE_PATH))
        self.assertEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o664)

        self.assertTrue(os.path.exists(self.TEMP_CONFIG_DIR))
        self.assertEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o0755)
Esempio n. 3
0
    def test_correct_permissions_emit_no_warnings(self):
        os.chmod(self.TEMP_CONFIG_DIR, 0o2770)

        self.assertEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o2770)

        # Setup the config file
        os.chmod(self.TEMP_FILE_PATH, 0o660)

        self.assertEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o660)

        parser = CLIConfigParser(
            config_file_path=self.TEMP_FILE_PATH, validate_config_exists=True
        )
        parser.LOG = mock.Mock()

        result = parser.parse()  # noqa F841

        self.assertEqual(parser.LOG.warn.call_count, 0)

        # Make sure we left the file alone
        self.assertTrue(os.path.exists(self.TEMP_FILE_PATH))
        self.assertEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o660)

        self.assertTrue(os.path.exists(self.TEMP_CONFIG_DIR))
        self.assertEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o2770)
Esempio n. 4
0
    def test_weird_but_correct_permissions_emit_no_warnings(self):
        os.chmod(self.TEMP_CONFIG_DIR, 0o2770)

        self.assertEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o2770)

        # 1. Config file: 0o640
        os.chmod(self.TEMP_FILE_PATH, 0o640)

        self.assertEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o640)

        parser = CLIConfigParser(config_file_path=self.TEMP_FILE_PATH, validate_config_exists=True)
        parser.LOG = mock.Mock()

        result = parser.parse()  # noqa F841

        self.assertEqual(parser.LOG.warn.call_count, 0)

        # Make sure we left the file alone
        self.assertTrue(os.path.exists(self.TEMP_FILE_PATH))
        self.assertEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o640)

        # 2. Config file: 0o600
        os.chmod(self.TEMP_FILE_PATH, 0o600)

        self.assertEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o600)

        parser = CLIConfigParser(config_file_path=self.TEMP_FILE_PATH, validate_config_exists=True)
        parser.LOG = mock.Mock()

        result = parser.parse()  # noqa F841

        self.assertEqual(parser.LOG.warn.call_count, 0)

        # Make sure we left the file alone
        self.assertTrue(os.path.exists(self.TEMP_FILE_PATH))
        self.assertEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o600)

        self.assertTrue(os.path.exists(self.TEMP_CONFIG_DIR))
        self.assertEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o2770)
Esempio n. 5
0
    def test_warn_on_bad_config_permissions(self):
        # Setup the config directory
        os.chmod(self.TEMP_CONFIG_DIR, 0o0755)

        self.assertNotEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o0770)

        # Setup the config file
        os.chmod(self.TEMP_FILE_PATH, 0o664)

        self.assertNotEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o770)

        parser = CLIConfigParser(
            config_file_path=self.TEMP_FILE_PATH, validate_config_exists=True
        )
        parser.LOG = mock.Mock()

        result = parser.parse()  # noqa F841

        self.assertEqual(parser.LOG.info.call_count, 1)

        self.assertEqual(
            "The SGID bit is not set on the StackStorm configuration directory.",
            parser.LOG.info.call_args_list[0][0][0],
        )

        self.assertEqual(parser.LOG.warn.call_count, 2)
        self.assertEqual(
            "The StackStorm configuration directory permissions are insecure "
            "(too permissive): others have access.",
            parser.LOG.warn.call_args_list[0][0][0],
        )

        self.assertEqual(
            "The StackStorm configuration file permissions are insecure: others have access.",
            parser.LOG.warn.call_args_list[1][0][0],
        )

        # Make sure we left the file alone
        self.assertTrue(os.path.exists(self.TEMP_FILE_PATH))
        self.assertEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o664)

        self.assertTrue(os.path.exists(self.TEMP_CONFIG_DIR))
        self.assertEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o0755)
Esempio n. 6
0
    def test_warn_on_bad_config_permissions(self):
        # Setup the config directory
        os.chmod(self.TEMP_CONFIG_DIR, 0o0755)

        self.assertNotEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o0770)

        # Setup the config file
        os.chmod(self.TEMP_FILE_PATH, 0o664)

        self.assertNotEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o770)

        parser = CLIConfigParser(config_file_path=self.TEMP_FILE_PATH, validate_config_exists=True)
        parser.LOG = mock.Mock()

        result = parser.parse()  # noqa F841

        self.assertEqual(parser.LOG.info.call_count, 1)

        self.assertEqual(
            "The SGID bit is not set on the StackStorm configuration directory.",
            parser.LOG.info.call_args_list[0][0][0])

        self.assertEqual(parser.LOG.warn.call_count, 2)
        self.assertEqual(
            "The StackStorm configuration directory permissions are insecure "
            "(too permissive): others have access.",
            parser.LOG.warn.call_args_list[0][0][0])

        self.assertEqual(
            "The StackStorm configuration file permissions are insecure: others have access.",
            parser.LOG.warn.call_args_list[1][0][0])

        # Make sure we left the file alone
        self.assertTrue(os.path.exists(self.TEMP_FILE_PATH))
        self.assertEqual(os.stat(self.TEMP_FILE_PATH).st_mode & 0o777, 0o664)

        self.assertTrue(os.path.exists(self.TEMP_CONFIG_DIR))
        self.assertEqual(os.stat(self.TEMP_CONFIG_DIR).st_mode & 0o7777, 0o0755)