我再次发现系统的这种奇怪行为。我正在运行 Debian 6.0.6 并且在直接从 CD/DVD 执行脚本时遇到了一些麻烦。最后我不得不使用:
sh /media/cdrom/command
Run Code Online (Sandbox Code Playgroud)
运行它。不得不求助于 sh 有什么大不了的?!如果脚本依赖于 bash 特性怎么办?真的很烦人,在我看来并没有增加安全性
有人知道这种行为的充分理由吗?
PS:如果您尝试直接使用 ./... 运行它,您会收到一个错误,该错误没有暗示任何问题的提示(文件系统已挂载 noexec):
bash: ./media/cdrom/command: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果你将它作为 bash /media/cdrom/command 运行,你会得到同样的错误(我认为即使对于在命令行上作为参数传递的命令,安装选项的验证也会被 bash 验证。
永久的解决方案是将 exec 添加到 /etc/fstab 中的挂载选项中,例如:
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec 0 0
Run Code Online (Sandbox Code Playgroud) 我在具有未知桌面环境(ssh 访问)的 debian 9 系统上。如何找出默认情况下使用哪个程序来查看具有给定扩展名(例如 pdf)的文件?
编辑:由于扩展名对决定不重要,可以使用 file 找到给定文件的 mime 类型
file -i file.ext
Run Code Online (Sandbox Code Playgroud) 我有一个带有 cifs 的远程挂载,似乎没有办法让 bash 从该挂载执行脚本,是否可以启用这样的执行?
ls -lh ini*
-rwxrwxr-x 1 alan 500 222 2012-03-23 10:16 initall.sh
bash --version
GNU bash, version 4.2.8(1)-release (i686-pc-linux-gnu)
./initall.sh
bash: ./initall.sh: Permission denied
Run Code Online (Sandbox Code Playgroud)
cifs 挂载似乎也支持 unix 扩展,因为我能够正确地修改文件。
下面是挂载选项: user,auto,pass= ***
,uid=alan,user=***
permissions ×2
bash ×1
command-line ×1
debian ×1
defaults ×1
dvd ×1
executable ×1
filesystems ×1
media ×1