最近用OpenWRT做了一个实验用的网络环境,且在OpenWRT上搭建了samba共享。
OpenWRT路由下的系统我都是通过远程桌面访问的,也就是linux下使用了xrdp服务。
现在在linux下使用thunar + gvfs + gvfs-smb访问共享的时候, 可以打开共享, 但是在 /run/user/<uid>/gvfs目录却始终是空的。
我用另外一个安装了linux的实体笔记本测试相同的共享文件夹(不使用xrdp远程桌面访问),发现在打开共享后, gvfs会自动将共享挂载到 /run/user/<uid>/gvfs/smb-share:xxxxxxxxxxxxxxx 形式的目录下。
所以想请问一下, 为何xrdp访问, 为何gvfs无法将共享文件夹映射到本地路径呢?
我的目的是在xrdp远程桌面到实验环境中时, 可以挂在远程共享并可修改共享中存放的文件。
最近编辑记录 Hacksign (2024-01-19 17:24:54)
离线
有点不清楚你「在linux下」和「另外一个安装了linux的实体笔记本」有啥区别,以及「xrdp访问」到底是指的从哪里访问到哪里?
离线
有点不清楚你「在linux下」和「另外一个安装了linux的实体笔记本」有啥区别,以及「xrdp访问」到底是指的从哪里访问到哪里?
实体linux笔记本通过lightdm登录, xrdp通过xrdp的服务登录, pam脚本的路径应该是不一样的(有一个记住密码的功能就需要在pam.d下的文件里加入gome_keyring的so文件),其余的没有区别
xrdp访问(哪里到哪里)应该不重要, 就是通过一个远程桌面的客户端访问运行有xrdp服务的linux机器。
离线
重要的是,你有问题的环境是哪个?
离线
有问题的是xrdp环境的, xrdp下的gvfs-smb无法挂在共享到本地目录
离线
你看看 XDG_RUNTIME_DIR 环境变量设置了吗?DBUS_SESSION_BUS_ADDRESS 呢?我怀疑你的 xrdp 会话没正确加载 pam_systemd.so。
离线
你看看 XDG_RUNTIME_DIR 环境变量设置了吗?DBUS_SESSION_BUS_ADDRESS 呢?我怀疑你的 xrdp 会话没正确加载 pam_systemd.so。
这个我之前看过, 至少是有值的:
>> env | grep -Pi 'xdg_runtime_dir|dbus_session_bus_address'
DBUS_SESSION_BUS_ADDRESS=unix:path=/tmp/dbus-DAfXYEOxJJ,guid=3c7afac25c077106fd06bf5265994ea3
XDG_RUNTIME_DIR=/run/user/972
离线
看起来都不太正常……
DBUS_SESSION_BUS_ADDRESS 这个是自动运行的 D-Bus 生成的地址,不是 systemd 的那个。预期会有大问题。
XDG_RUNTIME_DIR 这里的 uid 是 972,不太像你的用户对应的(一般是1000往上一点点)。
离线
看起来都不太正常……
XDG_RUNTIME_DIR 这里的 uid 是 972,不太像你的用户对应的(一般是1000往上一点点)。
这个是因为我的奇葩useradd创建方式哈, 这个应该是没问题的:
>> id
uid=972(pand0ra) gid=984(users) 组=984(users),969(docker),994(input),995(disk),998(wheel)
#上面的用户是用如下命令创建的:
[root@ArchLinux-00-X64 pam.d]# useradd -m -N -r xxx
#因为是系统用户,所以小于1000
[root@ArchLinux-00-X64 pam.d]# useradd --help
用法:useradd [选项] 登录名
useradd -D
useradd -D [选项]
选项:
--badname 不检查 bad names
-b, --base-dir BASE_DIR 新账户的主目录的基目录
--btrfs-subvolume-home use BTRFS subvolume for home directory
-c, --comment COMMENT 新账户的 GECOS 字段
-d, --home-dir HOME_DIR 新账户的主目录
-D, --defaults 显示或更改默认的 useradd 配置
-e, --expiredate EXPIRE_DATE 新账户的过期日期
-f, --inactive INACTIVE 新账户的密码不活动期
-F, --add-subids-for-system add entries to sub[ud]id even when adding a system user
-g, --gid GROUP 新账户主组的名称或 ID
-G, --groups GROUPS 新账户的附加组列表
-h, --help 显示此帮助信息并退出
-k, --skel SKEL_DIR 使用此目录作为骨架目录
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-m, --create-home 创建用户的主目录
-M, --no-create-home 不创建用户的主目录
-N, --no-user-group 不创建同名的组
-o, --non-unique 允许使用重复的 UID 创建用户
-p, --password PASSWORD 加密后的新账户密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录
-P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
-s, --shell SHELL 新账户的登录 shell
-u, --uid UID 新账户的用户 ID
-U, --user-group 创建与用户同名的组
DBUS_SESSION_BUS_ADDRESS 这个是自动运行的 D-Bus 生成的地址,不是 systemd 的那个。预期会有大问题。
刚看了一下正常的那台笔记本, dbus地址和xdg的是一样的, 没问题的值是: unix:path=/run/user/972/bus ( 另外一台没问题机器的user id也是972)
有啥建议吗?
最近编辑记录 Hacksign (2024-01-06 21:39:04)
离线
先研究一下 pam_systemd.so 怎么加载吧。
离线
先研究一下 pam_systemd.so 怎么加载吧。
按照你的思路研究了一下, 发现并不是pam_systemd.so的问题。 这个.so应该是已经正确加载了。
# Situation 1
目前看到的问题是, xrdp-sesman 会根据 ~/.xinitrc 启动桌面环境, 我用的是Openbox, 如果 .xinitrc 中这么写:
exec /usr/bin/openbox-session
则 DBUS_SESSION_BUS_ADDRESS=unix:path=/tmp/dbus-7VCuKApZlC
# Situation 2
如果 .xinitrc 这么写
exec /usr/bin/openbox
则 DBUS_SESSION_BUS_ADDRESS 正常.
# Situation 3
如果 .xinitrc 写成
dbus-launch --exit-with-session /usr/bin/openbox
则 DBUS_SESSION_BUS_ADDRESS=unix:path=/tmp/dbus-7VCuKApZlC
-------------------------------------------------------------------------------------------
现在即想用到openbox-session的autostart能力, 又想要DBUS_SESSION_BUS_ADDRESS正常, 怎么解……………… T.T
最近编辑记录 Hacksign (2024-01-13 21:41:06)
离线
哦,所以是你跑的命令非要自己跑个 dbus 啊……
「openbox-session的autostart能力」是什么能力?你自己改改它呢?
离线
哦,所以是你跑的命令非要自己跑个 dbus 啊……
并不是, 即使不用那个dbus-launch,也会有ADDRESS是tmp的情况,比如下面这种启动方法:
exec /usr/bin/openbox-session
不知道为啥, 这种方式openbox-session启动的openbox会自己创建一个dbus。只有exec不带-session的版本,才会继承现有xrdp-sesman的DBUS_SESSION_BUS_ADDRESS环境变量(xrdp-sesman的此环境变量是正确的)。
「openbox-session的autostart能力」是什么能力?你自己改改它呢?
参见
https://wiki.archlinux.org/title/Openbox
Run openbox or openbox-session with xinit. Note that only openbox-session provides autostart.
现在只能这么解决先:
>> cat ~/.xinitrc
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
for entity in /etc/X11/xinit/xinitrc.d/?* ; do
[ -x "$entity" ] && . "$entity"
done
unset entity
fi
exec $HOME/.config/openbox/autostart &
exec /usr/bin/openbox
最近编辑记录 Hacksign (2024-01-14 15:01:31)
离线
找了一圈,openbox-session 没有自带启动 dbus-daemon 啊。是不是你的配置的原因?
离线
找了一圈,openbox-session 没有自带启动 dbus-daemon 啊。是不是你的配置的原因?
又折腾了一周……我又回来了了……
我也不知道为啥, 现在exec /usr/bin/openbox-session, 好了……我啥也没动………
离线