def test_get_path_uid_symlink(tmpdir): f = tmpdir.mkdir("symlink").join("somefile") f.write("content") fs = f + '_link' os.symlink(f, fs) with pytest.raises(OSError): get_path_uid(fs)
def test_get_path_uid_symlink_without_NOFOLLOW(tmpdir, monkeypatch): monkeypatch.delattr("os.O_NOFOLLOW") f = tmpdir.mkdir("symlink").join("somefile") f.write("content") fs = f + '_link' os.symlink(f, fs) with pytest.raises(OSError): get_path_uid(fs)
def check_path_owner(path): # If we don't have a way to check the effective uid of this process, then # we'll just assume that we own the directory. if not hasattr(os, "geteuid"): return True previous = None while path != previous: if os.path.lexists(path): # Check if path is writable by current user. if os.geteuid() == 0: # Special handling for root user in order to handle properly # cases where users use sudo without -H flag. try: path_uid = get_path_uid(path) except OSError: return False return path_uid == 0 else: return os.access(path, os.W_OK) else: previous, path = path, os.path.dirname(path)
def test_get_path_uid_without_NOFOLLOW(monkeypatch): monkeypatch.delattr("os.O_NOFOLLOW") path = os.getcwd() assert get_path_uid(path) == os.stat(path).st_uid
def test_get_path_uid(): path = os.getcwd() assert get_path_uid(path) == os.stat(path).st_uid