Articles of linux

NixOS重现用户和包?

我是NixOS的新手,并试图学习它的概念。 我对此感到兴奋的原因之一是我希望能够给我一个可重复的系统configuration,类似于使用Ansible for localhost 。 但是,我不知道如何实现这一点。 我知道/etc/nixos/configuration.nix中的/etc/nixos/configuration.nix ,但这些只是系统范围的软件包。 我也知道nix-env命令可以为用户安装一个软件包,但我宁愿将这样的软件包声明为一个文件,我可以检查到源代码pipe理。 有一个特定的文件,我可以configuration(类似于一个剧本),我可以为用户声明一套软件包? 或至less指定其“用户环境”或“configuration文件” (不知道哪个术语是正确的)? 理想情况下,我可以将几个文件复制到另一台计算机,运行一个命令,并且与旧计算机处于相同的状态,包括具有不同套件的多个用户。 最后,我的用例意味着我不应该使用nix-env来安装软件包吗?

在Linux上强制PCIe SSD成为/ dev / sdb

在安装过程中是否有任何选项强制PCIe SSD不是/ dev / sda? 我希望保留的SSD只限于/ var,但每当我尝试将可启动分区设置为/ dev / sdc2(sdb是usb install drive)时,grub加载程序都会失败。 我一直在使用CentOS 6.6和Ubuntu 14的Dell r610和HP DL385 G6服务器上进行安装,并且PCI设备总是在RAID设备之前显示。

自连接networking邻居上次活动以来的时间

我正在使用Fedora Linux服务器作为网关。 当我检查我的ARPcaching时,我有以下的logging列表, > Address HWtype HWaddress Flags Mask > Iface > 178.200.222.51 ether ca:cf:e1:3a:d1:3e C tap0 > 192.168.123.2 ether c0:4a:00:02:35:b3 C wlp3s0 > 192.168.123.109 ether 74:e6:e2:45:82:99 C wlp3s0 我知道ARPcaching是默认的(在我的fedora)60秒。 在60秒钟不活动之后,该条目将从ARPcaching中删除(如果我错了,请纠正我)。 如果我知道任何MAC地址有一段时间的空闲时间,有没有办法? 例如,mac c0:4a:00:02:35:b3将在60秒的活动后从ARPcaching中删除。 如果在ARPcaching中找不到MAC,我很确定最后的活动时间超过了1分钟。 我怎么知道指定MAC的上一次活动是否通过了10分钟?

Postfix收到的邮件放在/var/mail/user/.Sent Messages中

出于某种原因,我在Amazon Linux EC2实例上收到的运行postfix和dovecot的/var/mail/<user>/.Sent\ Messages被放在/var/mail/<user>/.Sent\ Messages ,而不是预期的/var/mail/<user> 。 Postfix的master.cf包含以下关于dovecot的内容 dovecot unix – nn – – pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient} Dovecot的mail_location中的dovecot.conf被设置为 maildir:/var/mail/%u 这里是postfix和dovecot( /var/log/maillog )的/var/log/maillog Sep 4 02:43:02 mail dovecot:imap-login:login:user =,method = PLAIN,rip = 108.23.86.62,lip = 172.31.50.106,mpid = 9156,TLS 9月4日02:43:02 mail dovecot:imap(支持):断开连接:退出bytes = 32/392 Sep 4 02:43:23 mail dovecot:imap-login:login:user =,method = PLAIN,rip = […]

OpenVPN客户端无法连接到通过另一个OpenVPN B路由的地址

好吧,我有一个OpenVPN服务器A,它承载范围10.8.0.0/24和一个OpenVPN服务器B,主机10.7.0.0/24。 服务器A也是服务器B的客户端。 这是两台服务器的tun适配器的configuration。 OpenVPN服务器 inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 inet 10.7.0.6 peer 10.7.0.5/32 scope global tun1 OpenVPN服务器B inet 10.7.0.1 peer 10.7.0.2/32 scope global tun0 OpenVPN A的客户端通过服务器A获取所有的stream量,并通过其WAN接口输出。 但是,一个IP范围192.168.0.0/24只能通过服务器B的VPN到达。我已经build立了一条通过所有192.168.0.0/24通过连接服务器A到服务器B的tun接口的路由。 ip route add 192.168.0.0/24 dev tun1 我可以在服务器A上ping 192.168.0.0/24, 但是当我在服务器A的OpenVPN客户端上时,我无法ping或达不到该范围。我可以ping通tun地址10.7.0.6的IP,但不能ping 192.168.0.0/ 24。 谁能解释一下为什么会发生这种情况?

