Sistem işlemleri dışında hiçbir şekilde hiçbir işlemi yönetici olarak yapmamanız gerekiyor. Aksi taktirde normal bir kullanıcı ya da web sunucusu kullanıcısı (www-data gibi) işlem yapmak için root yetkisi almak zorunda kalabilir ki bu da güvenlik açığı demektir.
storage klasörüne okuma yazma izni vereceksiniz. Oturum ya da önbellek dosyasını yazamamış gibi. Ayrıca imkanınız varsa oturum ve önbellek için Redis kullanın. https://laravel.com/docs/7.x/redis
IDE ya da proje dosyaları yönetici izni gerektiren bir yere kurulmaması gerekiyor. Hiçbir şekilde IDE'yi yönetici olarak çalıştırma gereği olmaması lazım.
777 diye bir izni unutun, öyle bir izin yok. Klasörler ve dosyalar web sunucusunun kullanıcısı olan www-data kullanıcısının ulaşabileceği şekilde olması lazım. Yani klasörler için 755, dosyalar için 644.
-rw-r--r-- -rwxr-xr-x
+-----------+------+-------+-------+ +-----------+------+-------+-------+
| | User | Group | World | | | User | Group | World |
+-----------+------+-------+-------+ +-----------+------+-------+-------+
| 4 Read | X | X | X | | 4 Read | X | X | X |
| 2 Write | X | | | | 2 Write | X | | |
| 1 Execute | | | | | 1 Execute | X | X | X |
+-----------+------+-------+-------+ +-----------+------+-------+-------+
| | 6 | 4 | 4 | | | 7 | 5 | 5 |
+-----------+------+-------+-------+ +-----------+------+-------+-------+
Linux'de dosya ve klasör izinlerinin default bir tanımlaması olur. Bir dosya veya klasör oluşturulduğunda ona göre oluşturulur. Bazı programlar (GIT gibi) bunun dışına çıkabilir. O yüzden örneğin git clone yapılmadan önce umask 022 çalıştırmak gerekebilir.
Bu yazdıklarımda kafanıza takılan yerleri araştırabilirsiniz. Neden 755/644, umask nedir, www-data nedir vs gibi.