GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak umožnit uživatelům, kteří nejsou sudoers, spouštět skript, který provádí operace root?

Předpokládejme, že mám adresář /opt/expe a chci, aby na něm každý uživatel vytvářel soubory .txt. Chci, aby každý uživatel napsal něco takového:

$ 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

Zkouším to pomocí sudoeru

$ 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

Poté s uživatelem bez oprávnění root jsem získal:

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

Mohu udělat něco takového? Chci něco jako postgres SECURITY DEFINER koncept.

Přijatá odpověď:

Nejsem dostatečně obeznámen s Postgres, ale vidím alespoň 4 možnosti:

  1. Změňte oprávnění /opt/expe pomocí chmod, aby všichni uživatelé mohli vytvářet soubory v tomto adresáři.

  2. Vytvořte samostatnou skupinu pro uživatele, kteří tam potřebují psát, a změňte oprávnění skupiny /opt/expe pomocí chmod tak, aby tam tato skupina mohla zapisovat.

  3. Vytvořte samostatnou skupinu a přidejte pravidlo sudoers, které jim umožní spustit tento skript, jak je popsáno například zde:Jak může uživatel připojit kontejner zašifrovaných souborů ve VeraCrypt?

  4. Použijte zabezpečení štítků pro jemné řízení přístupu. Zde je stručný popis bezpečnostních štítků a některé další odkazy:https://unix.stackexchange.com/questions/53028/what-are-ext4-security-labels

Mějte prosím na paměti, že oprávnění k vytváření/odebírání souborů je vlastnictvím adresáře, nikoli souboru samotného.


Ubuntu
  1. Jak spustit příkaz, který zahrnuje přesměrování nebo potrubí pomocí Sudo?

  2. Ubuntu – Jak nechat Pam_exec spustit skript jako aktuální uživatel?

  3. Jak zpětně zajistit, aby skript běžel jako root?

  1. Jak spustit skript Shell na pozadí?

  2. Jak spustit terminál jako root?

  3. Jak spustit skript Greeter/login pomocí Lightdm?

  1. Jak spustit skript po obnovení a po odemknutí obrazovky?

  2. Jak spustit skript??

  3. Jak zabránit uživatelům v přístupu ke kořenovému adresáři?