[问题] mount -o uid=m,gid=n 的状况

楼主: cuello (cuello)   2018-10-15 23:18:59
Hi,
请问一下,什么情况下可能出现以下的 owner, group 的状况
在一个 terminal 上 (我是 817.100)
[email protected]:/mnt/sdc1_vfat$ id
uid=817(cuello) gid=100(users) groups=100(users)
[email protected]:/mnt/sdc1_vfat$ ls -ldn .
drwxr-xr-x 16 817 100 4096 Jan 1 1970 .
(这个资料夹是 817.100 的)
[email protected]:/mnt/sdc1_vfat$ ls -CF
(很多东西省略了)
但是在另一个 termninal 上却是 (我还是 817.100)
[email protected]:/mnt/sdc1_vfat$ id
uid=817(cuello) gid=100(users) groups=100(users)
[email protected]:/mnt/sdc1_vfat$ ls -ldn .
drwxr-xr-x 2 817 0 4096 Oct 15 22:33 .
(这个资料夹是 817.0 的!!!)
[email protected]:/mnt/sdc1_vfat$ ls -CF
(门都没有)
好吧,那就给它...
[email protected]:/mnt/sdc1_vfat$ sudo chown 817.100 .
[email protected]:/mnt/sdc1_vfat$ ls -ldn .
drwxr-xr-x 2 817 100 4096 Oct 15 22:33 .
("817.100" 总这样总该可以了吧... 但是)
[email protected]:/mnt/sdc1_vfat$ ls -CF
(还是什么都没有)
事情是这样子的: 我一直都在用自己写的 automounter。
就是去勾在 udev, 当插入 USB 随身碟,或是 SD 卡的时候,
自动检查里面的 filesystem,
然后用我的 X11 的 id 自动开一个 X-terminal。
前者,那个"第一个"就是我的 automounter 开的。
但是我常常从另一个 X-terminal 工作,这就是"另一个"。
许多年来,相安无事,直到最近,从别的 terminal "没有 access"!
因为最近一波勤于 compile 更新 kernels,就赶快 boot 一下别的核心,
试过了 4.14.75 3.16.58 4.9.130 却都是同样的状况....
刚才,查了一下 logfile,是 (我省略了一些 opts)
sudo mount -o nosuid,uid=817,gid=100,users -t vfat /dev/sdc1 /mnt/sdc1_vfat/
从外面试,也都如预期.
因为情况有点复杂,所以选择由以上角度切入,
看看会不会有什么线索。
如果需要提供进一步细节,请不吝指教。
===============================================================
[后记: 1539625745]
刚才在 mount 前面加了 sudo chown 817.100 /mnt/sdc1_vfat/
先前只有 "chown 817",现在从其它 terminals 看,
虽然资料夹是 817.100 的,但是一样,从其它 terminals 看,
里面什么也没有。
这个 "automounter" 是尽可能 portable 的 #!/bin/sh shell-script。
用一个 hook (/etc/udev/rules.d/99-udsh.rules) 拦截所有 udev-events
之后,用 su 变换为 user 权限,叫出下一步的 wrapper script,
这个 wrapper 再用 setsid(1) 叫 automounter 并 detach,
所以没有被 systemd-udev 追杀的问题。
是个常用的自用程式,例如,插入 USB 随身碟,
声响,自动 mount,有几个 partition 就自动开几个窗子,
每关掉一个窗子(^D),那个 partition 就自动 umount。
如此而以。一直都在正常使用,是什么时候开始这样,
我也搞不清楚,最近都是紧紧跟着 kernel 4.14.x
作者: mmis1000 (秋月恋枫)   2018-10-16 01:41:00
你可能可以找找看 linux namesapce 相关资讯?
楼主: cuello (cuello)   2018-10-16 02:13:00
如何开始?拜托提示一下对不起,正在看 namespace 的 wiki. . .所以,systemd-udevd 用自己的 namespace, 外面看不到现在问题就剩,怎么 mount 才可 propagate 出去...
作者: ChakraLinux (GNU/Chakra Project)   2018-10-17 12:41:00
前面两步其实可以用 systemctl edit systemd-udevd取代,这样他会自己开一个vim给里写override
楼主: cuello (cuello)   2018-10-17 15:14:00
曾试过,但它给我一个不认识的 editor说也奇怪,我的 EDITOR 我设为 vim 说有,我有 export,刚刚查了一下 .bashrc
作者: brli7848 (无理阿?)   2018-10-17 16:47:00
因为systemctl是用VISUAL这个变量,默认是vi
楼主: cuello (cuello)   2018-10-17 17:37:00
喔,多谢! :)糟糕,不对不对,我的 VISUAL 也是 vim !不然的话,实在应该用它自己提供的 edit 功能,否则,不知哪一天他们心血来潮。。。。
作者: ChakraLinux (GNU/Chakra Project)   2018-10-18 18:05:00
看文件有另外的变量,忘了是啥了,反正nano好用
楼主: cuello (cuello)   2018-10-18 22:18:00
文件跟行为不一样,SYSTEMD_EDITOR 没设它应该用 EDITOR不过,真得应该要用 systemctl edit systemd-udevd 才安全

Links booklink

Contact Us: admin [ a t ] ucptt.com