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:
-
Změňte oprávnění /opt/expe pomocí chmod, aby všichni uživatelé mohli vytvářet soubory v tomto adresáři.
-
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.
-
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?
-
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.