使用启动脚本登录samba共享(不是fstab)
背景
当我的用户登录时,我正在尝试自动执行一个安装受密码保护的Samba共享的命令。问题是,我与另一个用户共享我的笔记本电脑,我不想在登录时挂载Samba共享我只想在登录时安装它。 这排除了编辑我的fstab文件,因为我希望这是用户特定的。
之前的研究
我搜索并查看了许多与安装Samba共享相关的问题和答案,包括“ 在启动/登录时使用脚本安装Samba共享 ”和“ 在启动时安装samba共享的正确fstab条目 ”,但大多数答案涉及编辑fstab ,这对大多数人来说很有用,但这不是我在这里寻找的东西。
到目前为止我做了什么
我可以通过执行以下操作从命令行手动挂载Samba共享:
sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
问题陈述
当我从命令行执行它时,上一个命令工作得很好 – 它提示我输入密码来获取sudo权限,我输入它,命令运行。 问题是,当我将完全相同的命令添加到“启动应用程序首选项”>“编辑启动程序”中的“命令”字段时,保存我的更改,重新启动并重新登录,Samba共享未按预期安装。 我怀疑这是因为我需要root权限才能以sudo身份运行,并且使用启动程序首选项中的脚本,我无法输入它,因此脚本会失败。
我该如何解决这个问题?
好吧,我设法自己解决了这个问题(在别人的帮助下)。 正如我所怀疑的那样,潜在的问题是我试图在不提供密码的情况下运行需要root权限的命令。 我按照线程“ 如何在不要求输入密码的情况下在脚本中执行命令 ”中的说明解决了这个问题。 它的长短不一,我创建了一个名为“script-mount-samba-share.sh”的shell脚本,它除了包含我要运行的mount命令的单行之外什么都没有:
mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,credentials=/home/scott/.smbcredentials,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
然后,我将文件的所有权更改为root:root并将其权限更改为700.接下来,我设置sudo以允许在不输入密码的情况下运行该脚本,然后我更改了“启动应用程序首选项”>“编辑启动”中的“命令”字段编程为“sudo /home/scott/script-mount-samba-share.sh”(不带引号),瞧。 下次我重新启动并使用我的用户登录时,Samba共享安装而没有我的手指。 我还测试了当我重新启动并使用其他用户登录时,Samba共享没有挂载,这就是我想要的。
我现在要克服的唯一小问题是,当我已经登录然后将用户切换到其他人时,我的Samba共享仍显示在Nautilus的左侧导航栏中,这是有意义的,因为它是当我使用自己的用户登录时安装,但我不希望已安装的共享在Nautilus中显示给其他用户,因此我的下一个任务是弄清楚如何使该部分发生。
添加mount命令的用户名和密码很重要,否则可能会要求输入密码。 对我来说,这工作:
sudo mount -t cifs //centaroo.local/Me /media/Me -o uid=scott,gid=scott,user=,password=,iocharset=utf8,sec=ntlm,file_mode=0600,dir_mode=0700
当然还有/ etc / sudoers中的所有更改