小编c33*_*33s的帖子

如何向我的 puppetmaster 添加多个 dns 名称?

我在主人上的 puppet.conf

[master]
certname = myname.mydomain.com
ca_server = myname.mydomain.com
certdnsnames = puppet;puppet.local;myname.dyndns.org;hivemind.local;
Run Code Online (Sandbox Code Playgroud)

根据我对 certdnsnames 定义的理解,以下应该有效:

puppet agent --server myname.dyndns.org --test
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate
Run Code Online (Sandbox Code Playgroud)

如何避免这个错误?如何正确定义certdnsnames?我找到了不同的文档,但没有简单的例子。ii使用“,”作为分隔,我根本无法签名。我也看到过类似的语法

certdnsnames = puppet:puppet.intra.myserver.fr,puppet.myserver.fr:puppet,puppet:puppet,puppet.intra.myserver.fr,puppet.myserver.fr
Run Code Online (Sandbox Code Playgroud)

http://projects.puppetlabs.com/issues/5776

但对我来说,不清楚何时添加“木偶:”,何时不添加。

domain-name-system certificate puppet

18
推荐指数
1
解决办法
3万
查看次数

如何使用带有 PAM 的 ssh 服务器但不允许密码验证?

许多教程告诉您像这样配置 ssh 服务器:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no 
Run Code Online (Sandbox Code Playgroud)

但是使用此设置,您无法使用 PAM,因为我计划将 2 Factor Auth 与 Google Authenticator(OTP 一次性密码)一起使用,我需要 PAM。

那么如何配置一个新的 debian jessie ssh 守护进程,如果我想阻止使用普通密码登录但仍然允许使用 PAM。

也许确切的问题是如何配置 pam 以禁止密码?

PAM 身份验证的详细信息

禁用基于 PAM 的密码身份验证相当不直观。几乎所有 GNU/Linux 发行版(Slackware 除外)以及 FreeBSD 都需要它。如果您不小心,您可以将 PasswordAuthentication 设置为“no”,并且仍然通过 PAM 身份验证仅使用密码登录。事实证明,您需要将“ChallengeResponseAuthentication”设置为“no”才能真正禁用 PAM 身份验证。FreeBSD 手册页有这样的说法,这可能有助于澄清情况:

请注意,如果 ChallengeResponseAuthentication 为“yes”,并且 sshd 的 PAM 身份验证策略包括 pam_unix(8),则无论 PasswordAuthentication 的值如何,都将允许通过质询-响应机制进行密码身份验证。

http://www.unixlore.net/articles/five-minutes-to-more-secure-ssh.html

debian ssh pam

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

如何使用脚本从命令行重置硬盘(删除 Mbr 和删除分区)而无需重新启动?

要从干净状态开始,我需要从命令行将硬盘重置为空状态。

这与运行擦除实用程序无关,不必覆盖数据。

这个问题与Deleting All Partitions From the Command Line非常相似

那里的解决方案效果很好,

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc
Run Code Online (Sandbox Code Playgroud)

但是如果我想使用这样一个被覆盖的磁盘,我会收到设备仍在使用中的错误。

root@grml ~ # blockdev --rereadpt /dev/sda
BLKRRPART: Device or resource busy
Run Code Online (Sandbox Code Playgroud)

或者

root@grml ~ # partprobe
Error: Partition(s) 2, 3 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now before making further changes. …
Run Code Online (Sandbox Code Playgroud)

linux partition debian fdisk parted

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

apache 自动重新启动/重新加载配置,为什么?

简而言之:

  • 运行生产网络服务器
  • 星期二:更改了配置(更改是错误的,语法错误)但故意不重新启动 apache
  • 今天 apache 自己重新启动或重新加载配置@cron.daily time
  • 阿帕奇停机了

为什么 apache 自己重新启动或重新加载配置?

长版

在我的 debian lenny 稳定服务器上,它有一个非常默认的设置(apache2、mod_php、mysql 客户端、apc,...)我对我的 apc.ini 进行了更改,我不确定它是否有问题,因为它是一个生产服务器,我只是在没有重新启动网络服务器的情况下保护了文件。

今天@cron.daily时间(6:25),由于apc.ini错误,服务器自行重启并保持停机。我真的很想知道,为什么服务器会自行重启。还有为什么是今天?这是 cron.daily 时间而不是每周时间,错误的配置从星期二开始就在线。

定时任务:

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) …
Run Code Online (Sandbox Code Playgroud)

debian logrotate cron apache-2.2

9
推荐指数
1
解决办法
6130
查看次数

如何在不使用定义的情况下使用不同的参数两次调用木偶文件模板?

我尝试使用一个模板创建两个不同的文件,因为它们仅相差一行。

file 
{
    "/tmp/bootstrap-raid.sh":
    content => template("pxe/bootstrap.sh.erb"),
}

