小编lar*_*sks的帖子

如果与 notify 结合使用,则使用 augeas 的 Puppet 配置将失败

我在使用以下 Puppet 清单时遇到问题,该清单旨在启用passwdqcRHEL-6 系统上的pam 模块(使用 Puppet 0.25.5 和 augeas 0.7.2):

augeas { 'authconfig':
        context => '/files/etc/sysconfig/authconfig',
        changes => [
                'set USEPASSWDQC yes',
                'set USECRACKLIB no',
                ],
        notify  => Exec['authconfig-all'],
}

exec { 'authconfig-all':
        command         => '/usr/sbin/authconfig --updateall',
        refreshonly     => true,
}
Run Code Online (Sandbox Code Playgroud)

如果我运行此清单,它似乎成功完成:

info: Applying configuration version '1311189237'
notice: //Augeas[authconfig]/returns: executed successfully
info: //Augeas[authconfig]: Scheduling refresh of Exec[authconfig-all]
notice: //Exec[authconfig-all]: Triggering 'refresh' from 1 dependencies
Run Code Online (Sandbox Code Playgroud)

但如果我检查目标文件,更改尚未应用:

# egrep 'PASSWDQC|CRACKLIB' /etc/sysconfig/authconfig
USECRACKLIB=yes
USEPASSWDQC=no
Run Code Online (Sandbox Code Playgroud)

如果我notify => ...从清单中删除该行,它会完全按预期工作。也就是说,鉴于此:

