首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >-t cifs仅作为根安装,不再授予uid和gid荣誉。

-t cifs仅作为根安装,不再授予uid和gid荣誉。
EN

Unix & Linux用户
提问于 2022-01-24 20:00:06
回答 3查看 2.2K关注 0票数 3

我只能将远程cifs共享挂载为root用户,即使我与一个有效的用户使用uid和gid。

这确实有效了多年,与f吧保持不变。我一直在修补(这是openSUSE Leap 15.3),所以我想知道有什么东西是坏了还是被废弃了。如果没有明显的答案,我如何最好地解决这个问题?

代码语言:javascript
运行
复制
# 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运行。

代码语言:javascript
运行
复制
# 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.

如果我这么做的话,一切都会好的

代码语言:javascript
运行
复制
# 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=********

但是有了同样的结果,我们作为根

代码语言:javascript
运行
复制
# 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看起来如下

代码语言:javascript
运行
复制
# 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

成功运行

代码语言:javascript
运行
复制
# sudo mount -a

但仍然作为根

代码语言:javascript
运行
复制
# 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

还是很困惑!

编辑II.

部分解决方案。

添加forceuid和forcegid修复了所有权,但我无法设置模式,即使使用file_mode和dir_mode:

代码语言:javascript
运行
复制
# 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

只是需要弄清楚模式,现在.

EN

回答 3

Unix & Linux用户

发布于 2022-01-25 10:26:34

正如您的评论所述,mount.cifs不是SUID,因此无法作为非根用户执行挂载。然而,/bin/mount是,但只能用于/etc/fstab中列出的路径。

如果这以前有效,那么它很可能已经设置了SUID位在/sbin/mount.cifs上,这将被皱眉。

最好将详细信息与包含在受限文件中的登录详细信息一起放入/etc/fstab中。详细信息在man mount.cifs中,但可能类似于:

代码语言:javascript
运行
复制
//192.168.1.1/Data5 /external/Data5 cifs username=my_user,credentials=<some file>,user 0 0

some file应该包含用户名、密码和域、手册页中的详细信息。

票数 0
EN

Unix & Linux用户

发布于 2022-01-25 17:52:26

我突然意识到,由于(a)我是唯一一个访问此共享的人,(b)模式更改无论如何都不会写回CIFS文件系统,所以不管模式是777还是755。因此,以下措施解决了这一问题:

代码语言:javascript
运行
复制
# 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

与之等价的是:

代码语言:javascript
运行
复制
# 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,我会很想听的!

干杯,所有人!

票数 0
EN

Unix & Linux用户

发布于 2022-04-13 16:20:13

在使用个人信息连接之前,我不得不在公共服务器上交换我的个人详细信息,以供所有人查看。

代码语言:javascript
运行
复制
sudo touch cred.txt
echo "USER hangbroktim PASS CreepyPoniesInTheNight34767248932654678497632785468932458769823584" >> cred.txt
mount -v -t cifs -o passloader cred.txt
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/687764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档