Użytkownicy tego systemu są ostrożni i ustawiają swoje umaski na bardzo prywatne 0077. Jednak użytkownicy chcieliby mieć określone dla grup katalogi, w których pliki mogą być kopiowane, aby jawnie udostępniać je tylko innym członkom grupy. Może istnieć wiele takich katalogów udziałów, chociaż każdy jest specyficzny dla grupy.
Ustawienie „sticky bit” grupy w danym katalogu, który ma być używany do udostępniania, nie wystarczy. Chociaż ustawienie lepkiego bitu powoduje, że własność grupy jest poprawna w przypadku plików umieszczonych w katalogu, uprawnienia do tych plików są często ustawione w taki sposób, że plików nie można odczytać ani edytować, tj. Nie można ich faktycznie udostępniać. Po prostu pojawiają się na liście katalogów. Dzieje się tak, ponieważ niektórzy użytkownicy albo nie myślą, albo nie wiedzą, jak ręcznie dostosować wymagane uprawnienia grupy, aby umożliwić odczyt i zapis. Możemy im w tym zrobić przerwę, ponieważ w końcu użytkownicy nie są administratorami. Za pomocą acls można określić, że dana grupa ma dostęp do plików w katalogu współużytkowanym, niezależnie od tego, jakie byłyby uprawnienia grupy bez list ACL. To idealne rozwiązanie, ale nie do końca działa.
W dalszej części współużytkowana grupa to „customer_gateway”, a przykładowy użytkownik próbujący udostępnić plik to „svw”. Jak widać w transkrypcji, użytkownik svw jest członkiem grupy customer_gateway. Katalog, w którym ma nastąpić udostępnianie, jest również nazywany „customer_gateway /”
Poniższy tekst używa acls. Ustawiam uprawnienia grupy, domyślne uprawnienia grupy, maskę i domyślną maskę. Działa dobrze w przypadku plików utworzonych w katalogu lub plików przeniesionych tam przez cat (lub tar), ale o dziwo, nie w przypadku plików, które tam zostały „cp”:
# rm -r customer_gateway/ # umask 0077 # cat ~/script1 mkdir customer_gateway chown :customer_gateway customer_gateway/ chmod g+rwx customer_gateway/ setfacl -m group:customer_gateway:rwX customer_gateway/ setfacl -m d:group:customer_gateway:rwX customer_gateway/ setfacl -m m::rwX customer_gateway/ setfacl -m d:m::rwX customer_gateway/ getfacl customer_gateway cd customer_gateway touch cga cat << EOF > cgb c g b EOF ls -l # . ~/script1 # file: customer_gateway # owner: root # group: customer_gateway user::rwx group::rwx group:customer_gateway:rwx mask::rwx other::--- default:user::rwx default:group::rwx default:group:customer_gateway:rwx default:mask::rwx default:other::--- total 4 -rw-rw----+ 1 root root 0 Mar 2 20:43 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb # su - svw /home/svw/bin:/usr/local/bin:/usr/bin:/bin (note umask is 0077) > cd /share/customer_gateway/ > groups svw adm dip video plugdev google-sudoers customer_gateway > cat >> cga e f g > cat > cgc c g c > ls -l total 12 -rw-rw----+ 1 root root 6 Mar 2 20:44 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb -rw-rw----+ 1 svw svw 6 Mar 2 20:44 cgc > ls ~/dat ta tb tc > cat ~/dat/ta > ta > cp ~/dat/tb tb > ls -l total 20 -rw-rw----+ 1 root root 6 Mar 2 20:44 cga -rw-rw----+ 1 root root 6 Mar 2 20:43 cgb -rw-rw----+ 1 svw svw 6 Mar 2 20:44 cgc -rw-rw----+ 1 svw svw 4 Mar 2 20:45 ta -rw-------+ 1 svw svw 4 Mar 2 20:45 tb > getfacl ta # file: ta # owner: svw # group: svw user::rw- group::rwx #effective:rw- group:customer_gateway:rwx #effective:rw- mask::rw- other::--- > getfacl tb # file: tb # owner: svw # group: svw user::rw- group::rwx #effective:--- group:customer_gateway:rwx #effective:--- mask::--- other::--- >
Pokazuje to, że gdy plik jest tworzony w katalogu, otrzymuje on domyślne uprawnienia i można go współużytkować. Ale użytkownicy nie zawsze tworzą tam swoje pliki, zwykle tam je kopiują.
Ale zrobienie kopii to to samo, ponieważ aby zrobić kopię, musimy najpierw utworzyć nowy plik. tutaj zwykła kopia, a nie kopia z zachowaniem uprawnień. Jest taka sama, jak poniższy formularz, który przy okazji działa i kopiuje plik, który będzie współdzielony w katalogu niezależnie od jego oryginalnych uprawnień grupowych:
cat < data.in > shared/data.out
działa dobrze, działa również potokowanie przez tar, ale formularz
cp data.in shared/data.out
nie działa. cat
plik ed otrzymuje domyślną maskę i domyślne uprawnienia. Plik cp
ed zachowuje swoje uprawnienia w masce ACL i uprawnienia grupy, tak jakby to było a cp -p (ale to nie było „t), a zatem efektywne uprawnienia odczytywane są jak oryginalny plik, a nie to, na co zostały ustawione listy ACL.
Jako drugą próbę przeprowadziłem ten eksperyment z group sticky bit, chmod g + rwxs, wraz z facl ch anges i otrzymałem dokładnie takie same wyniki. Chociaż listy katalogów są ładniejsze z powodu własności grupowej wyświetlanej dla wszystkich udostępnionych plików. Uruchomiłem go również z ustawionym tylko bitem sticky grupy, bez setfacl. Dało to również ten sam wynik dla skopiowanych plików (więc facle wyglądają dość bezużytecznie dla katalogu, w którym pliki są kopiowane do współdzielenia).
Na jakiej podstawie i z jakim uzasadnieniem faclowanie linux rozróżnia różne formy tworzysz dane? Po co zmuszać cp do zachowania uprawnień, skoro nie powiedziano mu, aby to zrobić? Jaki powód uzasadniałby zamieszanie spowodowane tym rozróżnieniem między kotem a pipingiem przez działanie smoły, ale cp nie działa? Czy brakuje mi magicznej inkantacji, która uczyniłaby to rozróżnienie wyparować?
Czy to podsumowanie jest poprawne: facls pozwoli ci przezwyciężyć własność współdzielenia plików, sprawi, że uprawnienia będą bardziej liberalne niż umask podczas „tworzenia” plików, chyba że to utworzenie jest spowodowane poleceniem cp i nie bez powodu, ponieważ … ponieważ dlaczego?
Komentarze
Odpowiedź
Fakt tworzenia katalogu, w którym użytkownicy, do których mogą wejść, jest dość prosta i można to łatwo zrobić.
-
Najpierw musisz znaleźć odpowiednie miejsce na utworzenie tego katalogu, zalecam umieszczenie go w katalogu, który jest dostępny dla wszystkich (na razie). Użyj polecenia sudo mkdir , aby utworzyć nowy katalog.
-
Po drugie musisz utworzyć grupę, grupa to po prostu zbiór użytkowników, którzy są zaokrąglani w górę w celu ograniczenia lub dostępu do pewnych części systemu linux. Grupy mogły być widoczne podczas wpisywania polecenia ls -l , które zawiera coś takiego:
rwxrwxrwx 3 administratorów głównych 4736 24 października 12:32 File1.doc
Część, która mówi, że root jest właścicielem, a ** admins ** to grupa, do której należy plik. Grupy zapewniają łatwy sposób, aby umożliwić określonym osobom przeglądanie plików. Aby utworzyć grupę, wpisz „sudo groupadd, będzie to grupa używana do katalogu.
- Po utworzeniu grup możesz dodać do niej użytkowników, do których chcesz uzyskać dostęp do katalogu, poprzez używając następującego polecenia sudo adduser Umożliwi to dodanie użytkowników, których możesz sprawdzić, czy użytkownik jest w grupie z grupą
Po wykonaniu tej czynności przejdź do utworzonego katalogu i ustaw uprawnienia grupy na 7 (rwx) pamiętaj, że możesz dostosować je do swoich preferencji, ale 7 daje użytkownikom grupy pełne uprawnienia do katalogu, możesz to zrobić wpisując „sudo chmod 770”
Następnie musisz zmienić prawa własności do katalogu, więc właścicielem grupy katalogu jest grupa, którą utworzyłeś. za pomocą następującego polecenia „sudo chown -R: nazwa grupy.
Gdy to wszystko zostanie zrobione, możesz teraz dodać kogokolwiek chcesz do grupy, a oni będą mieli dostęp do kopiowania i udostępniania plików, o ile th Są w tej określonej grupie i mają dostęp do katalogu. Daj mi znać, jeśli uznasz to za pomocne !!!!!!
Komentarze
- Dziękuję, wyjaśniłem oryginalny post, aby wyjaśnić, dlaczego nie ' nie używaj tego ręcznego podejścia.
Odpowiedź
I usunie wszystkie listy ACL i po prostu użyj uprawnień użytkownika i grupy. Następnie chmod 777
folder, do którego wszyscy mają mieć dostęp. Następnie sprawdź swoje uprawnienia.
Następnie chmod 770
folder ponownie testuje dostęp.
Gdy to zadziała, należy dodawać kolejne listy ACL pojedynczo.
Jeśli nie potrzebują uprawnień do wykonywania, możesz zredukować je jeszcze niżej do rw *, rx *, *** za pomocą chmod 660 nazwa folderu
Pamiętaj o okresie, w którym nie masz uprawnień ACL i chmod 777. folder będzie szeroko otwarty dla wszystkich, więc nie zostawiaj go w ten sposób.
Komentarze
- Nie dla wszystkich, tylko osoby z określonej grupy. Mogłem ustawić lepki bit grupy w katalogu. Problem polega na tym, że użytkownicy umieszczają wtedy pliki w katalogu, a grupa jest poprawna, ale albo nie ' nie wiedzą, albo zapominają o ustawieniu dostępu do grupy. acls mogą służyć do określenia, że dana grupa ma dostęp do plików niezależnie od uprawnień grupy. To doskonała odpowiedź. Problem polega na tym, że listy ACL mają maskę, a cp czyści maskę ACL, aby dopasować ją do umask użytkownika, więc efektywne uprawnienia nie pozwalają na odczyt plików.
Odpowiedź
Próbowałem. Wygląda na to, że umask blokuje uprawnienia grupy, ponieważ uprawnienia grupy są maską listy ACL. Blokuje wszystkie grupy i listy ACL.
Rozwiązaniem jest uczynienie umaski mniej restrykcyjną.Aby zrobić to bezpiecznie, musisz dodać grupę dla każdego użytkownika i ustawić tę grupę jako domyślną. (patrz Dlaczego każdy użytkownik ma swoją własną grupę? ).
To nie jest idealne rozwiązanie, ponieważ wciąż istnieje argument za różnymi umaskami (g = rx i g = rwx). Ta strategia eliminuje jedynie potrzebę braku uprawnień grupowych.
Komentarze
- Tak, właśnie to zrobiłem, zamiast tego ustawiłem maski użytkowników na 007 z 077 jako obejście. Nie jest to jednak ´ idealne, ponieważ wiele plików wciąż ma mniejsze uprawnienia i są kopiowane. Miałem nadzieję, że dowiem się tutaj, dlaczego cp zachowuje się w ten sposób. Wydaje mi się, że powinno to być zachowanie cp -p. Miałem nadzieję, że ktoś tutaj może to wyjaśnić.
Odpowiedź
Wszystkie dotychczasowe odpowiedzi zawierały porady, jak zajmować się udostępnianiem plików przez katalogi grupowe. Myślę, że Non odpowiedział na główne pytanie, które brzmiało: Dlaczego cp a b
zachowuje się tak, jakby określono cp -p a b
? Strona podręcznika nie mówi o tym w rzeczy samej, ale texinfo zawiera szczegóły. info coreutils "cp invocation"
pokazuje:
‘-p’ ‘--preserve[=ATTRIBUTE_LIST]’ Preserve the specified attributes of the original files. ... ... In the absence of this option, the permissions of existing destination files are unchanged. Each new file is created with the <=== mode of the corresponding source file minus the set-user-ID, <=== set-group-ID, and sticky bits as the create mode; the operating system then applies either the umask or a default ACL, possibly resulting in a more restrictive file mode. ...
Jeśli więc miejsce docelowe istnieje, zawartość jest zastępowana, ale bity trybu są nie zmieniony. Jeśli miejsce docelowe nie istnieje , bity trybu są kopiowane ze źródła.
cat
, może za pomocą dedykowanego do tego celu skryptu powłoki?