So lassen Sie einen Benutzer ein Verzeichnis erstellen, ohne jedoch ein Unterverzeichnis zu erstellen

So lassen Sie einen Benutzer ein Verzeichnis erstellen, ohne jedoch ein Unterverzeichnis zu erstellen

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:

  1. 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.
  2. 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
    
  3. 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
    
  4. Verwenden Sie sudoeinen Mechanismus, um cpBefehlszugriff 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 sudodas Tutorial :-).

  5. 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 -rnicht zulässig ist . Außerdem wird der Befehl durch Berechtigungen verhindert. Damit haben Sie Ihr Ziel erreicht.sudomkdir

verwandte Informationen