Index: client/site_tests/security_ProfilePermissions/security_ProfilePermissions.py |
diff --git a/client/site_tests/security_ProfilePermissions/security_ProfilePermissions.py b/client/site_tests/security_ProfilePermissions/security_ProfilePermissions.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5077405720bb2a71dce89ebd2fbcea7740a2a40d |
--- /dev/null |
+++ b/client/site_tests/security_ProfilePermissions/security_ProfilePermissions.py |
@@ -0,0 +1,44 @@ |
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import logging |
+import os |
+import stat |
+ |
+from autotest_lib.client.bin import test, utils |
+from autotest_lib.client.common_lib import error |
+from autotest_lib.client.cros import constants, cros_ui_test, login |
+ |
+class security_ProfilePermissions(cros_ui_test.UITest): |
+ version = 1 |
+ _HOMEDIR_MODE = 040700 |
+ auto_login = False |
+ username = None |
+ password = None |
+ |
+ def run_once(self, creds=None): |
+ """ |
+ Check permissions within cryptohome for anything too permissive. |
+ """ |
+ if creds: |
+ self.username = constants.CREDENTIALS[creds][0] |
+ self.password = constants.CREDENTIALS[creds][1] |
+ |
+ self.login(self.username, self.password) |
+ login.wait_for_initial_chrome_window() |
+ |
+ homepath = constants.CRYPTOHOME_MOUNT_PT |
+ homemode = os.stat(homepath)[stat.ST_MODE] |
+ |
+ if (homemode != self._HOMEDIR_MODE): |
+ raise error.TestFail('%s permissions were %s' % (homepath, |
+ oct(homemode))) |
+ |
+ # Writable by anyone else is bad, as is owned by anyone else. |
+ cmd = 'find -L "%s" -perm /022 -o \\! -user chronos -ls' % homepath |
+ cmd_output = utils.system_output(cmd, ignore_status=True) |
+ |
+ if (cmd_output != '') : |
+ logging.error(cmd_output) |
+ raise error.TestFail('Bad permissions found on cryptohome files') |