Listado de todos los dispositivos como no superusuario

Estoy tratando de montar un disco duro externo. Como sé, para montar manualmente, debería usar fdisk -l para determinar qué dispositivo se refiere a la unidad.

Cuando lo hago sin sudo tengo el siguiente resultado:

 user@desktop:~/tmp$ /sbin/fdisk -l Disk /dev/sda: 320.1 GB, 320072933376 bytes 255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x000844b8 Device Boot Start End Blocks Id System /dev/sda1 * 2048 499711 248832 83 Linux /dev/sda2 501758 625141759 312320001 5 Extended Partition 2 does not start on physical sector boundary. /dev/sda5 501760 625141759 312320000 8e Linux LVM Disk /dev/mapper/vg0-root: 348 MB, 348127232 bytes 255 heads, 63 sectors/track, 42 cylinders, total 679936 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-root doesn't contain a valid partition table Disk /dev/mapper/vg0-swap_1: 8162 MB, 8162115584 bytes 255 heads, 63 sectors/track, 992 cylinders, total 15941632 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-swap_1 doesn't contain a valid partition table Disk /dev/mapper/vg0-usr: 8996 MB, 8996782080 bytes 255 heads, 63 sectors/track, 1093 cylinders, total 17571840 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-usr doesn't contain a valid partition table Disk /dev/mapper/vg0-var: 2998 MB, 2998927360 bytes 255 heads, 63 sectors/track, 364 cylinders, total 5857280 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-var doesn't contain a valid partition table Disk /dev/mapper/vg0-tmp: 398 MB, 398458880 bytes 255 heads, 63 sectors/track, 48 cylinders, total 778240 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-tmp doesn't contain a valid partition table Disk /dev/mapper/vg0-home: 298.9 GB, 298907074560 bytes 255 heads, 63 sectors/track, 36340 cylinders, total 583802880 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-home doesn't contain a valid partition table 

Con sudo :

 user@desktop:~/tmp$ sudo fdisk -l [sudo] password for user: Disk /dev/sda: 320.1 GB, 320072933376 bytes 255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x000844b8 Device Boot Start End Blocks Id System /dev/sda1 * 2048 499711 248832 83 Linux /dev/sda2 501758 625141759 312320001 5 Extended Partition 2 does not start on physical sector boundary. /dev/sda5 501760 625141759 312320000 8e Linux LVM Disk /dev/mapper/vg0-root: 348 MB, 348127232 bytes 255 heads, 63 sectors/track, 42 cylinders, total 679936 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-root doesn't contain a valid partition table Disk /dev/mapper/vg0-swap_1: 8162 MB, 8162115584 bytes 255 heads, 63 sectors/track, 992 cylinders, total 15941632 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-swap_1 doesn't contain a valid partition table Disk /dev/mapper/vg0-usr: 8996 MB, 8996782080 bytes 255 heads, 63 sectors/track, 1093 cylinders, total 17571840 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-usr doesn't contain a valid partition table Disk /dev/mapper/vg0-var: 2998 MB, 2998927360 bytes 255 heads, 63 sectors/track, 364 cylinders, total 5857280 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-var doesn't contain a valid partition table Disk /dev/mapper/vg0-tmp: 398 MB, 398458880 bytes 255 heads, 63 sectors/track, 48 cylinders, total 778240 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-tmp doesn't contain a valid partition table Disk /dev/mapper/vg0-home: 298.9 GB, 298907074560 bytes 255 heads, 63 sectors/track, 36340 cylinders, total 583802880 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg0-home doesn't contain a valid partition table Disk /dev/sdb: 500.1 GB, 500105740288 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976769024 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0002e78d Device Boot Start End Blocks Id System /dev/sdb1 2048 976769023 488383488 7 HPFS/NTFS/exFAT 

¿Por qué puedo ver el dispositivo enchufado solo al ejecutar el command con derechos de root?

Solutions Collecting From Web of "Listado de todos los dispositivos como no superusuario"

fdisk -l puede listr los filesystems que tiene permiso para leer. Ver mi testing con strace :

 user@host:~/test$ strace -e open /sbin/fdisk -l ... open("/proc/partitions", O_RDONLY) = 3 open("/dev/sda", O_RDONLY) = -1 EACCES (Permission denied) open("/dev/sda1", O_RDONLY) = -1 EACCES (Permission denied) open("/dev/sda2", O_RDONLY) = -1 EACCES (Permission denied) open("/dev/sda5", O_RDONLY) = -1 EACCES (Permission denied) open("/dev/sr0", O_RDONLY) = 4 

Este usuario solo tiene permiso para leer /dev/sr0 , por lo que solo este dispositivo aparece en fdisk -l .

@chaos y @Braiam han proporcionado buenas respuestas sobre por qué no está obteniendo el comportamiento que está buscando de fdisk cuando se ejecuta como un usuario no root. El simple hecho es que permitir que los usuarios habituales lean discos directamente podría pasar por alto los permissions del file simplemente leyendo los datos del disco directamente, lo que podría ser un problema importante y sin duda haría que los permissions de files y files fueran completamente inútiles para evitar errores simples.

