Linux默认文件权限

11

在Linux中是否有一种设置默认文件权限的方法?也就是说,无论为何创建文件(不考虑创建上下文),都可以设置新创建文件的文件权限。我知道可以将umask放入shell启动文件中,但这只适用于shell会话。当我使用pscp将文件传输到Linux服务器时,该文件始终以644 (rw-r--r--)的权限创建。我在使用过的每个Linux版本中都遇到了这个问题。当我使用pscp将文件传输到共享的Linux机器(比如我的ISP)时,这尤其令人恼火。在我能够进入shell并更改文件权限之前,该文件基本上就一直存在于所有人都可以读取的状态,这并不安全。


我不会关闭这个问题,但我要说的是我不确定这是否与编程有关。 - SCdF
我要说,第一个发布的答案是一个与编程有关的答案。如果你放弃由bash、zsh和tcsh执行的脚本文件,那么你也必须放弃由cmd.exe、IIS、PowerShell、VBA等执行的脚本文件。 - Windows programmer
@SCdF:为什么这与编程无关?在我看来,它是在范围内的。 - Jonathan Leffler
它没有工作。我在各种(.bash_profile、.tcshrc、.cshrc)启动文件中设置了umask 077,但仍然默认为664。问题在于我不知道pscp服务器正在使用哪个启动文件。 - Steve Kuo
你使用哪个 shell?Bash 吗?运行以下命令时您能得到什么结果:“ssh you@yourhost umask”(或 Putty 的相应“ssh”命令) - Matt Curtis
你应该得到"077" - 否则,你在用什么shell?也许我可以帮你找出你需要使用的启动文件。 - Matt Curtis
2个回答

11

将umask放入非交互式shell启动文件中(.bash_profile.zshenv.tcshrc,根据您使用的shell不同而异)。然后它将在非登录会话中运行。


我怎样才能知道pscp服务器将使用哪个shell? - Steve Kuo
当您使用Putty登录时,它会启动哪个Shell?或者,如果您已经登录,请通过“grep yourname /etc/passwd”命令查看该行的最后一项是什么(例如,“/bin/bash”)。 - Matt Curtis
这对我没用。我把它放在我的.bash_profile文件中,但仍然存在同样的问题。 - eviljack
1
@eviljack:你能告诉我你正在使用哪个shell吗(在/etc/passwd中grep yourname)?当pscp连接时,你能否确定是否有任何内容来自.bash_profile运行?(也许在文件中放置一个“echo”,并尝试plink,这可能有助于诊断问题。) - Matt Curtis

5
如果您想影响整个系统,也可以将其放置在 /etc/profile 中。

有没有办法使它针对文件夹树特定?我希望在 /var/www/html/sitename/ 中的所有文件都具有相同的权限,无论谁创建、编辑或移动文件。当然,除了定期运行 chmod/chown 递归地更改目录权限的 cron 作业之外。 - Tyson of the Northwest
至少在Ubuntu中,/etc/login.defs 已经使用了一段时间。 - DJCrashdummy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接