我只能将远程cifs共享挂载为root用户,即使我与一个有效的用户使用uid和gid。
这确实有效了多年,与f吧保持不变。我一直在修补(这是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)
我遗漏了什么?
提前谢谢。
安装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 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
我的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
但仍然作为根
# 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
只是需要弄清楚模式,现在.
发布于 2022-01-25 10:26:34
正如您的评论所述,mount.cifs
不是SUID,因此无法作为非根用户执行挂载。然而,/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
应该包含用户名、密码和域、手册页中的详细信息。
发布于 2022-01-25 17:52:26
我突然意识到,由于(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
与之等价的是:
# 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,我会很想听的!
干杯,所有人!
发布于 2022-04-13 16:20:13
在使用个人信息连接之前,我不得不在公共服务器上交换我的个人详细信息,以供所有人查看。
sudo touch cred.txt
echo "USER hangbroktim PASS CreepyPoniesInTheNight34767248932654678497632785468932458769823584" >> cred.txt
mount -v -t cifs -o passloader cred.txt
https://unix.stackexchange.com/questions/687764
复制相似问题