即使我使用有效用户的 uid 和 gid,我也只能以 root 身份挂载远程 cifs 共享。
这做过工作多年,fstab 保持不变。我一直在打补丁(这是 openSUSE Leap 15.3),所以我想知道是否有某些东西被破坏或弃用。如果没有明显的答案,我该如何最好地解决这个问题?
# whoami
root
# uname -a
Linux my_user7 5.3.18-59.40-preempt #1 SMP PREEMPT Mon Jan 3 18:43:20 UTC 2022 (34edd9c) x86_64 x86_64 x86_64 GNU/Linux
# ls -lah /external/
total 0
drwxr-xr-x 1 root root 76 Apr 13 2021 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 0 Jul 28 2018 Data1
drwxr-xr-x 1 my_user users 0 Nov 26 2019 Data2
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data3
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data4
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
# mount -v -t cifs -o username=my_user,password=my_pass,vers=1.0,uid=my_user,gid=users //192.168.1.1/Data5 /external/Data5
mount.cifs kernel mount options: ip=192.168.1.1,unc=\\192.168.1.1\Data5,vers=1.0,uid=1000,gid=100,user=my_user,pass=********
# ls -lah /external/
total 0
drwxr-xr-x 1 root root 76 Apr 13 2021 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 0 Jul 28 2018 Data1
drwxr-xr-x 1 my_user users 0 Nov 26 2019 Data2
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data3
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data4
drwxrwxrwx 1 root root 0 Jul 27 14:14 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
# id my_user
uid=1000(my_user) gid=100(users) groups=491(cdrom),463(vboxusers),100(users)
我缺少什么?
提前致谢。
编辑:附加信息...
mount cifs 只能以 root 身份运行
# whoami
my_user
# mount -v -t cifs -o username=my_user,password=my_pass,vers=1.0,uid=my_user,gid=users //192.168.1.1/Data5 /external/Data5
This program is not installed setuid root - "user" CIFS mounts not supported.
如果我 sudo 它将运行正常
# sudo mount -v -t cifs -o username=my_user,password=my_pass,vers=1.0,uid=my_user,gid=users //192.168.1.1/Data5 /external/Data5
mount.cifs kernel mount options: ip=192.168.1.1,unc=\\192.168.1.1\Data5,vers=1.0,uid=1000,gid=100,user=my_user,pass=********
但最终结果相同,我们以 root 身份挂载
# ls -lah /external/
total 0
drwxr-xr-x 1 root root 76 Apr 13 2021 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 0 Jul 28 2018 Data1
drwxr-xr-x 1 my_user users 0 Nov 26 2019 Data2
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data3
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data4
drwxrwxrwx 1 root root 0 Jul 27 14:14 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
我的 fstab 如下所示
# cat /etc/fstab | grep Data5
//192.168.1.1/Data5 /external/Data5 cifs user,nofail,x-systemd.device-timeout=10,x-systemd.automount,x-systemd.idle-timeout=60,uid=my_user,gid=users,username=my_user,password=my_pass,vers=1.0 0 0
哪个运行成功
# sudo mount -a
但仍然以root身份安装
# ls -lah /external/
total 16K
drwxr-xr-x 1 root root 76 Apr 13 2021 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 12K Nov 4 14:14 Data1
drwxr-xr-x 8 my_user users 170 May 6 2021 Data2
drwxr-xr-x 2 my_user users 4.0K Oct 4 10:04 Data3
drwxr-xr-x 5 my_user users 110 Nov 19 12:02 Data4
drwxrwxrwx 1 root root 0 Jul 27 14:14 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
还是一脸茫然!
编辑二...
部分解决方案。
添加forceuid和forcegid修复了所有权,但我无法设置模式,即使使用file_mode和dir_mode:
# mount -v -t cifs -o username=my_user,password=my_pass,uid=my_user,gid=users,forceuid,forcegid,file_mode=0755,dir_mode=0755,vers=1.0 //192.168.1.1/Data5 /external/Data5
mount.cifs kernel mount options: ip=192.168.1.1,unc=\\192.168.1.1\Data5,forceuid,forcegid,file_mode=0755,dir_mode=0755,vers=1.0,uid=1000,gid=100,user=my_user,pass=********
# ls -lah /external/
total 0
drwxr-xr-x 1 root root 76 Jan 25 14:20 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 0 Jul 28 2018 Data1
drwxr-xr-x 1 my_user users 0 Nov 26 2019 Data2
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data3
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data4
drwxrwxrwx 1 my_user users 0 Jul 27 14:14 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
现在只需要弄清楚模式...
答案1
我突然想到,由于 (a) 我是唯一访问该共享的人,并且 (b) 模式更改无论如何都不会写回 CIFS 文件系统,因此模式是 777 还是 755 并不重要。因此,以下修复了该问题:
# mount -v -t cifs -o username=my_user,password=my_pass,uid=my_user,gid=users,forceuid,forcegid,vers=1.0 //192.168.1.1/Data5 /external/Data5
mount.cifs kernel mount options: ip=192.168.1.1,unc=\\192.168.1.1\Data5,forceuid,forcegid,file_mode=0755,dir_mode=0755,vers=1.0,uid=1000,gid=100,user=my_user,pass=********
# ls -lah /external/
total 0
drwxr-xr-x 1 root root 76 Jan 25 14:20 .
drwxr-xr-x 1 root root 422 Sep 4 14:26 ..
drwxr-xr-x 1 my_user users 0 Jul 28 2018 Data1
drwxr-xr-x 1 my_user users 0 Nov 26 2019 Data2
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data3
drwxr-xr-x 1 my_user users 0 Jul 27 2018 Data4
drwxrwxrwx 1 my_user users 0 Jul 27 14:14 Data5
drwxr-xr-x 1 my_user users 0 Apr 13 2021 Data6
以及 fstab 等效项:
# cat /etc/fstab | grep Data5
//192.168.1.1/Data5 /external/Data5 cifs user,nofail,x-systemd.device-timeout=10,x-systemd.automount,x-systemd.idle-timeout=60,uid=my_user,gid=users,credentials=/root/.data5cred,vers=1.0,forceuid,forcegid 0 0
希望这对某人有帮助。
注 1:如果有人确实知道修复权利的解决方案,从学习的角度来说我仍然感兴趣。
注2:如果有人知道为什么我突然需要指定forceuid和forcegid我会非常有兴趣听听!
干杯,大家!
答案2
正如您的评论所述,mount.cifs
它不是 SUID,因此无法以非 root 身份执行安装。/bin/mount
然而 只能用于 中列出的路径/etc/fstab
。
如果这以前有效,那么很可能有人设置了 SUID 位,/sbin/mount.cifs
而这会引起人们的不满。
您最好将详细信息/etc/fstab
与包含在受限文件中的登录详细信息一起放入。详细信息在 中man mount.cifs
,但类似于:
//192.168.1.1/Data5 /external/Data5 cifs username=my_user,credentials=<some file>,user 0 0
其中some file
应包含用户名、密码和域,详细信息请参见手册页。
答案3
在我可以使用个人详细信息进行连接之前,我必须在公共服务器上交换我的个人详细信息以供所有人查看
sudo touch cred.txt
echo "USER hangbroktim PASS CreepyPoniesInTheNight34767248932654678497632785468932458769823584" >> cred.txt
mount -v -t cifs -o passloader cred.txt