Spaces:
Sleeping
Sleeping
File size: 3,528 Bytes
3402506 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
#!/usr/bin/env python3
"""
Targeted permission fix for specific directories only
This script fixes permissions ONLY for the directories you're interested in
"""
import os
import stat
from pathlib import Path
def fix_specific_permissions():
"""Fix permissions only for the target directories and their contents"""
# Target directories (both actual and symlink paths)
target_dirs = [
".cache/Generated",
".cache/static",
".cache/view_session",
"Generated", # symlink
"static", # symlink
"view_session" # symlink
]
print("π§ Fixing permissions for specific directories only...")
print("=" * 50)
for dir_path in target_dirs:
path_obj = Path(dir_path)
if not path_obj.exists():
print(f"β οΈ {dir_path} - Does not exist, skipping")
continue
try:
# Fix the directory itself
if path_obj.is_dir() and not path_obj.is_symlink():
current_perms = oct(path_obj.stat().st_mode)[-3:]
path_obj.chmod(0o755) # rwxr-xr-x
print(f"β
{dir_path} - Fixed directory permissions ({current_perms} β 755)")
# Fix all contents recursively
fix_contents_permissions(path_obj)
elif path_obj.is_symlink():
print(f"π {dir_path} - Symbolic link (no permission fix needed)")
else:
print(f"β οΈ {dir_path} - Not a directory, skipping")
except Exception as e:
print(f"β {dir_path} - Error: {e}")
def fix_contents_permissions(directory_path):
"""Recursively fix permissions for directory contents"""
try:
for item in directory_path.rglob("*"):
try:
if item.is_dir():
item.chmod(0o755) # Directories: rwxr-xr-x
elif item.is_file():
item.chmod(0o644) # Files: rw-r--r--
except Exception as e:
print(f" β οΈ {item} - Could not fix: {e}")
except Exception as e:
print(f" β Error scanning {directory_path}: {e}")
def check_permissions():
"""Check current permissions of target directories"""
print("\nπ Current Permissions Check:")
print("-" * 30)
target_dirs = [
".cache/Generated",
".cache/static",
".cache/view_session"
]
for dir_path in target_dirs:
path_obj = Path(dir_path)
if path_obj.exists():
perms = oct(path_obj.stat().st_mode)[-3:]
access_status = "β
Accessible" if perms in ["755", "775"] else "β Restricted"
print(f"{dir_path:20} - {perms} ({access_status})")
else:
print(f"{dir_path:20} - Does not exist")
if __name__ == "__main__":
print("π― Targeted Permission Fix for Specific Directories")
print("This script ONLY affects view_session, Generated, and static folders")
print("=" * 70)
# Check current state
check_permissions()
# Ask for confirmation
print("\n" + "=" * 50)
response = input("Fix permissions for these directories? (y/N): ").strip().lower()
if response in ['y', 'yes']:
fix_specific_permissions()
print("\n" + "=" * 50)
print("β
Permission fix complete!")
check_permissions()
else:
print("Operation cancelled.") |