Linux 板


LINE

Hi, 请问一下,甚麽情况下可能出现以下的 owner, group 的状况 在一个 terminal 上 (我是 817.100) cuello@husserl:/mnt/sdc1_vfat$ id uid=817(cuello) gid=100(users) groups=100(users) cuello@husserl:/mnt/sdc1_vfat$ ls -ldn . drwxr-xr-x 16 817 100 4096 Jan 1 1970 . (这个资料夹是 817.100 的) cuello@husserl:/mnt/sdc1_vfat$ ls -CF (很多东西省略了) 但是在另一个 termninal 上却是 (我还是 817.100) cuello@husserl:/mnt/sdc1_vfat$ id uid=817(cuello) gid=100(users) groups=100(users) cuello@husserl:/mnt/sdc1_vfat$ ls -ldn . drwxr-xr-x 2 817 0 4096 Oct 15 22:33 . (这个资料夹是 817.0 的!!!) cuello@husserl:/mnt/sdc1_vfat$ ls -CF (门都没有) 好吧,那就给它... cuello@husserl:/mnt/sdc1_vfat$ sudo chown 817.100 . cuello@husserl:/mnt/sdc1_vfat$ ls -ldn . drwxr-xr-x 2 817 100 4096 Oct 15 22:33 . ("817.100" 总这样总该可以了吧... 但是) cuello@husserl:/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 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.132.35.216
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1539616741.A.872.html
1F:→ mmis1000: 你可能可以找找看 linux namesapce 相关资讯? 10/16 01:41
※ 编辑: cuello (220.132.35.216), 10/16/2018 02:10:59
2F:→ cuello: 如何开始?拜托提示一下 10/16 02:13
3F:→ cuello: 对不起,正在看 namespace 的 wiki. . . 10/16 02:38
4F:→ cuello: 所以,systemd-udevd 用自己的 namespace, 外面看不到 10/16 04:53
5F:→ cuello: 现在问题就剩,怎麽 mount 才可 propagate 出去... 10/16 04:55
这个问题已暂时解决,这里大致报告一下,感谢 mmis1000 指出问题所在。 因为我的 shell-script 是挂勾在 udev 执行的,但是现在已经不是先前的 udevd, 而是 systemd-udevd,它用的是自己的 namespace,这并不会 propagate 回 root namespace (其它 terminal 或 shell),所以只能在 我那个由 systemd-udevd 叫出的 shell-scipt 所开的 terminal 里面看到。 这到底该视为 feature,还是还有 bug,我现在也没有能力判断。 暂时的解决方法: # mkdir /etc/systemd/system/systemd-udevd.service.d/ # vim /etc/systemd/system/systemd-udevd.service.d/override.conf # (因为我的系统还没有这个档案,就建个含两行字的档案) [Service] MountFlags=shared # systemctl daemon-reload # service systemd-udevd --full-restart 这样就好了。我从 root namespace 就可以看到 systemd-udevd 所建立的 mount point。 另一方面,我 compile 的 kernel 是 CONFIG_NAMESPACES=y 或许把它设为 =n 完全放弃 namespace 这 feature 重编也可以 (但是我自已没试过,这样会不利於开设虚拟机器,应该只适合在像 Pi 那种小机器使用。) 还有 nsenter(1) 应该也可以让我(有 root) 进去 systemd-udevd 那个 mount namespace,但我自己也是还没试过。 奇怪的是,有个正在使用我的 automounter 的朋友并没有这个问题, 他用也是 Debian stretch 以及跟我同等级的 kernel... 这我也还无法解释... ※ 编辑: cuello (220.132.35.216), 10/17/2018 04:05:09
6F:→ ChakraLinux: 前面两步其实可以用 systemctl edit systemd-udevd 10/17 12:41
7F:→ ChakraLinux: 取代,这样他会自己开一个vim给里写override 10/17 12:41
8F:→ cuello: 曾试过,但它给我一个不认识的 editor 10/17 15:14
9F:→ cuello: 说也奇怪,我的 EDITOR 我设为 vim 说 10/17 15:15
10F:→ cuello: 有,我有 export,刚刚查了一下 .bashrc 10/17 15:20
11F:推 brli7848: 因为systemctl是用VISUAL这个变数,预设是vi 10/17 16:47
12F:→ cuello: 喔,多谢! :) 10/17 17:37
13F:→ cuello: 糟糕,不对不对,我的 VISUAL 也是 vim ! 10/18 05:54
14F:→ cuello: 不然的话,实在应该用它自己提供的 edit 功能, 10/18 05:57
15F:→ cuello: 否则,不知哪一天他们心血来潮。。。。 10/18 05:58
16F:→ ChakraLinux: 看文件有另外的变数,忘了是啥了,反正nano好用 10/18 18:05
17F:→ cuello: 文件跟行为不一样,SYSTEMD_EDITOR 没设它应该用 EDITOR 10/18 22:18
18F:→ cuello: 不过,真得应该要用 systemctl edit systemd-udevd 才安全 10/18 22:19
[後记 1539872570] 是说,用 systemctl edit systemd-udevd 把 MountFlags=slave 改为 =shared,虽然暂时可以解决问题,但是想说人家预设为 MountFlags=slave 总是有个好理由,感觉好像做了件不好的事。 所以就一直寻找有没有办法,在 mount(8) 的时後,一次的地, 让这个 namespace propagate 回上面的 namespace。 但是到现在找不到答案... ※ 编辑: cuello (220.132.35.216), 10/18/2018 22:31:38 [後记 1540316204] 已经解决这个问题!不知道这板的习惯如何,但我想不是件坏事。 我在 stackexchange 得到了一个很有帮助的解答: Is it possible for mount(8) to override systemd MountFlags? https://unix.stackexchange.com/questions/476241/is-it-possible-for-mount8-to-override-systemd-mountflags Filipie Brandenburger 建议在我的 script 用 systemd-mount(1) 来取代 mount(8),他并提示 systemd-mount(1) 在可能范围内, 所有的 options 都与 mount(8) 通用。我就直接把程式里的 mount 改为 systemd-mount。问题解决! 所以,这才是我所期待最适当的解决方法。 先前修改为 MountFlags=shared 的方法当然可行, 但是系统把这个 namespace 用篱围起来自然会有它的打算, 冒然拆掉的话,未来就必须一直维护下去这个自己创造的问题。 结论:只把自己的程式的 mount(8) 改为 systemd-mount(1)。 系统的设定完全没有动!结案,谢谢! ※ 编辑: cuello (220.132.35.216), 10/24/2018 02:03:00







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP