Chciałbym dać użytkownikowi uprawnienia do tworzenia i odczytu plików w określonym katalogu, ale nie do modyfikowania ani usuwania plików. Jeśli użytkownik może dołączyć do plików, jest w porządku, ale wolałbym nie. To jest na Ubuntu Linux.
Myślę, że jest to niemożliwe przy standardowych uprawnieniach do plików Uniksa, ale może jest to możliwe przy użyciu list ACL? Użytkownik zawsze będzie łączyć się przy użyciu SFTP, więc jeśli istniałby jakiś sposób na kontrolowanie tego w SFTP (w przeciwieństwie do uprawnień systemu operacyjnego), byłoby dobrze.
Aby być absolutnie jasnym, chcę:
- echo hello> test # udany, ponieważ test nie istnieje, a tworzenie jest dozwolone
- echo hello >> test # może się powieść lub nie, w zależności od tego, czy dozwolone jest dołączanie
- echo hello2> test # kończy się niepowodzeniem, ponieważ test już istnieje, a modyfikacja nie jest dozwolona
- test kota # udany, ponieważ dozwolone są odczyty
- test rm # kończy się niepowodzeniem, ponieważ usuwanie nie jest dozwolone
Jeśli zastanawiasz się, dlaczego chcę to zrobić, ma to uczynić system kopii zapasowej Duplicati odpornym na Ransomware.
linux
files
permissions
acl
paj28
źródło
źródło
echo > test
, powłoka wykonuje plik,open("test", O_WRONLY|O_CREAT|O_TRUNC)
który tworzy plik, a następnie wywołuje,echo
który zapisuje zawartość, więc ją modyfikuje. Teraz możesz pozwolić, aby tylko pierwszy otwarty (WR) odniósł sukces.Odpowiedzi:
Możesz użyć
bindfs
:Ten katalog jest własnością stephane, z grupą stephane (stephane jest jego jedynym członkiem). Zwróć też uwagę,
t
że uniemożliwia użytkownikom zmianę nazwy lub usuwanie wpisów, których nie są właścicielami.bindfs
dir
Nad sobą mamy stałą własność i uprawnienia do plików i katalogów. Wygląda na to,root
że wszystkie pliki są własnością (choć w prawdziwym katalogu są nadal własnością Stephane).Katalogi otrzymują
drwxrwxr-x root stephane
uprawnienia, a inne typy plików-rw-r--r-- root stephane
.Teraz tworzenie pliku działa, ponieważ katalog można zapisać:
Jednak nie można wykonać drugiego zapisu
open()
na tym pliku, ponieważ nie mamy na to pozwolenia:(zwróć uwagę, że dołączanie nie jest tam dozwolone (jako część początkowych wymagań)).
Ograniczenie: chociaż nie możesz usunąć lub zmienić nazwy wpisów z
dir
powodu tegot
bitu, nowe katalogi, które tam utworzysz, nie będą miały tegot
bitu, więc będziesz mógł zmienić nazwę lub usunąć wpisy.źródło
chattr +a
Opcja umożliwi dołączanie tylko. Pliki można zmieniać w ten sposób, ale tylko poprzez dodanie do nich (tj. Dopisanie linii). Nie możesz usuwać istniejących plików, ale tworzyć nowe. Może to pasować do twoich potrzeb:od
man chattr
(zauważ, że dotyczy to również katalogów)
Twoja lista wyglądałaby następująco:
źródło
chattr +a
wtedy mogę utworzyć plik, nie mogę go usunąć, mogę dołączyć. Jeśli utworzę katalog 1 / katalog 2, mogę zrobić to, co chcę IN