Rozwiązywanie problemów związanych z uprawnieniami podczas korzystania z zewnętrznego dysku twardego EXT4 z wieloma instalacjami systemu Linux

18

Mam zewnętrzny dysk twardy, a ponieważ używam tylko Ubuntu i Fedory, postanawiam sformatować dysk twardy na ext4, wszystko jest w porządku.

Problem polega na tym, że po zamontowaniu dysku muszę zmienić uprawnienia, aby móc czytać i pisać.

Jakiego rodzaju pozwolenia powinienem użyć? przyznać moją nazwę użytkownika?

Javier Gonzalez
źródło

Odpowiedzi:

5

Kiepskie, choć może to być moje, będę musiał odpowiedzieć na pytanie innym pytaniem. Jeśli wszystko, o czym mówimy, dotyczy jednego systemu operacyjnego, to i tak będzie

sudo chown -R (user name) /dev/(device name)

( ubuntu )

Lub tylko

chown -R (user name) /dev/(device name)

fedora - niesudo, po prostu uruchom polecenie z katalogu głównego.

Część dotycząca zadrapania makaronu i część, na którą nie mam dobrych odpowiedzi, polega na tym, jak to zrobić, abyś nie musiał ręcznie wpisywać podczas przechodzenia między dystrybucjami. Prawie kusiłoby mnie, aby dodać linię do mojej ~/.bashrc, ale prawdopodobnie jest lepszy sposób, którego jeszcze nie znam lub o czym nie myślałem.

użytkownik2367
źródło
Że muszę zmienić uprawnienia za każdym razem, gdy zmieniam dystrybucję
Javier Gonzalez,
1
Aby się upewnić i zaspokoić moją intelektualną ciekawość, wróciłem i dwukrotnie sprawdziłem posiadany napęd USB EXT4. Nie wiedziałem, czy przejęcie własności urządzenia to to samo, co przejęcie własności systemu plików i tak jest. sudo chown -R (nazwa użytkownika) / dev / (nazwa urządzenia) przejmuje własność wszystkich plików na dysku, nawet jeśli ich nie utworzyłeś.
user2367,
Tak, oprócz dodania wiersza do ~ / .bashrc, aby działał automatycznie za każdym razem, gdy uruchamiasz terminal, nie mam na to odpowiedzi. Może może dodać to do crona? Wygląda jednak na to, że powinien istnieć sposób na uruchomienie go, gdy uruchomi się dystrybucja.
user2367,
Naprawdę uwielbiam ext4, ale to bzdura ciągle zmieniaj uprawnienia haha
Javier Gonzalez
10

Najprostszym rozwiązaniem jest upewnienie się, że konta użytkowników Ubuntu i Fedory mają ten sam identyfikator użytkownika (UID).

Myślę, że Fedora domyślnie uruchamia konta użytkowników na 500, podczas gdy Debian i Ubuntu uruchamiają je na 1000, więc jest bardzo prawdopodobne, że w jednym systemie operacyjnym masz numer 500, a drugi 1000. System plików używa tego numeru UID aby śledzić uprawnienia, więc jeśli upewnisz się, że mają ten sam identyfikator UID, będą uważani za tego samego użytkownika i nie wystąpią problemy z uprawnieniami.

Myślę, że najlepsze, co możesz zrobić, to ustawić oba identyfikatory UID = 1000, więc zmień identyfikator UID w systemie Fedora, a następnie upewnij się, że wszystkie pliki na dysku zewnętrznym i w $ HOME użytkownika w instalacji Fedory są własnością UID 1000. Po że nie powinieneś mieć więcej problemów z uprawnieniami.

JanC
źródło
Tak, zrobię to, dziękuję za poświęcony czas :)
Javier Gonzalez
1
Przeczytaj także mój dodatek, w przeciwnym razie użytkownik Fedory nie będzie mógł się zalogować!
JanC
Wszystko jest jasne, teraz to przetestuję, również dzięki za edycję tytułu pytania jest teraz bardzo jasne.
Javier Gonzalez
3

W / etc / fstab możesz ustawić uid = 1000 (w Ubuntu - w Fedorze jest to 500), aby dysk był własnością użytkownika (zakładając, że jesteś pierwszym użytkownikiem, yada yada yada ... jeśli nie, to użytkownik uid from id) i umask = 000, jeśli chcesz, aby wszyscy użytkownicy mieli dostęp (lub 077 tylko dla tego określonego przez uid = - to maska, więc stawiasz przeciwieństwo tego, co chciałbyś chmod)

