Przyczyną uniemożliwienia każdemu użytkownikowi odczytania innych plików użytkownika jest to niektórzy użytkownicy mają własne pliki "config.php", które zawierają poufne informacje, podczas gdy niektórzy użytkownicy nie lubią pomysłów innych, którzy mogą zobaczyć strukturę plików i kod źródłowy swoich systemów zarządzania treścią, dlatego próbuję stworzyć system, w którym użytkownik ma dostęp do swojego katalogu domowego jako folderu najwyższego poziomu. To znaczy. nie można "cd /" i zobaczyć plików innych osób ani folderów systemowych. Zgaduję z komentarzy, że nie jest to takie proste.
W przeciwieństwie do stwierdzenia problemu w samym pytaniu, w rzeczywistości jest to rozsądne rozpuszczalny problem. Poniżej jest jeden możliwość rozwiązania tego problemu.
Po pierwsze, uczyń każdy katalog domowy dostępny tylko dla jego właściciela i nikogo innego. Innymi słowy, tryb 0700.
Po drugie, ustaw wartość umask użytkownika na 0077. Oznacza to, że domyślnie pliki będą tworzone z bitami praw grupy i świata ustawionymi na zero, pozwalając tylko na dostęp właściciela.
Jeśli dany plik musi być dostępny w jakimś innym procesie (jest to plik .php, więc może serwer WWW?), Nadaj temu procesowi własne członkostwo w grupie, ustaw własność grupową w katalogach domowych do tej grupy i ustaw tryb do 0710. Bit "execute" w katalogu umożliwia dostęp, jeśli zna się konkretną nazwę podkatalogu lub pliku, do którego dostęp jest pożądany, ale nie pozwala na wpisanie zawartości katalogu (to jest "przeczytane" w katalogu).
Wszelkie podkatalogi w katalogach domowych użytkowników, które powinny być dostępne dla tego samego procesu, mogą mieć względnie permisywne bity uprawnień światowych. (Na przykład pliki 0644 i katalogi 0755 lub 0751.)
Jeśli jest to pożądane, daj użytkownikom obszar "udziału", być może poza ich katalogami domowymi, który ma bardziej permisywny zestaw uprawnień. Może dla każdego użytkownika ma / home / $ USER i / share / $ USER, gdzie katalog under / share ma 0755 uprawnień i jest własnością odpowiedniego użytkownika. Ewentualnie dodaj dowiązanie symboliczne w katalogu domowym użytkownika wskazujące na katalog "share" i powiedz im, że pliki udostępnione innych użytkowników znajdują się w / share / $ USER. Jeśli wybierasz tę trasę, możesz zamiast tego użyć umask 0022, która będzie domyślnymi plikami, które będą tylko do odczytu przez osoby nie będące właścicielami. Pamiętaj, aby poinformować użytkowników, że pliki, które przechowują w katalogu / share, mogą być odczytywane przez wszystkich użytkowników systemu.
/usr/bin
lub inne katalogi systemowe?