GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come consentire agli utenti non Sudoer di eseguire uno script che esegue operazioni di root?

Supouse ho una directory /opt/expe e voglio che qualsiasi utente crei file .txt su di esso. Voglio che qualsiasi utente digiti qualcosa del genere:

$ whoami
user1
$ export $file_name=my_txt_file
$ /opt/expe/create_file.sh
$ ls -cal /opt/expe
total 12
drwxr-xr-x 2 root  root 4096 Jul 29 19:27 .
drwxr-xr-x 6 root  root 4096 Jul 29 19:14 ..
-rwsr-sr-t 1 root  root   65 Jul 29 19:29 create_file.sh
-rw-r--r-- 1 user1 root    0 Jul 29 19:27 my_txt_file.txt

Lo provo con un sudoer

$ whoami
user_sudoer
$ cat /opt/expe/create_file.sh
touch /opt/expe/$file_name.txt
chown $USER /opt/expe/$file_name.txt
$ chmod a+x /opt/expe/create_file.sh
$ chmod a+t /opt/expe/create_file.sh
$ chmod a+s /opt/expe/create_file.sh
$ chmod a+X /opt/expe/create_file.sh

Quindi con utente non root ho ottenuto:

$ whoami
user1
$ export $file_name=my_txt_file
$ /opt/expe/create_file.sh
touch: cannot touch '/opt/expe/prueba_txt.txt': Permission denied

Posso fare qualcosa del genere. Voglio qualcosa come postgres SECURITY DEFINER concetto.

Risposta accettata:

Non ho abbastanza familiarità con Postgres, ma vedo almeno 4 opzioni:

  1. Modifica i permessi di /opt/expe con chmod per consentire a tutti gli utenti di creare file all'interno di questa directory.

  2. Crea un gruppo separato per gli utenti che devono scrivere lì e modifica l'autorizzazione del gruppo /opt/expe con chmod per consentire a questo gruppo di scrivere lì.

  3. Crea un gruppo separato e aggiungi la regola sudoers per consentire loro di eseguire questo script, come descritto ad esempio qui:Come può un utente montare un contenitore di file crittografato in VeraCrypt?

  4. Usa la sicurezza delle etichette per un controllo dell'accesso a grana fine. Ecco una breve descrizione delle etichette di sicurezza e alcuni ulteriori collegamenti:https://unix.stackexchange.com/questions/53028/what-are-ext4-security-labels

Tieni presente che il permesso di creare/rimuovere file è una proprietà della directory e non del file stesso.


Ubuntu
  1. Come eseguire uno script di shell in background?

  2. Come eseguire il terminale come root?

  3. Come eseguire uno script??

  4. Aggiunta di utenti ai sudoer tramite script di shell

  5. Come eseguire Elasticsearch 2.1.1 come utente root nella macchina Linux

Come aggiungere utenti a Sudoers (e rimuovere) su Ubuntu

Come creare ed eseguire uno script Shell in Ubuntu 20.04 LTS

Come eseguire lo script della shell come servizio Systemd in Linux

Come eseguire uno script Python in PHP

Come eseguire uno script Bash

Come eseguire Dolphin come root?