Na moim serwerze mam katalog /srv/svn
.
Czy to możliwe, aby ustawić ten katalog do posiadania wielu własność zasobu grupie, na przykład devFirmA
, devFirmB
i devFirmC
?
Chodzi o to, że chcę subversion
kontrolować wersję, zarządzać wieloma użytkownikami w wielu repozytoriach i nie wiem, jak się połączyć /srv/svn
, katalog główny repozytoriów, uprawnienia. Mam na przykład trzech firm, FirmA
, FirmB
i FirmC
. Teraz, w środku /srv/svn
ja utworzyliśmy trzy katalogi, FirmA
, FirmB
, FirmC
jak i wewnątrz nich Utworzyłem repozytorium dla każdego projektu i teraz nie wiem jak ustanowić system uprawnień, ponieważ wszystkie elementes wewnątrz /srv/svn
są własnością root:root
, która nie jest w porządku, czy jestem źle?
permissions
group
subversion
KernelPanic
źródło
źródło
Odpowiedzi:
Jest to niezwykle powszechny problem, jeśli dobrze go rozumiem i ciągle się z nim spotykam. Gdybym korzystał z list ACL dla każdego trywialnego problemu z grupowaniem, miałbym mnóstwo niezarządzalnych systemów. Stosują najlepsze praktyki, gdy nie można tego zrobić w żaden inny sposób, nie w tej sytuacji. Jest to metoda, którą gorąco polecam.
Najpierw musisz ustawić swój umask na 002, aby grupa mogła się nim dzielić. Zwykle tworzę taki plik
/etc/profile.d/firm.sh
, a następnie dodaję polecenie testowe z umask.[ $UID -gt 10000 ] && umask 002
Następnie musisz ustawić katalogi na odpowiednie grupy,
Na koniec musisz poprawnie ustawić bit SGID, aby grupa zawsze pozostała do tej, którą ustawiłeś. Zapobiegnie to ustawieniu zapisanego pliku na GID pisarza.
Teraz wreszcie, jeśli chcesz uniemożliwić dostęp do katalogów innym użytkownikom.
źródło
svnadmin
:sudo usermod -a -G FirmA,FirmB,FirmC svnadmin
Spowoduje to dodaniesvnadmin
do wszystkich tych grup. Ponieważ pliki we wszystkich tych grupach mają włączoną funkcję „zapisu grupowego” (chmod 664
zrobiłeś to), ty i firmaX, będziecie jedynymi autorami plików należących do firmyX.find /srv/svn/FirmA -type f -print0 | xargs -0 chmod ug+rw,o+r,o-wx
Możesz mieć tylko jedną grupę jako właściciela .
Jednak za pomocą list kontroli dostępu możesz zdefiniować uprawnienia dla innych grup.
Sprawdź, czy masz zainstalowaną listę ACL wydającą polecenie
getfacl
. Jeśli w systemie nie ma zainstalowanej listy ACL, zainstaluj narzędzia wiersza polecenia znajdujące się wacl
pakiecie z:sudo apt-get install acl
Za pomocą
getfacl
można odczytać informacje ACL katalogu lub innego pliku, a za pomocąsetfacl
można dodawać grupy do pliku.Na przykład:
Dodaje grupę
devFirmB
z r EAD wagowo rytu, E x ecute uprawnienia do katalogu/srv/svn
.Jeśli chcesz, aby pliki utworzone w tym katalogu były własnością wielu grup, ustaw ACL jako domyślną ACL.
X
W domyślnej grupy wprowadzania środków „umożliwia wykonanie jeśli wykonywalny przez właściciela (lub ktokolwiek inny)”.źródło
Nie można mieć pliku należącego do wielu grup systemu Linux z tradycyjnymi uprawnieniami w systemie Unix. ( Jest to jednak możliwe w przypadku ACL .)
Możesz jednak skorzystać z poniższego obejścia i utworzyć nową grupę (np. Nazwaną
devFirms
), która obejmie wszystkich użytkowników grupdevFirmA
,devFirmB
idevFirmC
.Tworzysz nowe grupy użytkowników za pomocą:
Po pierwsze, może być konieczne zainstalowanie,
id-utils
aby uzyskaćlid
-command:Następnie można uruchomić następującą linię kodu na łatwe kopiowanie wszystkich użytkowników
SOURCEGROUP
doTARGETGROUP
. Oczywiście musisz uruchomić polecenie raz dla każdej grupy, którą chcesz skopiować. Nie zapomnij zastąpić wielkimi symbolami zastępczymi rzeczywistymi nazwami grup.W twoim przypadku musisz uruchomić polecenie (wszystkie linie jednocześnie):
Pamiętaj, że te polecenia kopiują tylko wszystkich użytkowników, którzy są bieżącymi członkami grup źródłowych. Każdy użytkownik, który zostanie dodany później, będzie musiał zostać ręcznie dodany do wspólnej grupy za pomocą
adduser
polecenia. Po prostu ponownie zamień wielkie litery na rzeczywistą nazwę użytkownika i grupy (devFirms
):Dzięki Justinowi Ethierowi za odpowiedź na Unix i Linux.SE: Czy dodać wszystkich użytkowników jednej grupy do innej?
źródło
Nie, nie jest to możliwe.
Każdy plik (a więc także katalogi) może mieć tylko jednego użytkownika i jedną grupę.
źródło
Aby zapewnić różne prawa wielu grupom lub użytkownikom, użyj następujących poleceń (testowane na RHEL 6 i 7):
Aby uczynić nowego właściciela grupy:
Aby sprawdzić bieżące ustawienia acl:
źródło