标签: umask

如何为所有类型的连接设置 ssh 的 umask

我一直在寻找一种方式来设置的OpenSSH的的umask0027在所有连接类型一致的方式。

通过连接类型,我指的是:

  1. sftp
  2. SCP
  3. SSH主机名
  4. ssh主机名程序

3. 和 4. 之间的区别在于前者启动一个通常读取/etc/profile信息的外壳,而后者不启动。

此外,通过阅读这篇文章,我了解到较新版本的 OpenSSH 中存在 -u 选项。然而这行不通。

我还必须补充一点,/etc/profile现在包括umask 0027.

逐点进行:

  • sftp --u 0027这里sshd_config提到的设置,是不够的。

如果我不设置这个参数,sftp 默认使用umask 0022. 这意味着如果我有两个文件:

-rwxrwxrwx 1 user user 0 2011-01-29 02:04 execute
-rw-rw-rw- 1 user user 0 2011-01-29 02:04 read-write
Run Code Online (Sandbox Code Playgroud)

当我使用 sftp 将它们放入目标机器时,我实际上得到:

-rwxr-xr-x 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 …
Run Code Online (Sandbox Code Playgroud)

ssh umask

36
推荐指数
3
解决办法
6万
查看次数

为某个目录中的新文件指定默认组和权限

我有一个目录,其中有一个由多个用户共享的项目。这些用户使用 SSH 访问此目录并修改/创建文件。

这个项目应该只对特定的用户组是可写的:我们称之为“mygroup”。在 SSH 会话期间,当前用户创建的所有文件/目录默认应归组“mygroup”所有,并具有组可写权限。

我可以解决权限问题umask

$ cd project
$ umask 002
$ touch test.txt
Run Code Online (Sandbox Code Playgroud)

文件“test.txt”现在是组可写的,但仍然属于我的默认组(“mislav”,与我的用户名相同)而不是“mygroup”。我可以chgrp递归地设置所需的组,但我想知道是否有一种方法可以隐式设置某些组,例如 umask 在会话期间更改默认权限。

这个特定目录是一个带有工作副本的共享 git 存储库,我希望git checkoutgit reset操作为在工作副本中创建的新文件设置正确的掩码和组。操作系统是 Ubuntu Linux。

更新:一位同事建议我应该查看POSIX ACL 的getfacl/setfacl,但下面结合umask 002当前会话中的解决方案对我来说已经足够了,而且要简单得多。

unix permissions posix umask chgrp

16
推荐指数
3
解决办法
2万
查看次数

如何为 Ubuntu 服务器设置 SFTP 的默认权限?

我们有一个 Ubuntu 10.04 服务器。如何设置它以便通过 SFTP 或 SSH 创建(或复制)的新文件具有 g+rw 和 g+rwx 权限(在适当的情况下)?

我也在使用 setgid (chmod g+s) 以便他们继承正确的组所有者。

ubuntu permissions ssh sftp umask

16
推荐指数
2
解决办法
3万
查看次数

通过 VSFTPD 创建的文件的默认所有者/权限

如何将创建的目录和文件的默认值设置为 775 ?我的理解是我需要修改VSFTPD上的umask,但是我怎么知道要改成什么?

ftp umask vsftpd

15
推荐指数
2
解决办法
10万
查看次数

我可以使用 ACL 覆盖我的 umask 以使给定目录中创建的所有文件都可读吗?

假设我的 umask 是 0077。

我有一个目录,foo我想对其应用特殊权限。我在其中创建的所有文件foo都应该是全局可读的,并且所有目录都应该是全局可读和可执行的。

目前,如果我创建一个文件,它将是 0600,目录将是 0700:

$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm    0 2012-01-12 16:15 file
Run Code Online (Sandbox Code Playgroud)

我希望文件是 0644,目录是 0755,不管我的 umask:

drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm    0 2012-01-12 16:15 file
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

linux permissions access-control-list umask

15
推荐指数
1
解决办法
2万
查看次数

如何在 Debian 上的 Apache 中设置默认 umask?

002默认情况下,我需要 apache2 创建的文件具有 umask ,即组 rw。

我试过放入umask 002/etc/apache2/envvars ,虽然这个脚本确实作为 apache 启动的一部分执行(apache2ctl graceful),但 umask 没有效果。大概在启动过程中的某个地方(例如,当用户从 降级root到 时www-data)有更好的地方放置它。

我读过有关 Fedora 的帖子和一个建议将 umask 放入的帖子,/etc/init.d/apache2但这些都不适用于 Debian (Squeeze)。

你能帮我吗?

umask apache-2.2

14
推荐指数
1
解决办法
4万
查看次数

OpenSSH SFTP 服务器是否在 put 命令(chrooted 环境)后使用 umask 或保留客户端权限?

我知道这个问题已经讨论过了,但是通过阅读帖子我无法找到答案,因为有些人说“是的 umask 可以工作”,而其他人说“OpenSSH put 命令始终保留权限”

在此之前,准确地说:

  • 我在 RHEL 6.2 上使用 OpenSSH 5.9
  • 我已经配置了一个 chrooted SFTP 服务器,使用internal-sftp子系统,-u 0002用于 umask
  • 我确切地说我不使用-por-P选项

从我一方面读到的内容:有很多方法可以为 SFTP 传输定义 umask:

  • 选项-uinternal-sftp(或sftp-server)中,由于5.4的OpenSSH
  • 创建一个包装器sftp-server(在其中我们明确设置了 umask - 这不适合 chrooted 环境顺便说一句)
  • pam.d/sshd文件中添加特定配置

