Användarna på det här systemet är försiktiga och har sina inställningar på det mycket privata 0077. Användarna vill dock ha gruppspecifika kataloger, där filer kan kopieras så att de uttryckligen delas bara bland andra gruppmedlemmar. Det kan finnas flera sådana aktiekataloger, men alla är specifika för en grupp.
Det räcker inte att ställa in gruppens klibbiga bit i en viss katalog som ska användas för delning. Även om inställningen av den klibbiga biten gör att gruppägarskapet är korrekt på filer som placeras i katalogen, ställs behörigheterna för nämnda filer ofta in så att filerna inte kan läsas eller redigeras, dvs faktiskt inte kan delas. De visas bara i katalogförteckningen. Detta beror på att vissa användare antingen inte tänker på eller inte vet hur man gör den manuella justeringen av gruppbehörigheter manuellt för att tillåta läsning och skrivning. Vi kan ge dem en paus på detta eftersom användare trots allt inte är administratörer. acls kan användas för att ange att en viss grupp har åtkomst till filerna i delningskatalogen, oberoende av vad gruppbehörigheterna skulle ha varit utan acls. Det är den perfekta lösningen, men det fungerar inte riktigt.
I det följande är den delade gruppen ”customer_gateway” och exempelanvändaren som försöker dela en fil är ”svw”. Som kan ses i transkriptet är svw-användaren medlem i gruppen customer_gateway. Katalogen där delning ska ske kallas också ”customer_gateway /”
Följande använder acls. Jag ställde in gruppbehörigheterna, standardgruppbehörigheterna, masken och standardmasken. Det fungerar bra för filer som skapats i katalogen eller för filer som flyttas dit via cat (eller tar), men konstigt nog, inte för filer som ”cp” redigerade där:
# 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::--- >
Vad detta visar är att när en fil skapas i katalogen får den standardbehörigheterna och kan delas. Men användare skapar inte alltid sina filer där, vanligtvis kopierar de dem där.
Men att göra en kopia är samma sak, för att göra en kopia måste vi först skapa en ny fil. Vi pratar om en vanlig kopia här, inte en bevara behörighetskopia. Det är samma som följande formulär, som, btw fungerar och kopierar en fil som kan delas i katalogen oberoende av dess ursprungliga gruppbehörigheter:
cat < data.in > shared/data.out
fungerar bra, rörledning genom tjära fungerar också, men formuläret
cp data.in shared/data.out
misslyckas. cat
ed-filen får standardmask och standardbehörighet. cp
ed-filen behåller sina behörigheter i acl-masken och gruppbehörigheterna, som om den var en cp -p (men det var inte ”t, och därmed de effektiva behörigheterna läste som originalfilen, inte vad acls har ställts in.
Som ett andra försök körde jag detta experiment med grupp klibbig bit, chmod g + rwxs, tillsammans med facl ch anges och fick exakt samma resultat. Även om katalogförteckningarna är vackrare på grund av att gruppägarskapet visas för alla delade filer. Jag körde det också med bara gruppen klibbig bit som ställts in utan att setfacl. Det hade också samma resultat för kopierade filer (så facls ser ganska värdelösa ut för en katalog där filer kopieras för att delas).
På vilken grund och med vilken motivering skiljer linux facls mellan olika former av skapa data? Varför tvinga cp att bevara behörigheter när den inte har fått veta att det ska göras? Vilken anledning skulle motivera den förvirring som orsakas av denna skillnad mellan katt och piping genom tjärarbete men cp fungerar inte? Saknar jag en magisk besvärjelse som skulle göra denna skillnad evaporate?
Är denna sammanfattning korrekt: facls tillåter dig att övervinna äganderätten för att dela filer, det kommer att göra behörigheter mer tillåtna än umask när du ”skapar” filer, såvida inte skapandet beror på cp-kommandot och av god anledning för … för varför?
Kommentarer
Svar
Detta faktum att skapa en katalog där användare kan gå in på är ganska enkelt och kan enkelt göras.
-
För det första måste du hitta en lämplig plats för att skapa den här katalogen, jag rekommenderar att du gör den under en katalog som är tillgänglig till alla (för tillfället). Använd kommandot sudo mkdir för att skapa din nya katalog.
-
För det andra du måste skapa en grupp, en grupp är helt enkelt en samling användare som avrundas för att begränsa eller komma åt vissa delar av ett Linux-system. Du kanske har sett grupper när du skriver ls -l -kommandot som visar något liknande:
rwxrwxrwx 3 root-administratörer 4736 24 okt 12:32 File1.doc
Den del som säger root är ägaren och ** admins ** är den grupp som äger filen. Grupper säkerställer ett enkelt sätt att låta vissa personer se filer. För att skapa en grupp skriver du ”sudo groupadd”, det här är den grupp som används för katalogen.
- När grupperna har skapats kan du lägga till användare i den som du vill komma åt katalogen med med följande kommando sudo adduser Detta gör att du kan lägga till användare som du kan verifiera om användaren är i gruppen med gruppen kommando.
När detta är klart, bläddra till katalogen du skapade och ställ in gruppbehörigheten till 7 (rwx) kom ihåg att du kan justera dessa till dina preferenser men 7 ger användare av gruppen fullständiga behörigheter. till katalogen kan du göra detta genom att skriva ”sudo chmod 770”
Därefter måste du ändra gruppägarskapet för katalogen, så gruppens ägare till katalogen är den grupp du skapade, gör detta med med följande kommando ”sudo chown -R: gruppnamn.
När detta har gjorts kan du nu lägga till vem du än vill till gruppen och de kommer att ha tillgång till att kopiera och dela filer så länge som ey finns i den specifika gruppen för att komma åt katalogen. Vänligen meddela mig om du tyckte att det här var till hjälp !!!!!!
Kommentarer
- Tack, jag klargjorde det ursprungliga inlägget för att förklara varför jag inte ’ använd inte den här manuella metoden.
Svar
I tar bort alla acl ”och använder bara användar- och gruppbehörigheter. Sedan chmod 777
mappen du vill att alla ska ha tillgång till. Testa sedan din åtkomst.
Sedan chmod 770
mappteståtkomst igen.
När detta fungerar som det ska lägga till acl ”s i taget åt gången.
Om de inte behöver utföra perms kan du minska det ännu lägre till rw *, rx *, *** med chmod 660 mappnamn
Kom ihåg för den period där du inte har behörigheter och chmod 777 mappen är öppen för alla så lämna inte den så.
Kommentarer
- Inte alla, bara människor i en viss grupp. Jag kunde ställa in gruppen klibbig bit i katalogen. Problemet är att användarna sedan lägger in filer i katalogen och att gruppen är korrekt men de antingen ’ vet inte eller glömmer att ställa in gruppåtkomst. acls kan användas för att ange att en viss grupp har åtkomst till filerna oberoende av deras gruppbehörigheter. Det är det perfekta svaret. Problemet är att acls har en mask och cp rensar acl-masken för att matcha användarnas umask, så de effektiva behörigheterna tillåter inte att filerna läses.
Svar
Jag försökte det. Det verkar som omasken klättrar gruppbehörigheterna, eftersom gruppbehörigheterna är masken för ACL. Det blockerar alla grupper och ACL: er.
Ett arbete är att göra umask mindre restriktiv.För att göra detta säkert måste du lägga till en grupp för varje användare och göra denna grupp till standardgruppen. (se Varför har alla användare sin egen grupp? ).
Detta är inte perfekt, eftersom det fortfarande finns fall för olika omask (g = rx och g = rwx). Denna strategi tar bara bort behovet av inga gruppbehörigheter.
Kommentarer
- Ja, det var vad jag hade gjort, jag ställde användarmasker till 007 istället av 077 som en lösning. Det är emellertid inte ´, eftersom många filer fortfarande har mindre behörigheter och kopieras in. Det jag hoppades på att lära mig här var varför cp beter sig så. Det verkar för mig att detta borde vara cp -p-beteendet. Jag hade hoppats att någon här kunde förklara det.
Svar
Alla svar hittills har gett råd om hur för att hantera delning av filer via gruppkataloger. Non har svarat på din huvudfråga, tror jag, var: Varför cp a b
beter sig som om cp -p a b
specificerades? man-sidan pratar faktiskt inte om det, men texinfo har detaljerna. info coreutils "cp invocation"
visar:
‘-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. ...
Så om destinationen finns ersätts innehållet, men lägesbitarna är inte förändrad. Om destinationen inte finns kopieras lägesbitar från källan.
cat
, kanske via ett dedikerat shellscript för detta ändamål?