augeas { …
Run Code Online (Sandbox Code Playgroud)

configuration-management puppet augeas

7
推荐指数
1
解决办法
2823
查看次数

如何从 Windows 内部检测 Dell TPM?

我需要知道我的服务器是否安装了 TPM。它离我 10000 英里,所以去那里查看 BIOS 不是一种选择。无论如何,戴尔网站或维基百科上也没有对其进行描述。因此,请仅在您知道如何通过远程桌面确定我的服务器上是否安装了 TPM时才回答。谢谢

security windows encryption windows-server-2008-r2 tpm

7
推荐指数
2
解决办法
7235
查看次数

创建一个伪终端让 sudo 开心

我需要自动配置一个云实例(运行 Fedora 17),以下初始事实为真:

  • 我可以通过 ssh 密钥访问远程用户 ( cloud)
  • 该用户通过sudo.

手动配置就像登录和运行sudo su -并拥有它一样简单,但我想完全自动化这个过程。诀窍是系统默认为requiretty启用该选项sudo,这意味着尝试执行以下操作:

ssh remotehost sudo yum -y install puppet
Run Code Online (Sandbox Code Playgroud)

将失败:

sudo: sorry, you must have a tty to run sudo
Run Code Online (Sandbox Code Playgroud)

我现在正在解决这个问题,首先推送一个将在伪终端上运行命令的小型 Python 脚本:

import os
import sys
import errno
import subprocess

pid, master_fd = os.forkpty()

if pid == 0:
    # child process: now that we're attached to a
    # pty, run the given command.
    os.execvp(sys.argv[1], sys.argv[1:])
else:
    while True:
        try:
            data …
Run Code Online (Sandbox Code Playgroud)

cloud terminal sudo

7
推荐指数
1
解决办法
1858
查看次数

将 ACL 应用于 Dovecot 公共命名空间

我想通过 Dovecot 中的一组公共只读邮箱提供对某些邮件列表的访问。我的 dovecot (dovecot-2.0.9) 配置中有一个公共命名空间定义,如下所示:

namespace {
  type = public
  separator = .
  prefix = news.
  location = maildir:/var/spool/news
  subscriptions = no  
}
Run Code Online (Sandbox Code Playgroud)

我想将此命名空间中的所有邮箱设为只读。我有 ACL 插件的以下配置:

plugin {
  acl = vfile:/etc/dovecot/acls:cache_secs=300
}
Run Code Online (Sandbox Code Playgroud)

仔细阅读文档后,我似乎有一个/var/spool/news/.foo.bar可以将以下内容放入 的邮件文件夹 /var/spool/news/.foo.bar/dovecot-acl

anyone rl
Run Code Online (Sandbox Code Playgroud)

但这没有任何影响。我也尝试创建一个/usr/local/etc/dovecot/acls/news.foo.bar具有相同内容的文件 ,但这也没有任何作用。我打开了邮件调试:

mail_debug = yes
Run Code Online (Sandbox Code Playgroud)

但日志不会产生任何与 ACL 处理相关的内容。我很想知道是否有人让它正常工作,如果是这样,您是否可以提供一些配置示例。

此外,如果有任何不涉及每个邮箱配置的方法(例如,将 ACL 应用于news.*或其他内容的能力),那就太棒了。获取默认 ACL 工作的记录行为将是朝着正确方向迈出的一步。

email imap dovecot access-control-list namespaces

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

支持自助注册和电子邮件验证的帐户管理工具?

我在一个大学环境中工作,该环境过去几乎只为已经在中央用户数据库中拥有“正式”帐户的大学附属机构提供服务。我们越来越多地向不适合这种传统模型的外部合作者(托管的 Subversion/git 存储库、Wiki 访问等)提供服务。

我正在寻找一种工具,可以让我们管理“轻量级”帐户,其中“轻量级”的意思是:

  • 用户将能够通过 Web 界面自行注册帐户。
  • 帐户将通过某种电子邮件 + 验证 URL 机制自动验证。

默认情况下,拥有帐户不会授予对任何内容的访问权限(授权将通过组成员身份或特定服务 ACL 获得)。这是流行的 Web 服务的一个非常典型的模型,但我没有太多运气找到一个开箱即用的工具(而且我们真的没有时间或资源自己编写一个)。

有许多工具可以提供自助式密码更改和元数据编辑,但我还没有找到一种可以处理注册部分的工具。我希望 FreeIPA 能够处理这个问题,但据我所知它没有。

您是否知道可以启用此模型的任何工具?我对商业解决方案持开放态度,如果您对类似的事情有很好的经验。

identity-management ldap directory lifecycle user-accounts

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

是否有用于管理了解 ZFS 的 FreeBSD jails 的工具?

FreeBSD 下的 ZFS 允许将文件系统分配给监狱,这样监狱中具有适当权限的帐户可以访问文件系统,创建新的从属文件系统,等等。至少在 8-STABLE 中,这些功能没有集成到现有/etc/rc.d/jail脚本中。基本流程类似于:

sysctl -w security.jail.enforce_statfs=0
sysctl -w security.jail.mount_allowed=1
zfs set jailed=on <filesystem>
zfs jail <jid> <filesystem>
Run Code Online (Sandbox Code Playgroud)

并且还需要暴露zfs监狱内的设备节点。

与此同时,似乎有大量工具(ezjail、jailer、warden 和一般/usr/ports/sysutils/*jail*)声称更容易/更好/更强大/等等,但其中大多数似乎只是轻微维护而不是与标准监狱脚本相比,这确实是一场胜利。

我想避免重新发明轮子。是否有与 ZFS 集成良好的监狱管理工具?我正在寻找一些可以在启动 jail 时设置必要的 devfs 规则、sysctl 设置和 zfs 属性的东西……并且理想情况下允许对 jails 进行基于名称的引用,尽管许多第三方都支持这种引用 -可悲的是,库存监狱脚本中缺少派对工具。

freebsd zfs jail

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

是否有一个简单的 LDAP 到 HTTP 网关?

我们有一个本地 LDAP 目录,提供有关我们用户社区的基本联系信息。我们希望将其集成到一些第三方托管服务中,这些服务允许我们实现运行任意 Javascript 的小部件。

为了将 Javascript 连接到我们的 LDAP 目录,我想设置一个简单的 LDAP-to-HTTP 代理,该代理将接受 HTTP GET 请求,将它们转换为适当的 LDAP 查询,并以 JSON 编码数据的目录信息作为响应。

在理想的世界中,是这样的:

GET /ldap?mail=bob@example.com
Run Code Online (Sandbox Code Playgroud)

会给我这样的东西:

{
    "cn": "Bob Person", 
    "title": "System Administrator", 
    "sn": "Person", 
    "mail": "bob@example.com", 
    "telepehoneNumber": "617-555-1212", 
    "givenName": "Bob"
}
Run Code Online (Sandbox Code Playgroud)

(这显然假设 Web 应用程序在本地配置了有关要使用的基本 DN、如何进行身份验证等的信息)。

我想我可以写一个……但肯定已经存在这样的东西了吗?

http python ldap web

6
推荐指数
2
解决办法
9351
查看次数

让我们的 Windows 用户社区更容易使用 ssh

我在一个学术环境中工作,我们提供各种 ssh 可访问的计算资源。我们还提供git存储库托管,我们需要 ssh 来对存储库进行读/写访问。

我们针对 OS X 和 Linux 用户的说明相对简单,最重要的是,与 OS X 和大多数现代 Linux 发行版保持一致,OpenSSH都是开箱即用的,更重要的ssh-agent是,预配置为在任何桌面运行时运行会话处于活动状态。我们通常鼓励人们为他们的密钥分配密码,因此没有身份验证代理的生活很快就会变得烦人。

目前,我们为 Windows 用户提供的解决方案总体上更加分散且更加复杂。过去人们一直在使用PuTTY,但这需要额外的步骤来生成与 OpenSSH 兼容的密钥。这也使得使用git命令行工具变得更加困难——尽管不是,我意识到,不可能——使用命令行工具,当与 ssh 可访问的存储库交互时,它最适合与 OpenSSH 一起使用。

我们只想让人们安装msysgit,但我们正在寻找一种集成ssh-agent到 Windows 桌面环境的好方法。最常见的解决方案是通过 中的条目启动代理.bashrc,但这充其量看起来很笨拙,这意味着我们必须指导大部分非技术用户完成.bashrc在 Windows 下编辑他们的过程。

另一个复杂之处是它WinSCP通常用作文件传输工具——当然这不会与ssh-agent. 它将pagent与 PuTTY 人员交谈,但pagent不说话,ssh-agent因此无法从命令行工作。

其他人做了什么来为不同平台上的用户提供一致的环境?您是否刚刚举手并决定为 Windows 用户维护一组单独的文档?

更新

我发现有两个程序充当 OpenSSH 和 pagent 之间的垫片。你有任何的经验夏利SSH-PAGENT

windows ssh git

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

如何使参数化 Puppet 类中的变量默认为另一个参数的值?

我有一个 Puppet 类,它设置了许多服务和配置文件。在大多数情况下,可以使用默认服务器,但也可以为每个服务配置显式服务器。我发现自己一直在这样做:

class myclass (
  $default_server    = 'server.example.com',
  $server_for_thing1 = undef,
  $server_for_thing2 = undef,
  $server_for_thing3 = undef
) {

  if $server_for_thing1 {
    $real_server_for_thing1 = $server_for_thing1
  } else {
    $real_server_for_thing1 = $default_server
  }

  # ...and so forth...
}
Run Code Online (Sandbox Code Playgroud)

随着可能的服务数量越来越大,这种语法变得笨拙。有没有更好的方法来做到这一点?我真的想要一些类似的东西:

$server_for_thing1 = $server_for_thing1 || $default_server
Run Code Online (Sandbox Code Playgroud)

...但不能在 Puppet 中重新分配变量。有没有更好的方法来做到这一点?

puppet

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

当应用于本地目的地流量时,DNAT 和 REDIRECT 是否等效?

在设置我们的 OpenStack 环境时,我遇到了一个问题,即阻止实例联系在主机上运行的服务器。元数据服务(暴露 HTTP API)在主机的 8775 端口上运行,OpenStack 网络代码添加以下 DNAT 规则以通过端口 80 上的特殊地址授予访问权限:

-A PREROUTING -d 169.254.169.254/32 
  -p tcp -m tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8775 
Run Code Online (Sandbox Code Playgroud)

实例通过本地桥接设备连接到主机,并169.254.169.254分配给lo.

虽然此规则成功匹配来自尝试访问的来宾实例的数据包http://169.254.168.254/,但它们永远不会到达侦听服务。

用基本上等效的 REDIRECT 替换此 DNAT 规则可使一切正常工作:

-A PREROUTING -d 169.254.169.254/32 
  -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8775 
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么 REDIRECT 起作用而 DNAT 失败。从 iptables 文档中不清楚该DNAT规则是否适用于本地目标流量。我希望这里有人可以提供权威的答案,最好有文档支持,或者可以建议我的配置中可能有什么问题阻止了 DNAT 规则按预期工作。

networking nat iptables openstack

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