
Ich versuche, ein Bash-Shell-Skript zu erstellen, das die Übertragung von Dateien von einem Flash-Gerät in ein vom Benutzer angegebenes Archiv ermöglicht. Allerdings möchte ich verhindern, dass dieser Benutzer in diesem Archivverzeichnis Unterverzeichnisse erstellen kann.
NOTIZ:Im Wesentlichen möchte ich, dass das vom Benutzer erstellte/angegebene Archivverzeichnis eine flache einstufige Struktur aufweist.
Ich habe nicht die geringste Ahnung, wie ich das erreichen soll und wäre für jede Hilfe dankbar, die ich bekommen kann.
Antwort1
Es gibt keinen nativen Mechanismus, um dies einfach zu erreichen. Das Berechtigungssystem von Linux kann keine separaten Berechtigungen zum Erstellen von Dateien und Verzeichnissen festlegen, da Verzeichnisse tatsächlich Dateien sind. Aber versuchen Sie es folgendermaßen:
- Stellen Sie sicher, dass alle Archivverzeichnisse einem (oder mehreren) Benutzer gehören, der nur für diesen Zweck erstellt wurde. Nehmen wir an, sein Name ist archiveuser.
Weisen Sie diesem Benutzer den Besitz aller Archivverzeichnisse zu (ich nehme an, Sie haben viele), z. B.:
$ chown archiveuser:archiveuser /somedir/archivedir1 $ chown archiveuser:archiveuser /somedir/archivedir2 $ chown archiveuser:archiveuser /somedir/archivedir3
Beschränken Sie den Zugriff auf Archivverzeichnisse, sodass nur der Eigentümer darauf zugreifen kann:
$ chmod 700 /somedir/archivedir1 $ chmod 700 /somedir/archivedir2 $ chmod 700 /somedir/archivedir3
Verwenden Sie
sudo
einen Mechanismus, umcp
Befehlszugriff auf Archivverzeichnisse zu gewähren:Hinzufügen zu
/etc/sudoers
:someuser1 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/* someuser2 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/*
Natürlich ist es praktisch, eine eigene Gruppe für alle Benutzer zu erstellen, die diesen Befehl verwenden dürfen. Lesen Sie
sudo
das Tutorial :-).Das ist alles. Benutzer müssen Folgendes verwenden:
$ sudo -u archiveuser cp /path/to/pendrive/somefile /somedir/archiveuser/
Sie können einen Alias erstellen, um die Verwendung zu vereinfachen (z. B. alias cpt='sudo -u archiveuser cp'
). Beachten Sie auch, dass das Kopieren eines Verzeichnisses in diesem Fall cp -r
nicht zulässig ist . Außerdem wird der Befehl durch Berechtigungen verhindert. Damit haben Sie Ihr Ziel erreicht.sudo
mkdir