Chcę dać użytkownikom możliwość tworzenia plików do odczytu i odczytu w innym katalogu użytkownika, ale nie mieć opcji usuwania pliku po utworzeniu (lepki bit nie będzie tu działał ...), na przykład:
Mam użytkownika manager
z katalogiem repository
Mam użytkownika, worker1
który musi zapisywać pliki, /manager/repository
ale nie może ich usunąć
Mam użytkownika, worker2
który musi zapisywać pliki, /manager/repository
ale nie może usunąć plików
Mam użytkownika, worker3
który musi zapisywać pliki, /manager/repository
ale nie może usuń pliki
ale worker 1-2-3
nie może usunąć plików tylko po utworzeniu manager
i root
może usunąć worker 1-2-3
utworzone pliki .
Próbowałem kilka chown
i chmod
sztuczki ze stosowaniem sticky bit bez powodzenia.
files
permissions
użytkownik63898
źródło
źródło
worker*
użytkownicy piszą do katalogu w określony sposób? Wspomniałeś w komentarzu, że pliki dziennika idą tutaj, więc czy to oznacza, że jakiś plik wykonywalny jest uruchamiany w celu utworzenia plików tutaj? Jeśli tak, możesz daćworker
grupiesudo
pozwolenie na uruchomienie pliku wykonywalnego jakomanager
. Następnie plik wykonywalny tworzyłby dzienniki jakomanager
użytkownik, które mogłyby być odczytywane przez pracowników.Odpowiedzi:
W przeciwieństwie do systemu Windows nie ma wyraźnego pozwolenia na usuwanie w systemach Unix / Linux. Prawo do usunięcia (lub utworzenia lub zmiany nazwy) pliku jest powiązane z zawartym katalogiem. Usuń uprawnienia do zapisu dla pracowników
/manager/repository/
, aby uniemożliwić im tworzenie, usuwanie i zmianę nazw plików.Pamiętaj, że nie można zezwolić na tworzenie plików, ale odmówić ich usunięcia.
źródło
Przede wszystkim upewnij się, że ACL jest włączony w twoim systemie, a następnie uruchom to polecenie
Jak to działa
Ta komenda da uprawnienia do odczytu, zapisu i wykonywania właścicielowi katalogu
/manager/repository
. Będzie on odwołać wszystkie uprawnieniaworker1
,worker2
iworker3
.Zapewni to innym użytkownikom dostęp do odczytu i zapisu, ale odmówi dostępu do usunięcia.
Od
man setfacl
:źródło
echo " " > $file
spychanie zawartości pliku za pomocą „”, co technicznie jest zapisem, ale skutecznie usuwa zawartość. Wygląda na to, że najlepszym repo jak svn byłby najlepszy zakład tutaj.Aby to zrobić z uprawnieniami, potrzebujesz systemu z obsługą list ACL podobnych do list ACL NFSv4. Na przykład we FreeBSD, jeśli system plików jest zamontowany z
nfsv4acls
flagą, możesz:Jawnie zaprzecza się
delete_child
uprawnienia do członkówworker-group
grupy.Należy jednak pamiętać, że ponieważ pracownicy byliby właścicielami tworzonych przez siebie plików, nadal mogliby modyfikować na nich listy ACL i przyznając sobie
delete
uprawnienia, które miałyby pierwszeństwo przeddelete_child
zezwoleniem katalogu nadrzędnego, a ja nie jestem na pewno jest na to sposób (przynajmniej w systemach plików UFS na FreeBSD). Na przykład mogliby zrobić:źródło
Aby pobrać uprawnienia do zapisu z
/manager/repository
folderu. Tak więc wszyscy użytkownicy, którzy nie są rootami, będą mogli zapisywać lub usuwać pliki znajdujące się w nim/manager/repository
, ale nie mogą usuwać żadnych plików z tego katalogu.źródło
możemy modyfikować pliki i foldery, ale nie możemy ich usunąć.
Aby usunąć atrybuty, uruchom następujące polecenia:
Dla plików:
W przypadku katalogów:
źródło
a
atrybut oznacza tylko dołączanie. Czy użytkownicy mogą edytować te pliki? (2) Jaki jest wpływ ustawieniaa
atrybutu na katalog?