Supouse j'ai un répertoire /opt/expe
et je veux que n'importe quel utilisateur crée des fichiers .txt dessus. Je veux que n'importe quel utilisateur tape quelque chose comme ceci :
$ 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
J'essaie ça avec 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
Ensuite, avec un utilisateur non root, j'ai obtenu :
$ whoami
user1
$ export $file_name=my_txt_file
$ /opt/expe/create_file.sh
touch: cannot touch '/opt/expe/prueba_txt.txt': Permission denied
Puis-je faire quelque chose comme ça. Je veux quelque chose comme postgres SECURITY DEFINER
notion.
Réponse acceptée :
Je ne connais pas assez Postgres, mais je vois au moins 4 options :
-
Modifiez les autorisations de /opt/expe avec chmod pour permettre à tous les utilisateurs de créer des fichiers dans ce répertoire.
-
Créez un groupe séparé pour les utilisateurs qui doivent y écrire et modifiez l'autorisation de groupe /opt/expe avec chmod pour permettre à ce groupe d'y écrire.
-
Créez un groupe séparé et ajoutez une règle sudoers pour leur permettre d'exécuter ce script comme décrit par exemple ici :Comment l'utilisateur peut-il monter un conteneur de fichiers chiffré dans VeraCrypt ?
-
Utilisez la sécurité des étiquettes pour un contrôle d'accès précis. Voici une brève description des étiquettes de sécurité et quelques liens supplémentaires :https://unix.stackexchange.com/questions/53028/what-are-ext4-security-labels
Veuillez garder à l'esprit que l'autorisation de créer/supprimer des fichiers est une propriété du répertoire et non du fichier lui-même.