2016-03-20 25 views
1

Ich versuche, auf ein Verzeichnis unter Verwendung ls zugreifen, aber ich kann nur mit sudo ls für Benutzer hduser zugreifen, während für Benutzer avp ich ohne sudo darauf zugreifen kann.Befehl ausführen ohne sudo

Wie kann ich auf dieses Verzeichnis und alle Unterverzeichnisse zugreifen, ohne sudo die ganze Zeit für den Benutzer hduser zu verwenden?

Hier sind die Dateiberechtigungen:

[email protected]:~$ ll /media/avp/ 
total 24 
drwxr-xr--+ 4 root root 4096 Mar 20 12:50 ./ 
drwxr-xr-x 3 root root 4096 Aug 5 2015 ../ 
drwxrwxrwx 1 root root 12288 Mar 20 11:40 study/ 

[email protected]:~$ mkdir /media/avp/test 
mkdir: cannot create directory ‘/media/avp/test’: Permission denied 

[email protected]:~$ sudo mkdir /media/avp/test 
[email protected]:~$ ls /media/avp/test 
ls: cannot access /media/avp/test: Permission denied 

[email protected]:~$ ls /media/avp/ 
ls: cannot access /media/avp/study: Permission denied 
ls: cannot access /media/avp/test: Permission denied 
study test 

[email protected]:~$ sudo ls /media/avp/ 
study test 

PS: Ich habe Beiträge über die Ausführung Befehl sudo ohne Passwort zu lesen, aber ich will nicht sudo-Befehl in erster Linie für die Datei Zugriff auf Befehle verwenden (z. B. ls, mkdir usw.). Ich benutze Ubuntu seit ein paar Jahren, aber mir fehlt etwas sehr Grundlegendes, das ich klar verstehen will, also stelle ich diese Frage hier.

Antwort

1

Eines der Prinzipien von Linux ist: Alles ist eine Datei. Das bedeutet, dass Prozesse und Verzeichnisse als Dateien behandelt werden müssen und alle Dateien drei Berechtigungen haben: für den Benutzer, für die Gruppe und für den Rest der Benutzer.

Die Berechtigungen sind: 1 auszuführen, 4 zu lesen, 2 zu schreiben. Wenn Sie also eine Datei mit der Berechtigung "644" sehen, bedeutet dies, dass der Benutzer darin lesen und schreiben kann, während die Gruppe und der Rest der Benutzer sie nur lesen können. Wenn Sie eine Datei mit den Berechtigungen "777" (die MS Windows-Methode) sehen, bedeutet dies, dass alle Personen mit dieser Datei machen können, was sie wollen, im Gegensatz dazu ist eine Datei mit der Berechtigung "000" auch für den Eigentümer "gesperrt" Datei. Der Befehl Erlaubnis zu ändern ist „chmod“, zum Beispiel, um eine neue Datei zu erstellen:

$ touch test.txt 
$ ls -l test.txt 

Sie so etwas wie sehen:

-rw-r--r-- 1 manuel manuel 0 Mär 20 12:41 test.txt 

das heißt: „der Besitzer Benutzer manuel lesen und schreiben kann Mit dieser Datei können die Benutzer der Gruppe manuel diese Datei nur lesen und der Rest der Benutzer kann sie nur lesen. "

Woher stammen diese Berechtigungen? Nun, sie sind für die "umask" definiert, standardmäßig umask ist 644 für die neuen Dateien, die Sie erstellen oder kopieren und 755 für Verzeichnisse, wenn Sie ein Verzeichnis mit dem Befehl "mkdir" erstellen, wenn Sie "ls -la" eingeben sehen Sie ein "d" am Anfang einiger Zeilen, die anzeigen, dass die "Datei" ein Verzeichnis ist und Ausführungsberechtigungen benötigt, auf die ein Benutzer zugreifen kann: in Linux-Verzeichnissen sind Dateien mit Ausführungsberechtigungen.

Jedes Mal, fügen Sie einen neuen Benutzer auf das System mit dem Befehl:

$sudo adduser thomas 

der Befehl automatisch erstellt auch die Gruppe „thomas“ und erstellt ein Verzeichnis in dem/ihn Home-Verzeichnis. Wenn Sie Apache oder mysql oder postgresql installieren, erstellt apt-get auch einen eindeutigen Benutzer und eine Gruppe, um diese Prozesse zu bearbeiten, da dies eine Windows-ähnliche Vorgehensweise ist, bei der alle Prozesse für einen einzigen Administrator bearbeitet werden, wenn jemand diese Person hackt hätte die volle Kontrolle über das ganze System. Natürlich muss der Benutzer "root" in Linux die kleinere Anzahl von Prozessen ausführen.

Sie können die aktuellen Gruppen in Ihrem System mit:

$ cat /etc/group 

Nun nehmen wir den Benutzer „thomas“ will die Datei test.txt bearbeiten, die wir gerade erstellt haben, er kann nicht, weil die Datei gehört dem Benutzer "manuel" und der Gruppe "manuel".Sie haben mehrere Möglichkeiten, können Sie den Besitzer der Datei mit dem Befehl chown ändern könnte:

$ chown thomas.thomas test.txt 

jetzt die Datei durch den Benutzer „thomas“ und die Gruppe „Thomas“, aber das ist ein Problem, weil vielleicht gehört Sie möchten die Datei später bearbeiten und können dies jetzt nicht tun. Statt den Eigentümer zu ändern, vielleicht brauchen Sie nur Schreibrechte auf die Datei hinzuzufügen:

$chmod 666 test.txt 

nun der Benutzer thomas in dieser Datei schreiben können, und Sie auch. Aber jetzt haben Sie das Problem, dass jeder Benutzer in die Datei schreiben kann. Die wirkliche Lösung ist Schreibrechte für den Benutzer zu geben und die Gruppe:

$sudo useradd -G manuel thomas 

jetzt „Thomas“ ist Mitglied der Gruppe „manuel:

$chmod 664 test.txt 

und dann den Benutzer zu der Gruppe hinzufügen "(Ein Benutzer kann Mitglied vieler Gruppen sein) und dann kann er in die Datei schreiben, andere Benutzer jedoch nicht.

Jetzt verstehen Sie, dass Ihr dir:

drwxr-xr--+ 4 root root 4096 Mar 20 12:50 ./ 

eine „Datei“ vom Root-Benutzer und der Stammgruppe und hduser ist nicht berechtigt, es auszuführen Besitz ist. Sie können mehrere Dinge tun, wie rekursiv das gesamte Verzeichnis zu hduser geben:

$ sudo chown -R hduser /media/avp/ 

oder Sie können hduser der Gruppe „root“ hinzufügen, aber das wäre gefährlich sein.

+1

Danke für die gründliche Erklärung !! – avp

Verwandte Themen