允许远程服务器访问,同时防止文件传输

我正在设置一个Linux服务器,需要:(1)允许远程访问。 (2)防止文件被下载。 具体而言,服务器保存用户将要分析的数据,build立模型等。用户将需要从他们的工作计算机(也运行Linux)访问服务器。 但是,他们不应该能够将数据从服务器传输到用户的工作计算机。 目前,我唯一想到的解决scheme是设置两层访问权限:用户首先ssh或VNC到中间服务器,然后VNC从中间服务器到主服务器。 有一个更简单的解决scheme? (最好是没有远程桌面的解决scheme。) 谢谢!

行为驱动的服务器开发?

我一直在寻找是否有任何BDD的服务器,这将是类似的黄瓜或Behat? 有些语法糖如: Feature: jre In order to use our monitoring software As a UNIX user I need to have JRE version at 8 Scenario: Given I am in the directory "/usr/local/bin" And I have a file named "java" When I run "java -version" Then I should get: """ java version "1.8.*" """

openvpn连接不转发所有stream量

我试图连接客户端到一个VPNnetworking没有openvpn转发所有的stream量到networking。 问题的关键是我想能够连接和沟通所有其他连接的VPN机器和他们的服务,但我希望我所有的常规stream量(HTTP等)离开,并通过我的默认路由/networking进入,就像它通常会没有连接到VPN。 这里是我的configuration和路线,如果他们帮助任何(所有与tun0相关的路由都被openvpn添加): user@machine:~# ip route 0.0.0.0/1 via 10.8.0.9 dev tun0 default via 192.168.0.1 dev wlan0 proto static 10.8.0.1 via 10.8.0.9 dev tun0 10.8.0.9 dev tun0 proto kernel scope link src 10.8.0.10 xx.xx.xx.xx via 192.168.0.1 dev wlan0 128.0.0.0/1 via 10.8.0.9 dev tun0 192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.187 192.168.80.0/24 dev wlan0-1 proto […]

DKIM – 单个主机 – 多个IP

试图找出在单个EC2上实施DKIM的最佳实践,该EC2将具有多个弹性IPS。 # /etc/opendkim.conf … Mode sv Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable SignatureAlgorithm rsa-sha256 … # /etc/opendkim/KeyTable default._domainkey.example.com example.com:hp-hv-1:/etc/opendkim/keys/default.private default._domainkey.example.com example.com:hp-hv-2:/etc/opendkim/keys/default.private # /etc/opendkim/SigningTable *@example.com default._domainkey.example.com 然后我有两个DNSlogging: hp-hv-1._domainkey.example.com TXT "v=DKIM1;k=rsa;p=default.txt_key_goes_here" hp-hv-2._domainkey.example.com TXT "v=DKIM1;k=rsa;p=default.txt_key_goes_here" 对于同一个EC2实例上的两个postfix实例,每个都有以下$ myhostname: # postfixmulti instance #1 myhostname = hp-hv-1 # postfixmulti instance #2 myhostname = hp-hv-2 两个postfix实例在同一个EC2实例上,所以它们都共享相同的default.private / default.txt私钥/公钥对,所以不需要向KeyTable和SigningTable添加更多的行。 […]

Linux OOM杀手禁用灾难

我有一个没有交换的Linux机器,其中vm.overcommit_memory=2和vm.overcommit_ratio=100设置。 但是这些设置似乎没有效果。 一些试图消耗大量内存的新启动进程仍然被OOM杀死,而不是被拒绝内存分配。 是因为在sysctl -w vm.overcommit_memory=2 vm.overcommit_ratio=100之前启动的进程sysctl -w vm.overcommit_memory=2 vm.overcommit_ratio=100 (例如,在启动时应用/etc/sysctl.conf之前)可能仍然能够访问其overcommitted内存,从而触发OOM杀手? 是否有可能(1)使用内核参数禁用内存过量使用,或(2)在运行时强制内核为所有进程分配所有过度使用的内存? 编辑:浏览相关的Documentation/和一些Linux源代码(git c6fa8e6de3) (1)似乎不太可能。