另一方面,我读过:

OpenSSH SFTP 客户端和服务器确实传输权限(作为扩展)并在本地创建具有权限的远程文件。AFAICT,没有办法禁用这种行为。

所以我做了以下测试:

在我的客户端上,我创建了权限为 600 和 700 的文件MYFILE和目录MYDIR

然后用sftp命令:

mkdir => the new directory has permissions following the umask (OK)
put MYFILE …
Run Code Online (Sandbox Code Playgroud)

ssh sftp umask

13
推荐指数
1
解决办法
2万
查看次数

如何完全控制 umask/PAM/权限?

// 2 月 8 日更新 - 简要说明未决问题:

  • 如何与文件不同地屏蔽目录?
  • 如何在 Nautilus 复制/粘贴上屏蔽?
  • 如何为 SSHFS 设置 umask?

我们的情况

我们公司的几个人登录到服务器并上传文件。他们都需要能够上传和覆盖相同的文件。他们有不同的用户名,但都属于同一个组。但是,这是一个 Internet 服务器,因此“其他”用户应该(通常)只有只读访问权限。所以我想要的是这些标准权限:

文件:664
目录:771

我的目标是所有用户都不需要担心权限。服务器的配置方式应使这些权限适用于所有新创建、复制或覆盖的文件和目录。只有当我们需要一些特殊权限时,我们才会手动更改它。

我们通过 Nautilus 中的 SFTP-ing 将文件上传到服务器,通过使用 sshfs 挂载服务器并在 Nautilus 中访问它,就像它是本地文件夹一样,以及通过命令行中的 SCP-ing。这基本上涵盖了我们的情况和我们的目标。

现在,我已经阅读了很多关于美丽的 umask 功能的内容。据我所知,umask(与 PAM 一起)应该允许我做我想做的事:为新文件和目录设置标准权限。然而,经过许多小时的阅读和反复试验,我仍然没有让它起作用。我得到了许多意想不到的结果。我真的很想深入了解 umask 并且有很多问题没有得到解答。我将在下面发布这些问题,以及我的发现和对导致这些问题的试验的解释。鉴于很多事情似乎都出错了,我认为我做错了几件事。因此,有很多问题。

注意:我使用的是 Ubuntu 9.10,因此无法更改 sshd_config来设置 SFTP 服务器的 umask。已安装 SSH OpenSSH_5.1p1 Debian-6ubuntu2 < 需要 OpenSSH 5.4p1。那么问题来了。

1. 我是否需要重新启动 PAM 更改才能生效?

让我们从这个开始。涉及的文件太多了,我无法弄清楚什么会影响,什么不会影响,也因为我不知道是否必须重新启动整个系统才能使 PAM 更改生效。我在没有看到预期的结果后这样做了,但这真的有必要吗?或者我可以从服务器注销并重新登录,新的 PAM 策略是否有效?或者是否有一些“PAM”程序可以重新加载?

2. 是否有一个单一的文件可以影响所有会话的所有用户?

所以我最终更改了许多文件,因为我阅读了许多不同的东西。我最终在以下文件中设置了 umask:

~/.profile -> umask=0002
~/.bashrc -> umask=0002
/etc/profile -> umask=0002
/etc/pam.d/common-session …
Run Code Online (Sandbox Code Playgroud)

permissions ssh sftp pam umask

12
推荐指数
1
解决办法
2万
查看次数

在 Ubuntu 上为守护进程设置 umask 的方法

我有一个 http 守护进程服务器进程 (yaws),我希望服务器使用 002 的 umask 写入任何新文件,以便同一组中的另一个用户可以修改、移动或删除由守护进程创建的文件。这是在 Ubuntu 10.04 上。

与Apache不同,yaws没有umask的配置选项,那么有什么方法可以设置任何守护进程的umask呢?

我找到了关于将 init 脚本更改为 add 的答案umask 002。这确实有效,但我不确定编辑 init 脚本是在多台机器上轻松记录和配置的最佳方式。

我还发现参考pam_umask模块这里。看起来这允许在 /etc/passwd 的 GECOS 字段中配置 umask 的每个用户设置。

还有其他方法可以为守护进程设置 umask 吗?推荐的方式是什么?

ubuntu daemon umask yaws

8
推荐指数
2
解决办法
2万
查看次数

无法为 Ansible 任务设置 umask

我正在尝试使用特定的(0002)运行任意 Ansible 模块umask

一些 Ansible 模块(例如git)支持umask参数(或mode直接设置权限的参数),但许多模块不支持。
据我所知,Ansible 不会调用 shell(除非您使用该shell模块),因此更改 shell 配置文件中的 umask 是没有用的。
我的方法是更改UMASK​​ 中的行/etc/login.defs,但这对 Ansible 没有影响。仍为umask0022。PAM
似乎配置为包括pam_umask.so.

我知道我可以使用该shell模块作为解决方法(shell: umask 0002; some_command),但这似乎是一个丑陋的黑客。

我如何让 Ansible 尊重我的umask

这是针对 CentOS 8 系统的 Ansible 2.9.9。

linux umask ansible

6
推荐指数
1
解决办法
5277
查看次数

标签 统计

umask ×10

permissions ×4

ssh ×4

sftp ×3

linux ×2

ubuntu ×2

access-control-list ×1

ansible ×1

apache-2.2 ×1

chgrp ×1

daemon ×1

ftp ×1

pam ×1

posix ×1

unix ×1

vsftpd ×1

yaws ×1