Wie soll ich die Berechtigung für die Rails App einrichten?

8

Zur Zeit setze ich 0777 auf alle Verzeichnisse und Dateien.
Allerdings habe ich Angst davor, von anderen zugegriffen zu werden.
Protokolldateien und alle Controller, Modelle, Ansichten und die Dateien in der Konfiguration werden auf 0777

festgelegt

Im Allgemeinen, wie sollen sie eingestellt werden?

  • Protokolldateiverzeichnis und seine Dateien
  • Controller-Dateien
  • Modelldateien
  • view fies
  • die Dateien im Konfigurationsverzeichnis
HUSTEN 15.02.2013, 06:51
quelle

1 Antwort

12

Sie sollten definitiv 0777 nicht für Ihre Dateiberechtigungen verwenden. Dadurch können Sie leichter Schwachstellen entdecken.

Im Allgemeinen folgen Sie diesem Prinzip:

  • Verwenden Sie für Ordner 0755 , was rwxr-xr-x entspricht. Die Ausführungsberechtigung ermöglicht das Anzeigen von Ordnerinhalten.

    find / your / rails / dir -type d -exec chmod 755 {} +

  • Verwenden Sie für ausgeführte Skripte auch 0755 . Dies ermöglicht jedem, die Skripte auszuführen, aber keine Änderungen daran vorzunehmen (schreiben).

  • Verwenden Sie für alle anderen Dateien 0644 , was rw-r--r-- entspricht. Auf diese Weise kann jeder die Datei lesen, der Eigentümer kann in die Datei schreiben und niemand kann die Datei ausführen. Dies verhindert unter anderem, dass schädliche Skripts hochgeladen und ausgeführt werden.

    find / your / rails / dir -type f -exec chmod 644 {} +

  • Optional können Dateien mit Kennwörtern restriktivere Berechtigungen enthalten, insbesondere config/database.yml oder alle Dateien mit Kennwörtern für Mail-Dienste (Mandrill, Sendgrid, Poststempel), Amazon S3-Buckets oder Redis-Verbindungen. Für diese Dateien können Sie 0600 verwenden.

In einer Produktionsumgebung sollte Ihre Rails-App als derselbe Benutzer (nicht als root) ausgeführt werden, der all diese Dateien besitzt. Dies wird am einfachsten erreicht, indem Passagier , Einhorn oder Ausführen eines Webservers wie Mongrel oder Webrick als lokaler Benutzer, der auf einem Port wie localhost:3000 horcht und Apache oder Nginx Reverseproxy für localhost:3000 hat.

    
Benjamin 15.02.2013, 07:40
quelle