mount -t cifs 仅以 root 身份挂载,不再支持 uid 和 gid

mount -t cifs 仅以 root 身份挂载,不再支持 uid 和 gid

即使我使用有效用户的 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

相关内容