Aby uzyskać więcej informacji na temat korzystania z / etc / fstab: http://ubuntulinuxtipstricks.blogspot.com/2008/02/fun-with-etcfstab.html

maco
źródło
1
Jeśli ustawię uprawnienie na 077, nie muszę zmieniać uprawnienia, kiedy zmieniam z Ubuntu na Fedorę?
Javier Gonzalez
@Dracirate: Myślę, że możesz potrzebować 000 zamiast 077. Jeśli umieścisz wpis fstab dla napędu w każdym systemie (zarówno Ubuntu, jak i Fedorę), automatycznie zamontują go, aby był użyteczny.
Maco
3

Niestety jądro Linuksa wymusza uprawnienia POSIX na ext2 / ext3 / ext4 FS.

Możesz obejść uprawnienie POSIX dla udostępnionej grupy. Zadaję odpowiednie pytanie: /unix/273144/predefined-group-ids-across-linux-distros/, ale mimo wszystko przeprowadziłem własne badania.

Odkryłem, że grupa sys współdzieli identyfikator 3 na Debian, Ubuntu, RedHat, Fedora, CentOS, Suse, FreeBSD, OpenBSD, NetBSD, MacOSX, Solaris.

Mając na uwadze takie odkrycie, jedno rozwiązanie może wyglądać następująco:

$ sudo chgrp -R sys /mnt/data/dir
$ sudo chgmod -R g+s /mnt/data/dir
$ sudo fsetacl -R -m g:sys:rwx /mnt/data/dir
$ sudo fsetacl -R -d -m g:sys:rwx /mnt/data/dir

i smak tego (kiedykolwiek używasz Linux / FreeBSD / MacOSX / Solaris):

$ sudo adduser user sys

Zobacz też:

gavenkoa
źródło
Stosując tę metodę, wykonywanie cd /mnt/data/dir; touch example.txt; ls example.txt ... ... pokazy -rw-rw----+ 1 user user 3 nov 27 20:16 example.txt. Wykonywanie później mv example.txt ~; ll ~/example.txt... pokazuje ... -rw-rw----+ 1 user user 0 nov 27 21:22 /home/user/example.txt, z tym +na końcu uprawnień. Wiele z +nich pojawi się w wielu miejscach, co spowoduje, że ludzie będą się zastanawiać, dlaczego te pliki są wyjątkowe (tylko dlatego, że zostały skopiowane / przeniesione z określonego folderu). Czy jest jakiś sposób, aby przestać produkować je +automatycznie?
Ganton
2

Możesz po prostu spróbować użyć exfat lub NTFS. Dla mnie to działa w ten sposób. Ale nie robię tego teraz, jeśli działa z każdym zezwoleniem na plik. Myślę, że nie.

d3rdon
źródło
2

Jest to niewielka odmiana podejścia @ gavenkoa do używania grup współdzielonych i nie obejmuje modyfikacji zamontowanego napędu.

Sprawdź, jaki identyfikator grupy (GID) jest używany w zamontowanym napędzie.

su
cd /mnt/data/dir  # or wherever it is mounted
ls -l

Powiedzmy, że widzisz coś podobnego do następującego:

drwxr-xr-x 3 12588 12000  4096 30.06.2017 11:22 Documents/

Oznacza to 12000bieżący identyfikator GID danych na dysku, a dane mogą być odczytywane i wykonywane (choć nie mogą być zapisywane) przez żadnego innego użytkownika z grupy. Utwórz nową grupę (np. driveusers) I dodaj bieżącego użytkownika do nowej grupy:

groupadd -g 12000 driveusers
sudo gpasswd -a $USER driveusers  # add the current user to the new group
sudo chmod 770 /mnt/data/dir      # optional, just to ensure the drive mount is accessible to user and group of the drive
jadelord
źródło
1

Znalazłem inne rozwiązania:

/unix/422656/how-to-make-an-ext4-formatted-usb-drive-with-full-rw-permissions-for-any-linux-m/468933#468933

/unix//a/273705

Z tym:

sudo chgrp -R sys /mnt/data/dir
sudo chmod -R g+s /mnt/data/dir
sudo setfacl -R -m g:sys:rwx /mnt/data/dir
sudo setfacl -R -d -m g:sys:rwx /mnt/data/dir

i smak tego:

sudo adduser user sys  

Twój użytkownik może odczytać / zapisać dowolny plik /dir.

@jadelord @ gavenkoa, czy uważasz, że można ulepszyć proponowane rozwiązania dla użytkowników Ubuntu (lub Fedory)? Dzięki

horyzontalne
źródło