Voy a intentar responder la pregunta que probablemente también querías hacer: "¿cómo puedo averiguar qué partición montar si no soy root?".

La respuesta a eso, suponiendo que tiene un sistema razonablemente reciente, es: eche un vistazo a /dev/disk/by-id .

Allí encontrará cada disco, por bus, número de model y número de serie, con todas las particiones detectadas disponibles como enlaces simbólicos a los files del dispositivo.

Los nombres también son persistentes, por lo tanto, a diferencia de los nombres /dev/sdXY , no cambian según el order en que los conecte o el order en que se detecten. Eso los hace útiles para /etc/fstab , /etc/crypttab y posiblemente amigos.

Si su objective es averiguar el nombre del dispositivo de la unidad externa que acaba de conectar, la forma más fácil es ejecutar dmesg | tail -20 dmesg | tail -20 o less justo después de conectarlo:

 $ dmesg | tail -20 [ 5610.869053] usb 2-1.4: New USB device strings: Mfr=10, Product=11, SerialNumber=5 [ 5610.869058] usb 2-1.4: Product: Iomega Select HDD [ 5610.869062] usb 2-1.4: Manufacturer: Iomega [ 5610.869066] usb 2-1.4: SerialNumber: 5E918FFFFFFF [ 5610.948182] usb-storage 2-1.4:1.0: USB Mass Storage device detected [ 5610.948350] scsi6 : usb-storage 2-1.4:1.0 [ 5610.948531] usbcore: registenetworking new interface driver usb-storage [ 5611.948468] scsi 6:0:0:0: Direct-Access ST950032 5AS PQ: 0 ANSI: 2 CCS [ 5611.948916] sd 6:0:0:0: Attached scsi generic sg2 type 0 [ 5611.950745] sd 6:0:0:0: [sdb] 976773168 512-byte logical blocks: (500 GB/465 GiB) [ 5611.951855] sd 6:0:0:0: [sdb] Write Protect is off [ 5611.951862] sd 6:0:0:0: [sdb] Mode Sense: 28 00 00 00 [ 5611.952944] sd 6:0:0:0: [sdb] No Caching mode page present [ 5611.952951] sd 6:0:0:0: [sdb] Assuming drive cache: write through [ 5611.956083] sd 6:0:0:0: [sdb] No Caching mode page present [ 5611.956091] sd 6:0:0:0: [sdb] Assuming drive cache: write through [ 5612.016745] sdb: sdb1 [ 5612.020134] sd 6:0:0:0: [sdb] No Caching mode page present [ 5612.020144] sd 6:0:0:0: [sdb] Assuming drive cache: write through [ 5612.020152] sd 6:0:0:0: [sdb] Attached SCSI disk 

Eso me dice que mi disco fue reconocido como /dev/sdb . Otras herramientas útiles en este context son

  • lsusb enumera todos los dispositivos y concentradores USB conectados. en mi sistema con mi unidad externa conectada, su salida incluye esta línea

     Bus 002 Device 008: ID 059b:047a Iomega Corp. Select Portable Hard Drive 
  • lsblk enumera información sobre todos o los dispositivos de bloque especificados. Mostrará una list de todos los discos y sus particiones:

     $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 39.2M 0 part ├─sda2 8:2 0 14.7G 0 part ├─sda3 8:3 0 78.1G 0 part /winblows ├─sda4 8:4 0 1K 0 part ├─sda5 8:5 0 2G 0 part ├─sda6 8:6 0 294.4G 0 part /home ├─sda7 8:7 0 68.7G 0 part / └─sda8 8:8 0 7.8G 0 part [SWAP] sdb 8:16 0 465.8G 0 disk └─sdb1 8:17 0 465.8G 0 part sr0 11:0 1 1024M 0 rom 
  • lshw todo su hardware, incluidas las unidades externas. Como su salida puede ser enorme, la filtraría según la marca de su disco (Iomega en mi caso). Algo como:

     $ lshal | grep -C 10 Iomega | grep block.device block.device = '/dev/sdb1' (string) 
  • Los directorys /dev/disk/by-* :

     $ ls -l /dev/disk/by-label/ | grep sdb lrwxrwxrwx 1 root root 10 Dec 20 15:25 Iomega_HDD -> ../../sdb1 $ ls -l /dev/disk/by-uuid/ | grep sdb lrwxrwxrwx 1 root root 10 Dec 20 15:25 6AC0198FC019629D -> ../../sdb1 

    También tiene los directorys by-path y by-id , pero son less útiles para la tarea en cuestión.

Esto se debe a que el superusuario o raíz tiene permissions completos para probar todos los dispositivos, mientras que los usuarios no tienen dichos privilegios de forma pnetworkingeterminada. Siempre que lo intenta, falla y, por lo tanto, no enumera los detalles. Algunos grupos pueden tener tales privilegios también que usted puede agregarse a sí mismo.