file 
{
    "/tmp/bootstrap-noraid.sh":
    content => template("pxe/bootstrap.sh.erb"),
}
Run Code Online (Sandbox Code Playgroud)

bootstrap.sh.erb:

<% if ??? == "???" %>
-r yes \
<% else %> 
-r no \
<% end %>
Run Code Online (Sandbox Code Playgroud)

我不能通过像 那样定义两次来传递变量$raid=yes file{} $raid=no file{},所以我试图file{}毫不费力地在每个变量中定义变量。然后我考虑在模板中使用目标文件名,<% if filename == "/tmp/bootstrap-raid.sh" %>这也是不可能的。

如何使用不同的“参数”两次调用模板

我的目标是不在清单文件中定义和调用额外的函数,或者制作两个模板。有任何想法吗?

模板中是否有任何预定义的默认变量,例如目标文件的文件名、模板名……?

编辑:另一个例子是在 debian 中有两个 php.ini 文件,一个用于命令行,一个用于网络服务器。我只想交换内存限制。但是每个服务器都需要两个 php.ini 文件。我正在寻找一种将硬编码参数传递给模板文件的方法,或者一种我可以if/then/else基于目标文件名的方法。当然,我知道我能够创建一个新的定义,我可以调用两次。但我正在寻找一种更简单的方法。

puppet template

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

Memcache+PHP 会话调优:memcache 如何使密钥过期?

我对此进行了一些研究,但没有找到明确的答案。

我们有一个使用 PHP+Memcache 会话处理程序的 Web 应用程序。

我有几个问题,都是相互关联的,但最终我的问题是,“为什么 PHP 会话在我们认为应该到期时显然没有到期?” 即最终用户应该在设定的时间后退出应用程序,但不是。

下面是点,请帮我把它们连接起来,并告诉我我错在哪里:

  • 我的理解是 Memcache 根据设置的时间使键过期,以秒为单位(或更大值的 unix 时间戳)。
  • 过期是懒惰的——即什么都没有被提前删除
  • PHP memecache session handler 使用sessions.gc_max_lifetime 来设置memcache key 过期时间。idk,也许不是?
  • Memcache 应该在提供请求的密钥并看到它已过期时不提供它(然后也可能删除它?)。但至少不会为它服务。
  • 对于 PHP 而言,这种不提供服务的行为应该等同于删除的会话和用户被注销。

用户没有被注销。

我怎么能调试呢?Memcache 并不完全透明。

没有工作的示例案例是会话超时设置为两小时的站点。示例用户会在晚上最后一次使用该站点,然后在 8 到 10 小时后返回该站点并仍处于登录状态。

php moodle memcache session

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

如何使用/调试 Debian preseed with SSL 使用 Startssl Certs

预播工作非常适合我使用:

auto url=http://mydomain.com/preseed.cfg
Run Code Online (Sandbox Code Playgroud)

但是一旦我使用 https 连接,它就不再起作用了。

auto url=https://mydomain.com/preseed.cfg
Run Code Online (Sandbox Code Playgroud)

使用 wget 我可以毫无问题地下载预置文件,使用 lynx 我得到一个

"SSL-Error:no issuer was found"
Run Code Online (Sandbox Code Playgroud)

所以它看起来像一个证书问题,我使用startssl.com来生成我的免费证书,nginx充当ssl网络服务器(使用firefox访问https站点没有问题)。

如何调试这个?如何强制通过 ssl 连接获取文件?

ssl debian preseed

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

如何将某些节点设置为暂停/保持/noop?

在 puppetmaster 端,是否可以选择将节点设置为挂起(将其设置为 noop)?我正在寻找类似于下面示例中的设置。在定义中将名为 noop 的变量设置为 true 的每个节点都不会更新。

因此,在多个 puppet 客户端运行后,example1.node.com 将没有 test1 文件,但 example2.node.com 将拥有该文件。

