{"id":19253,"date":"2026-09-28T19:29:32","date_gmt":"2026-09-28T17:29:32","guid":{"rendered":"https:\/\/www.beseit.net\/?p=19253"},"modified":"2026-09-28T19:30:19","modified_gmt":"2026-09-28T17:30:19","slug":"permisos-de-les-carpetes-ttsw","status":"publish","type":"post","link":"https:\/\/www.beseit.net\/?p=19253","title":{"rendered":"Permisos de les carpetes TTSW"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Resum curt<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Perfecte \u2014 ja tens el TTS funcionant. A continuaci\u00f3 tens la configuraci\u00f3 de permisos recomanada i les comandes exactes per aplicar\u2011la de manera segura.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Permisos recomanats (resum en taula)<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Ruta<\/strong><\/th><th><strong>Propietari:Grup<\/strong><\/th><th><strong>Permisos<\/strong><\/th><th><strong>Prop\u00f2sit<\/strong><\/th><\/tr><\/thead><tbody><tr><th><strong>\/volume2\/web\/beseit\/ttsw<\/strong><\/th><td><strong>urqtejmi:users<\/strong><\/td><td><strong>775<\/strong><\/td><td>Projecte; permet treballar al propietari i al grup<\/td><\/tr><tr><th><strong>\/volume2\/web\/beseit\/ttsw\/venv<\/strong><\/th><td><strong>http:http<\/strong><\/td><td><strong>755<\/strong><\/td><td>Entorn virtual usat per php\u2011fpm (evita donar escriptura a altres)<\/td><\/tr><tr><th><strong>\/volume2\/web\/beseit\/ttsw\/venv\/bin\/<\/strong><\/th><td><strong>http:http<\/strong><\/td><td><strong>rwxr-xr-x (755)<\/strong><\/td><td>Scripts executables del venv<\/td><\/tr><tr><th><strong>\/volume2\/web\/beseit\/ttsw\/venv\/<\/strong>* (fitxers)<\/th><td><strong>http:http<\/strong><\/td><td><strong>rw-r&#8211;r&#8211; (644)<\/strong><\/td><td>Fitxers del venv (pyvenv.cfg, libs, etc.)<\/td><\/tr><tr><th><strong>\/volume2\/web\/beseit\/ttsw\/tts.py<\/strong><\/th><td><strong>urqtejmi:users<\/strong><\/td><td><strong>644<\/strong> (o <strong>755<\/strong> si s\u2019executa directament)<\/td><td>Codi del projecte; lectura per a http, execuci\u00f3 nom\u00e9s si cal<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Comandes exactes per aplicar-ho<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Copia i enganxa aquestes comandes al teu terminal:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># 1. directori del projecte (propietari teu usuari)\nsudo chown -R urqtejmi:users \/volume2\/web\/beseit\/ttsw\nsudo chmod 775 \/volume2\/web\/beseit\/ttsw\n\n# 2. entorn virtual: propietari http i permisos segurs\nsudo chown -R http:http \/volume2\/web\/beseit\/ttsw\/venv\nsudo find \/volume2\/web\/beseit\/ttsw\/venv -type d -exec chmod 755 {} \\;\nsudo find \/volume2\/web\/beseit\/ttsw\/venv -type f -exec chmod 644 {} \\;\n\n# 3. assegurar que els binaris s\u00f3n executables\nsudo chmod a+rx \/volume2\/web\/beseit\/ttsw\/venv\/bin\/*\n\n# 4. fitxer del script TTS (lectura per a http)\nsudo chown urqtejmi:users \/volume2\/web\/beseit\/ttsw\/tts.py\nsudo chmod 644 \/volume2\/web\/beseit\/ttsw\/tts.py\n# si vols executar-lo directament com a script (shebang), fer:\n# sudo chmod 755 \/volume2\/web\/beseit\/ttsw\/tts.py\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Notes de seguretat i bones pr\u00e0ctiques<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Per qu\u00e8<\/strong> <code>http:http<\/code> <strong>al venv<\/strong>: evita haver d\u2019obrir permisos a \u201cothers\u201d i limita la capacitat d\u2019escriure dins l\u2019entorn nom\u00e9s al servei web.<\/li>\n\n\n\n<li><strong>Per qu\u00e8<\/strong> <code>775<\/code> <strong>al projecte<\/strong>: et permet a tu i al grup editar fitxers sense exposar\u2011los a tots els usuaris del sistema. Si no necessites que altres del grup accedeixin, usa <code>750<\/code>.<\/li>\n\n\n\n<li><strong>No deixis 777<\/strong>: evita permisos 777 en directoris de projecte en producci\u00f3.<\/li>\n\n\n\n<li><strong>Reinicia php\u2011fpm<\/strong> despr\u00e9s de canviar propietaris o grups perqu\u00e8 els processos agafin els nous permisos.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Proves finals recomanades<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Despr\u00e9s d\u2019aplicar els canvis, comprova:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># provar python i l'import com a http\nsudo -u http \/volume2\/web\/beseit\/ttsw\/venv\/bin\/python -V\nsudo -u http \/volume2\/web\/beseit\/ttsw\/venv\/bin\/python -c \"from gtts import gTTS; print('gTTS OK')\"\n\n# provar el script complet\ncd \/volume2\/web\/beseit\/ttsw\nsudo -u http \/volume2\/web\/beseit\/ttsw\/venv\/bin\/python tts.py prova.txt prova.mp3 2>&amp;1 | tee \/tmp\/tts-run.log\nls -lh prova.mp3\ntail -n 200 \/tmp\/tts-run.log\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si vols, et dono un \u00fanic script que aplica tots els canvis i fa les proves autom\u00e0ticament; tamb\u00e9 puc explicar com integrar la ruta del <code>venv\/bin\/python<\/code> al teu PHP de forma robusta. Quin prefereixes?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Resum curt Perfecte \u2014 ja tens el TTS funcionant. A continuaci\u00f3 tens la configuraci\u00f3 de permisos recomanada i les comandes exactes per aplicar\u2011la de manera segura. Permisos recomanats (resum en taula) Ruta Propietari:Grup Permisos Prop\u00f2sit \/volume2\/web\/beseit\/ttsw urqtejmi:users 775 Projecte; permet &hellip; <a href=\"https:\/\/www.beseit.net\/?p=19253\">Continua llegint <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":3168,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,140],"tags":[],"class_list":["post-19253","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloc-de-notes","category-synology"],"_links":{"self":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/19253","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=19253"}],"version-history":[{"count":1,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/19253\/revisions"}],"predecessor-version":[{"id":19254,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/19253\/revisions\/19254"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/media\/3168"}],"wp:attachment":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=19253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=19253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}