我正在使用 PHP 脚本连接到 ssh 服务器。它执行一个命令并退出。连接到非交互式和非登录 shell。因此,它不会加载.bashrc
或.bash_profile
文件,所以我无法umask
在那里正确设置。我在 google 上搜索了一些有关 ssh 内部工作原理的信息,似乎我可以~/.ssh/rc
在 ssh 连接后使用 file 来执行一些命令。我的~/.ssh/rc
在服务器上我正在连接:
#!/bin/bash
echo "Setting umask to 002"
umask 002
echo "Umask set"
问题是我的 umask 设置不正确。当我运行脚本并umask
在服务器上运行命令时,我得到0022
umask :
Run: cd /local/web/ && umask
> Setting umask to 002
> Umask set
> 0022
为什么它不起作用?
答案1
umask
仅当由内置命令运行时才有效。
不要按名称调用脚本,而是调用. script
以使其由当前 shell 进程执行。
然而,如果您对打印的值感到困惑,0022
而不是022
,则没有区别,这些值是相同的。
尝试 POSIXumask -S
以获得更好理解的输出。