有这样的选择吗?是否存在另一种方法?(当然我可以简单地在节点名称中添加一个“_”,它会停止匹配。我正在寻找官方方法。

node "example1.node.com"
{
    $noop = true
    file 
    {
        "/root/test1":
            content => "test",
            ensure => present,
    }
}

node "example2.node.com"
{
    file 
    {
        "/root/test1":
            content => "test",
            ensure => present,
    }
}
Run Code Online (Sandbox Code Playgroud)

puppet

5
推荐指数
1
解决办法
1674
查看次数

如何从节点中的现有模块扩展文件定义?

我使用旧版本的 example42 mysql 模块,它定义了 mysql.conf 文件但不定义其内容。Mmy 的目标是只包含 mysql 模块并在节点中添加内容定义。

class mysql {
    ...
    file { "mysql.conf":
        path => "${mysql::params::configfile}",
        mode => "${mysql::params::configfile_mode}",
        owner => "${mysql::params::configfile_owner}",
        group => "${mysql::params::configfile_group}",
        ensure => present,
        require => Package["mysql"],
        notify => Service["mysql"],
    }
    ...
}


node xyz
{
    include mysql
    File["mysql.conf"] { content => template("mymodule/mysql.conf.erb")}
}
Run Code Online (Sandbox Code Playgroud)

上面的代码产生一个“只有子类可以覆盖参数”

将内容定义添加到现有文件定义的正确方法是什么?

puppet

5
推荐指数
1
解决办法
6566
查看次数

如何使用 make-jpkg 和 fakeroot 在 Debian Wheezy 上无错误地安装 Oracle Java?

如何使用 make-jpkg 和 fakeroot 在 Debian Wheezy 上安装 Oracle Java?

在 debian wheezy 上安装 oracle java 的手册非常清晰易懂:

http://wiki.debian.org/JavaPackage https://blogs.oracle.com/marigan/entry/installation_of_the_jdk_on http://www.debian-administration.org/articles/142

  • 从oracle下载jdk-7u21-linux-x64.tar.gz
  • 安装 java 包
  • 使用 jdk-7u21-linux-x64.tar.gz 运行 make-jpkg

以 root 身份运行:

make-jpkg jdk-7u21-linux-x64.tar.gz fakeroot make-jpkg jdk-7u21-linux-x64.tar.gz

结果出现以下错误:

您是真正的 root —— 不幸的是,一些 Java 发行版具有直接操作 /etc 的安装脚本,并且可能会导致您的系统出现一些不一致。相反,您应该成为非 root 用户并运行:

fakeroot make-jpkg jdk-7u21-linux-x64.tar.gz

这不会对您的系统文件造成任何损害,并且仍然允许 Java 发行版成功解压。

正在流产。

作为普通用户运行:

make-jpkg jdk-7u21-linux-x64.tar.gz fakeroot make-jpkg jdk-7u21-linux-x64.tar.gz

导致警告/错误墙。

一些错误:

dpkg-shlibdeps: warning: Can't extract name and version from library name `libverify.so'
error: couldn't find library libxslt.so.1 needed by …
Run Code Online (Sandbox Code Playgroud)

debian java packaging debian-wheezy

5
推荐指数
1
解决办法
7611
查看次数

如何使用 postfix 记录整个 SMTP 会话(包括数据)?

我正在运行带有 postifx 2.11.3-1 的 Debian 8.5,我尝试将整个 smtp 会话(包括数据)记录到mail.log.

-vvv通过添加到smtpdin 中(参见下面的整个文件)来增加详细程度,可以看到部分数据,master.cf但我不可能获得完整的数据,只记录了前 10 个字符。

邮件日志

--- snip ---
Sep 18 18:22:03 vagrant postfix/smtpd[9220]: rec_put: type T len 17 data 1474215723
Sep 18 18:22:03 vagrant postfix/smtpd[9220]: rec_put: type A len 18 data log_ident=
Sep 18 18:22:03 vagrant postfix/smtpd[9220]: rec_put: type A len 21 data rewrite_co
Sep 18 18:22:03 vagrant postfix/smtpd[9220]: rec_put: type S len 23 data foo@exampl
Sep 18 18:22:03 vagrant postfix/smtpd[9220]: rec_put: type A len …
Run Code Online (Sandbox Code Playgroud)

debian postfix

5
推荐指数
1
解决办法
2965
查看次数

nginx try_files 的奇怪行为。我的配置有什么问题?

os: debian stable (squeeze) nginx:squeeze-backports 1.2.1-2~bpo60+1

try_files 对我来说很奇怪。

这按预期工作,如果未找到 $uri,则在本地尝试 -> 使用 @static 位置

try_files  $uri $uri/ @static;
Run Code Online (Sandbox Code Playgroud)

仅在末尾添加 =404 会导致 404。如果我访问位于 $uri 或 @static 的现有文件,它是否仍然有效,并且仅在 @static 位置上找不到任何内容时才提供 404?

try_files  $uri $uri/ @static =404;
Run Code Online (Sandbox Code Playgroud)

将 =404 放在 @static 之前使其再次工作。为什么?如果文件不在 $uri 或 $uri/ 位置,而是在 @static 上,它应该导致 404 因为 =404 是在 @static 之前(根据我的理解)。如果我访问一个位于 $uri 的文件,它会从 nginx 正确提供(不访问 @static 后端或 =404)

try_files  $uri $uri/ =404 @static ;
Run Code Online (Sandbox Code Playgroud)

我很困惑

编辑:我的目标是:测试文件是否在本地,然后检查该文件的所有上游服务器,如果在这些位置找不到,则返回 404

配置:

upstream domain.com_upstream
{
    server yyy.yyy.yyy.yyy:8000 weight=10 max_fails=3 fail_timeout=3s;
    server zzz.zzz.zzz.zzz:8020 …
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy

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