commando mit variablem pfad in sudo NOPASSWD

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
nade
Beiträge: 13
Registriert: 15.06.2015 15:17:00

commando mit variablem pfad in sudo NOPASSWD

Beitrag von nade » 18.05.2017 18:45:30

Moin,

ich stehe aktuell vor der herausforderung, einem user zu ermöglichen eine Datei Read only zu schalten, ohne das er selbst dies für diese datei rückgängig machen kann.
Sprich der user soll die möglichkeit haben die Datei Read only zu schalten, er Darf jedoch nicht die möglichkeit haben ohne höherleigenden zugriff die datei wieder Read Write zu schalten.

Im ersten moment dachte ich ganz einfach .. joa.. Sudoers .. und chown.

Nun mein problemm, der pfad der datei muss zwingend variable sein, d.h. dies muss auf mehrere dateien die mir vorher nicht bekannt sind anwendbar sein.

Erster versuch:
user1 ALL= NOPASSWD: /bin/chown root.root

mhh, dachteste.. problem ist sobald ich das command veränere alla:

/bin/chown root.root /path/to/file

wird dieser von der sudoers nicht mehr als freigebenes command erkannt.

Jemand eine idee?

mludwig
Beiträge: 793
Registriert: 30.01.2005 19:35:04

Re: commando mit variablem pfad in sudo NOPASSWD

Beitrag von mludwig » 18.05.2017 19:39:03

Ein Skript schreiben, welches als Parameter die Datei übergeben bekommt. Das Skript modifiziert dann die Rechte der Datei. Das Skript in /etc/sudoers eintragen.

Edit: Das Skript sollte wohl besser prüfen, ob die Datei nicht irgendwo liegt wo so etwas schaden anrichtet, also mögliche Pfade whitelisten o.ä.
siehe auch http://www.unix.com/security/174559-run ... -sudo.html
mludwig

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: commando mit variablem pfad in sudo NOPASSWD

Beitrag von breakthewall » 19.05.2017 10:50:18

Ein Nutzer sollte niemals solche Rechte besitzen, wenn man Probleme vermeiden will. In dem Bezug ist sudo hoch-gefährlich wenn man hier nicht Gewissenhaft konfiguriert.

Ich würde dafür spontan eine Kommandozeile schreiben die mit Rootrechten läuft, und bspw. periodisch via Cron ausgeführt wird. So könnte find im Nutzerverzeichnis ausschließlich nach Dateien mit exakt diesen Leserechten suchen, die zuvor vom Nutzer definiert wurden, und bei Erfolg via chown den Besitzer auf Root abändern. Denn das ist die einzige Möglichkeit, wie den Nutzer davon abhalten kannst seine eigenen Dateien zu bearbeiten. Und so lange der betreffende Nutzer volle Zugriffsrechte auf sein Nutzerverzeichnis hat, so lange wird er auch in der lange sein die Rechte selbst zu verändern.

Das Codebeispiel geht davon aus, dass die Dateien bspw. via chmod 0444 Datei bearbeitet wurden:

Code: Alles auswählen

find /home/user -type f -user user -perm 0444 -execdir /bin/chown root:root "{}" +
Und vorausgesetzt man macht das auf richtige Weise, könnte man diese Kommandozeile auch in ein Shellscript schreiben, via sudoers entsprechend den Pfad zum Shellscript autorisieren, damit die Dateien auch via Doppelklick auf das Shellscript nicht länger beschreibbar sind. Das Shellscript muss logischerweise ausführbar sein, und darf für den Nutzer nicht lesbar noch beschreibbar sein. Eine alternative Idee wäre chattr -a Datei im Vorfeld mit Rootrechten zu definieren, womit betreffende Dateien zwar stets beschrieben werden können, jedoch das was bereits enthalten ist kann nicht verändert werden. Ist hin und wieder praktisch, z.B. für Logdateien.

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: commando mit variablem pfad in sudo NOPASSWD

Beitrag von uname » 19.05.2017 11:16:44

Vielleicht kannst du den Grund nennen, warum der Benutzer die Rechte überhaupt ändern können soll. Vielleicht kannst du besser generell Backups anfertigen und diese mit den aktuellen Daten abgleichen oder vielleicht eine Software verwenden, die Manipulationen an Dateien erkennt.

nade
Beiträge: 13
Registriert: 15.06.2015 15:17:00

Re: commando mit variablem pfad in sudo NOPASSWD

Beitrag von nade » 01.06.2017 15:23:50

@breakthewall

Natürlich würde ich den pfad dementsprechend exolizit angeben, so der der gewollte befehl nur in den unterverzeichnessen des explizit genannten expliziten pfades funktioniert.

Problem bei der lösung die du vorschlägst ist, das ich die Ordner vorher nicht kenne, die read only gesetzt werden sollen, desweiteren können diese auch nicht nach einer von mir vorher definierten konvention umbenannt werden so das der find befehl wirklich nur diese rausfiltern könnte.
Daher ist ein cronjob eher schwierig umzusetzten.

@uname

Ich habe die anforderung von einer anderen Abteilung bekommen,
diese Wollen explizit nur diesen einen Lagerpunkt verwenden, und keinen Zweiten backup speicher.

Anforderung:
User muss die möglichkeit haben vorher nicht bkeannte ordner und dateien read only zu schalten, ohne dies selbst rückgängig machen zu können - Es handelt sich hierbei um einen NFS share und Rechnungsdateien. Externe unternehmen liefern ebenfalls auf dieses Dateisystem an, und um der veränderung dieser dateien durch externe vorzubeugen soll diese möglichekit gegeben werden. (Dateien des vergangenen geschäftsjahres sollen dan RO geschaltet werden können nach bedarf).

Nun haben ich gleich mehrere probleme:
1. Das ändern des Eigentümers auf root reicht nicht, da der ersteller der datei trotz chmod 0444 die datei noch löschen kann.
2. Ich habe versucht ein Change Atribute durchzuführen, um die datei immutable zu schalten, dies lässt der nfs jedoch nicht zu.
3. Die Abteilung die den auftrag erteilt hat, sieht nicht ein das ein Seperater backup speicher auf den Externe unternehmen keinen zugriff erhalten eine alternative und bessere lösung währe.

Ich habe die Anforderung nun unter oben genannten gründen abgewiesen, da mir aufgrund des NFS shares die hände gebunden sind.
Wie gesagt, ein Change Owner bringt leider nichts, da laut NFS der eigentümer trotzdem noch der Ersteller ist und die datei somit löschen darf.

Danke für eure Mühe und Hilfe.
Grüße
nade

Antworten