On Sat, Jan 30, 2010 at 10:59:34AM +1300, martin f krafft wrote: > notfixed 396570 3.0 > found 396570 3.0.3-2 > fixed 396570 3.1.1-1 > thanks > > It's fixed in 3.1.1: > > mdadm-lab:~# su nobody -c '/sbin/mdadm --remove /dev/md0 /dev/hda1' > mdadm: error opening /dev/md0: Permission denied > mdadm-lab:~# mdadm --version > mdadm - v3.1.1 - 19th November 2009
Still not fixed: $ mdadm --remove /dev/md0 /dev/sdd1 mdadm: /dev/md0 does not appear to be an md device $ mdadm --version mdadm - v3.1.1 - 19th November 2009 I get the same results as you for user nobody. Didn't look before, but it appears I have rw permission on the md0 device: $ ll /dev/md0 brw-rw---- 1 root disk 9, 0 Jan 28 02:51 /dev/md0 The open succeeds, the ioctl fails: open("/dev/md0", O_RDWR|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFBLK|0660, st_rdev=makedev(9, 0), ...}) = 0 ioctl(3, 0x800c0910, 0xbfa5a7a4) = -1 EACCES (Permission denied) close(3) = 0 write(2, "mdadm: /dev/md0 does not appear "..., 51) = 51 exit_group(1) = ? So I traced it: Breakpoint 2, main (argc=4, argv=0xbffff4c4) at mdadm.c:989 989 mdfd = open_mddev(devlist->devname, 1); open_mddev (dev=0xbffff66f "/dev/md0", report_errors=1) at mdopen.c:391 391 { 392 int mdfd = open(dev, O_RDWR); 393 if (mdfd < 0) { 392 int mdfd = open(dev, O_RDWR); 393 if (mdfd < 0) { 399 if (md_get_version(mdfd) <= 0) { md_get_version (fd=5) at util.c:116 116 { 120 if (fstat(fd, &stb)<0) fstat (fd=5) at /usr/include/sys/stat.h:469 469 return __fxstat (_STAT_VER, __fd, __statbuf); md_get_version (fd=5) at util.c:120 120 if (fstat(fd, &stb)<0) 122 if ((S_IFMT&stb.st_mode) != S_IFBLK) 125 if (ioctl(fd, RAID_VERSION, &vers) == 0) 127 if (errno == EACCES) 129 if (major(stb.st_rdev) == MD_MAJOR) 132 } open_mddev (dev=0xbffff66f "/dev/md0", report_errors=1) at mdopen.c:400 400 close(mdfd); 401 if (report_errors) 402 fprintf(stderr, Name ": %s does not appear to be " mdadm: /dev/md0 does not appear to be an md device 407 } main (argc=4, argv=0xbffff4c4) at mdadm.c:990 990 if (mdfd < 0) 989 mdfd = open_mddev(devlist->devname, 1); 990 if (mdfd < 0) 1264 exit(1); Program exited with code 01. > -- > .''`. martin f. krafft <madd...@d.o> Related projects: > : :' : proud Debian developer http://debiansystem.info > `. `'` http://people.debian.org/~madduck http://vcs-pkg.org > `- Debian - when you have better things to do than fixing systems > > "a human being should be able to change a diaper, plan an invasion, > butcher a hog, conn a ship, design a building, write a sonnet, > balance accounts, build a wall, set a bone, comfort the dying, take > orders, give orders, cooperate, act alone, solve equations, analyze > a new problem, pitch manure, program a computer, cook a tasty meal, > fight efficiently, die gallantly. specialization is for insects." > -- robert heinlein -- Rob
signature.asc
Description: Digital signature