{"id":266,"date":"2010-06-22T06:40:16","date_gmt":"2010-06-22T06:40:16","guid":{"rendered":"http:\/\/esferas.org\/msqlu\/2010\/06\/22\/acceso-a-los-dispositivos-en-debian\/"},"modified":"2016-04-17T08:59:00","modified_gmt":"2016-04-17T08:59:00","slug":"acceso-a-los-dispositivos-en-debian","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2010\/06\/22\/acceso-a-los-dispositivos-en-debian\/","title":{"rendered":"Debian y el acceso a los dispositivos"},"content":{"rendered":"<p><!--more--><\/p>\n<p>Seg\u00fan la <a href=\"http:\/\/www.debian.org\/doc\/FAQ\/ch-customizing.en.html\">documentaci\u00f3n de Debian<\/a> al respecto, la forma id\u00f3nea de proporcionar a un usuario acceso a un dispositivo es a\u00f1adirle al grupo al que pertenece dicho dispositivo. En el caso de <a href=\"http:\/\/www.networkupstools.org\/\">nut<\/a>, por ejemplo, y una UPS v\u00eda serie como la <a href=\"http:\/\/taquiones.net\/hardware\/ups-phasak-ph9960.html\">Phasak PH9960 600VA<\/a> podr\u00eda hacerse a\u00f1adiendo el usuario <\/p>\n<pre class=\"inline:true decode:1 \" >nut<\/pre>\n<p> al grupo <\/p>\n<pre class=\"inline:true decode:1 \" >dialout<\/pre>\n<p>:<\/p>\n<pre>\n# ls -l \/dev\/ttyS0\ncrw-rw---- 1 root dialout 4, 64 mar 12 08:01 \/dev\/ttyS0\n# id nut\nid=112(nut) gid=118(nut) grupos=118(nut\n# adduser nut dialout\nA\u00f1adiendo al usuario <code>nut' al grupo <\/code>dialout' ...\nA\u00f1adiendo al usuario nut al grupo dialout\nHecho.\n# id nut\nid=112(nut) gid=118(nut) grupos=118(nut),20(dialout)\n<\/pre>\n<p>La otra forma consiste en configurar \u00abudev\u00bb para que cree el dispositivo con los permisos que necesitemos. Tras revisar el <a href=\"http:\/\/wiki.debian.org\/udev\">wiki<\/a> de Debian y la imprescindible <a href=\"http:\/\/reactivated.net\/writing_udev_rules.html\">gu\u00eda<\/a> de Daniel Drake llego a la conclusi\u00f3n de que ya que voy a trastear con el sistema de reglas,lo adaptar\u00e9 a mis gustos e intentar\u00e9 que el dispositivo al que voy a conectar la UPS tenga su propio nombre <\/p>\n<pre class=\"inline:true decode:1 \" >\/dev\/ups<\/pre>\n<p> y su particular propietario <\/p>\n<pre class=\"inline:true decode:1 \" >nut<\/pre>\n<p>.<\/p>\n<p>Primero localizo dentro de <\/p>\n<pre class=\"inline:true decode:1 \" >\/sys<\/pre>\n<p> el \u00e1rbol de atributos del dispositivo usando la ruta f\u00edsica del mismo:<\/p>\n<pre>\n# udevinfo -n \/dev\/ttyS0 -a\nlooking at device '\/class\/tty\/ttyS0':\nKERNEL==&quot;ttyS0&quot;\nSUBSYSTEM==&quot;tty&quot;\nDRIVER==&quot;&quot;\nlooking at parent device '\/devices\/pnp0\/00:06':\nKERNELS==&quot;00:06&quot;\nSUBSYSTEMS==&quot;pnp&quot;\nDRIVERS==&quot;serial&quot;\nATTRS{id}==&quot;PNP0501&quot;\nlooking at parent device '\/devices\/pnp0':\nKERNELS==&quot;pnp0&quot;\nSUBSYSTEMS==&quot;&quot;\nDRIVERS==&quot;&quot;\n<\/pre>\n<p>Para despu\u00e9s crear un archivo de reglas en <\/p>\n<pre class=\"inline:true decode:1 \" >\/etc\/udev\/rules.d\/z99-nut.rules<\/pre>\n<p>:<\/p>\n<pre>\nKERNEL==&quot;ttyS0&quot;, NAME=&quot;ups-phasak-ph9960&quot;, MODE=&quot;660&quot;, GROUP=&quot;nut&quot;\n<\/pre>\n<p>Y para probar esta configuraci\u00f3n empleamos lo siguiente:<\/p>\n<pre>\n# udevadm test \/class\/tty\/ttyS0\n...\nparse_file: reading '\/etc\/udev\/rules.d\/z99-nut.rules' as rules file\n...\nudevtest: looking at device '\/class\/tty\/ttyS0' from subsystem 'tty'\nudev_rules_get_name: add symlink 'char\/4:64'\nudev_rules_get_name: rule applied, 'ttyS0' becomes 'ups-phasak-ph9960'\nudev_device_event: device '\/class\/tty\/ttyS0' already in database, cleanup\nudev_node_add: creating device node '\/dev\/ups-phasak-ph9960', major=4, minor=64, mode=0660,  uid=0, gid=118\n...\nupdate_link: 'ttyS0' with target 'ups-phasak-ph9960' has the highest priority 0, create it\n...\n#\n<\/pre>\n<p>Pero como queremos que el dispositivo exista ya, sin esperar a un reinicio ni nada parecido provocamos el evento de dispositivo a\u00f1adido en <\/p>\n<pre class=\"inline:true decode:1 \" >udev<\/pre>\n<p>:<\/p>\n<pre>\n# udevadm trigger --verbose --system-match=tty --action=add\n...\n\/class\/tty\/ttyS0\n...\n# ls -l \/dev\/ups*\ncrw-rw---- 1 root nut 4, 64 mar 12 10:33 \/dev\/ups-phasak-ph9960\n<\/pre>\n<p>Ahora en la configuraci\u00f3n de <\/p>\n<pre class=\"inline:true decode:1 \" >nut<\/pre>\n<p> s\u00f3lo tendremos que emplear el dispositivo nuevo:<\/p>\n<pre>\n# Archivo \/etc\/nut\/upsd.conf\n[facturacion]\ndriver  = megatec\nport    = \/dev\/ups-phasak-ph9960\ndesc    = &quot;Facturaci\u00f3n&quot;\nmfr     = &quot;Phasak&quot;\nmodel   = &quot;PH9960 600VA&quot;\nserial  = 436100124\n<\/pre>\n<p>Y s\u00f3lo queda reiniciar el subsistema.<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[2],"tags":[41,220,208,90],"class_list":["post-266","post","type-post","status-publish","format-standard","hentry","category-software","tag-debian","tag-hardware","tag-sysadmin","tag-udev"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=266"}],"version-history":[{"count":0,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/266\/revisions"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}