Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je faire en sorte que MySQL écrive des fichiers de sortie en tant qu'utilisateur différent ?

Le fichier de sortie est créé par le processus mysqld, et non par votre processus client. Par conséquent, le fichier de sortie doit appartenir à l'uid et au gid du processus mysqld.

Vous pouvez éviter d'avoir à sudo pour accéder au fichier si vous y accédez à partir d'un processus sous un uid ou gid qui peut accéder au fichier. En d'autres termes, si mysqld crée des fichiers appartenant à uid et gid "mysql"/"mysql", alors ajoutez votre propre compte au groupe "mysql". Ensuite, vous devriez pouvoir accéder au fichier, à condition que le mode d'autorisation du fichier comprenne l'accès de groupe.

Modifier :

Vous supprimez un fichier dans /tmp, avec un mode d'autorisation de répertoire de rwxrwxrwt. Le bit collant ('t') signifie que vous ne pouvez supprimer des fichiers que si votre uid est le même que le propriétaire du fichier, quelles que soient les autorisations sur le fichier ou le répertoire.

Si vous enregistrez votre fichier de sortie dans un autre répertoire qui n'a pas le sticky bit défini, vous devriez pouvoir supprimer le fichier normalement.

Lisez cet extrait de la page de manuel de sticky(8) :

RÉPERTOIRES STICKY

Un répertoire dont le `sticky bit' est défini devient un répertoire d'ajout uniquement, ou, plus précisément, un répertoire dans lequel la suppression de fichiers est restreinte. Un fichier dans un répertoire collant ne peut être supprimé ou renommé par un utilisateur que si l'utilisateur dispose d'une autorisation d'écriture pour le répertoire et que l'utilisateur est le propriétaire du fichier, le propriétaire du répertoire ou le super-utilisateur. Cette fonctionnalité est utilement appliquée aux répertoires tels que /tmp qui doivent être publiquement accessibles en écriture mais doivent refuser aux utilisateurs la licence de supprimer ou de renommer arbitrairement les fichiers des autres.