Articles of linux

限制切换到root账户的并发用户数量?

这是Ubuntu 14.04和Centos 7。 我需要限制以root身份运行的用户数量。 即在CLI上以root身份login。 基本上,我一次只需要一个用户就可以以root身份运行命令。 这里的目的是审计。 我研究了/etc/security/limits.conf中的设置限制,但是pam_limits.so模块似乎只会影响login。 或者loginshell。 不确定。 但是,无论具体情况如何,它确实可以防止用户多次通过SSH连接到一个盒子,但不会阻止多个用户通过“sudo su”成为root用户。 因此,设置limits.conf仍然可以允许多个用户同时以root身份login。 这里是limits.conf行我试图限制这个: root hard maxlogins 1 接下来,我尝试限制@admins组中的用户。 我认为,这些用户是唯一允许sudo su的用户(根据我们拥有的自定义sudo规则)。 @admins hard maxlogins 1 这似乎做我想要的,但似乎笨重/错误。 称之为一种直觉 – 我并不完全明白这个问题。 最后,“为什么?” 为什么我有这个要求? 我们正试图实施控制措施,以满足PCI-DSS 3.1要求8.5“不要使用组,共享或通用的ID,密码或其他身份validation方法” – 强调“共享”。 在Windows环境中,您只需向用户授予执行任何操作的权限,而且没有人共享主pipe理员帐户。 Linux环境的devise使得对于某些情况,你真的想以root身份login。 在Linux环境中必须有PCI兼容的方式来解决这个问题。

在initramfs阶段,mdadm软件RAID在启动时未汇编

首先,我更愿意提到我已经find并阅读了这个 。 我使用标准的3.16内核运行Debian Jessie。 我已经手动定义了一个RAID1arrays。 但在启动时不会自动组装。 因此,在尝试挂载/ etc / fstab中描述的FS之后,systemd会回退到某些降级的shell。 如果fstab中的那一行被注释掉了,那么启动过程将结束,但RAIDarrays不可用。 手动组装不会引发任何错误。 然后安装FS很简单。 手动组装时,数组看起来像这样: root@tinas:~# cat /proc/mdstat Personalities : [raid1] md0 : active (auto-read-only) raid1 sdc1[0] sdd1[1] 1953382464 blocks super 1.2 [2/2] [UU] bitmap: 0/15 pages [0KB], 65536KB chunk unused devices: <none> 这里是blkid命令的摘录: /dev/sdd1: UUID="c8c2cb23-fbd2-4aae-3e78-d9262f9e425b" UUID_SUB="8647a005-6569-c76f-93ee-6d4fedd700c3" LABEL="tinas:0" TYPE="linux_raid_member" PARTUUID="81b1bbfe-fad7-4fd2-8b73-554f13fbb26b" /dev/sdc1: UUID="c8c2cb23-fbd2-4aae-3e78-d9262f9e425b" UUID_SUB="ee9c2905-0ce7-2910-2fed-316ba20ec3a9" LABEL="tinas:0" TYPE="linux_raid_member" PARTUUID="11d681e5-9021-42c0-a858-f645c8c52708" […]

在rsync中,如何排除所有匹配模式的目录?

在一个rsync我试图排除与模式匹配的子目录。 但是,我无法让它工作。 我已经跟随在这里和谷歌上find的几个例子。 但是,我没有得到正确的结果。 这里是我的命令的选项: -avh –exclude 'branch*' –stats –delete –link-dest=$LNK 我的源代码目录结构是 /root /branch1 /branch2 /branch3 /other /stillAnother /etc 这是备份脚本的一部分。 $ LNK是指向前一天的rsync目标的链接。 我不想要/ root / branch1,/ root / branch2,/ root / branch3。 或者他们的内容被同步。 但是,他们是。 这里是我已经尝试过的排除位: –exclude=branch* –exclude='branch*' –exclude '/branch*' –exclude /branch* 感谢您的任何帮助/build议。 编辑 – 解决“可能重复”的标志 这个问题是关于一个已知的目录列表。 我需要排除模式后面的任何目录,即使这些目录还不存在。 即从我的例子,其他目录名为/branch*可能会被添加。 我需要使我的脚本具有前瞻性,并避免在添加与模式匹配的目录时编辑脚本,因为这些目录可能是临时的。

如何抑制从故障转移数据中心启动的心跳资源?

每个数据中心都有一对CentOS Linux服务器。 他们在每个数据中心都有故障切换,由心跳和DRBDpipe理(我知道这些都是过时的工具,但是它们是稳定的,所以不需要改变它们)。 它们也具有数据中心交换的能力,使东部数据中心处于活动状态,而西部变为被动状态。 但这是一个手动工程过程,没关系。 西数据中心目前是主动数据中心,东数据中心是被动的。 serverA.west <-> serverB.west <———–> serverA.east <-> serverB.east ACTIVE DATA CENTER PASSIVE DATA CENTER 服务器可以运行mysqld和一个Java应用程序。 此服务器上的Java应用程序只应在活动数据中心(即serverA.west)的主要主机上运行。 如果Java应用程序的另一个实例在辅助主机(serverB.west)上启动,或者在被动数据中心的任一主机上启动,则存在裂脑问题的风险。 今天serverA.east重新启动,导致心跳翻转到serverB.east。 心跳然后忠实地启动了serverB.east上的Java应用程序,我们不希望发生这种情况。 Heartbeat也在serverB.east上启动了mysqld,这是正确的,因为MySQL复制应该继续下去,连续复制来自西部数据中心的变化,以便东部DC在需要时可以接pipe。 /etc/ha.d/haresources将mysqld和Java应用程序的/etc/init.d脚本命名为要启动的资源。 我们希望允许心跳来pipe理被动数据中心中的A / B对。 它应该在故障转移时启动mysqld,但不启动Java应用程序。 但是,如果东数据中心是活动的,那么在心跳自动故障转移期间,心跳应该启动Java应用程序。 什么是实施这个好方法? 我所希望的是,当我们将活动数据中心从西方切换到东方时,需要采取一个步骤进行configuration。 理想情况下,它应该是防错的,也就是说,应该确保只有一个数据中心被configuration为活动数据中心。

不同的linux页面caching行为为服务器做同样的工作

我有两组服务器(128位内存),它们在configuration时会有区别,在运行完全相同的守护进程(elasticsearch)时performance得非常不同。 我正在使用elasticsearch进行全文search,而不是日志存储,所以这个基本上只需要很less的写操作(小于1MB / s)的读操作。 这个守护进程mmap将大约350GB的完整数据集放入其虚拟内存中,然后访问它的某些部分来处理请求。 这些服务器没有configuration交换空间。 问题是一组服务器运行良好,每秒发出大约50个重大故障,平均需要10MB / s的磁盘IO来满足这个需求。 性能不佳的服务器每秒可以看到500个重大故障,平均需要200MB / s的磁盘来满足这个要求。 磁盘IO的增加导致较差的p95响应延迟和偶然的过载,因为它达到约550MB / s的磁盘限制。 他们都坐在同一个负载平衡器后面,并且是同一个集群的一部分。 我可以看到,如果一台服务器的性能不好,可能是负载的差异,但是与16台服务器的性能差别很大,20台服务器的性能不错,在不同的时间内,它们被淘汰+供应,内核/configuration级别必须引起问题。 为了解决这个问题,我该如何让这些performance不佳的服务器像那些performance良好的服务器一样行事? debugging工作应该集中在哪里? 下面是我收集的一些数据,用来查看系统在三种状态中的每种状态下的sar和page-types工具的function。 软件: – debian jessie – linux 4.9.25 – elasticsearch 5.3.2 – openjdk 1.8.0_141 首先从一个performance良好的服务器(来自sar -B )的一些页面错误数据: 07:55:01 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff 08:05:01 PM 3105.89 811.60 2084.40 48.16 3385.30 0.00 […]

跨不同子网的故障切换

我们已经使用DRBD和Heartbeat在Linux上实现了一个故障转移function,并且它工作的很好,现在我们有一个需求的变化,说明节点复制在不同的子网中,我们将不会有一个共同的虚拟IP,当我们使用机器同一个子网。 当我们有不同子网中的节点时,最好的故障切换方式是什么?

将并发login限制在LDAP Linuxnetworking上的多个桌面上?

我怎样才能限制一个用户帐户同时login到一个私有的,所有Linux LDAPauthentication的networking中的台式机的数量? 以下是预防的scheme:具有有效帐户的用户在同一个帐户上login到10个不同的桌面,以便他可以与他的9个朋友玩游戏; 这些朋友都没有在networking上有效的帐户。 服务器是带OpenLDAP的RHEL 5,桌面是Fedora 11(可用时是CentOS 5.4)。 所有桌面login都通过服务器上的LDAP。 注意:在一台机器上限制并发login可以通过/etc/security/limits.conf maxlogins来完成,但是在这种情况下这是没用的。 另外请注意:在具有Active Directory的Windowsnetworking上,UserLock和LimitLogin等软件可以完成此操作; 但是这个networking没有Windows,也没有AD服务器。 编辑:我知道LDAP本身不能做到这一点; 如果有一个成熟的,经过充分testing的附加产品,类似于上述基于Windows的产品,那么这将是一个好消息。 我甚至会考虑非免费 /非自由的解决scheme。

挂载一个16k块的ext3分区?

我们正试图从Netgear ReadyNas Duo格式的驱动器中恢复数据。 我们把它放在一个linux的盒子里,发现它的格式为ext3,大小为16k。 将它安装在Linux机器上会返回以下错误。 EXT3-fs: bad blocksize 16384. 我们一直在寻找一个Linux Live CD,它默认支持16k块大小,并且不成功。 除了在内核中编译这个特性之外,还有更简单的方法吗?

iptables – 好的,现在**我正在做对吗?

这是后面的问题 ,我问我的iptablesconfiguration是否正确。 CentOS 5.3系统。 预期结果:阻止除ping,ssh,Apache和SSL之外的所有内容。 基于异警惕的build议和对这个问题的其他答复(谢谢你们),我创build了这个脚本: # Establish a clean slate iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F # Flush all rules iptables -X # Delete all chains # Disable routing. Drop packets if they reach the end of the chain. iptables -P FORWARD DROP # Drop all […]

使脚本成为一个Linux服务

– 编辑,还有一些问题 – OK我的脚本使用一个循环来等待networking连接。 所以当我运行它时,即使是守护进程,它也会坐在那里,不会把我带回壳。 我尝试了su -c "/home/webreports/report-list &" USER但它试图以用户身份运行,即使我在引号中,我甚至试过单引号。 – 原始 – 我做了一个脚本(还有待testing)作为服务运行一个bash脚本。 我有两个问题。 1)我如何获得它作为一个特定的用户运行? 我们使用的软件不能以根用户身份运行,如果它真的发生了可怕的错误(可怕的软件,我们可悲的坚持)。 那么我如何让它运行服务作为用户“JOEBOB”可以说。 2)我只是把脚本文件放到“/etc/rc5.d”中才能使用“service report-listen start”? —脚本 – #!/bin/sh # # myservice This shell script takes care of starting and stopping # the /home/webreports/report-listen # # Source function library . /etc/rc.d/init.d/functions # Do preliminary checks here, if any #### START […]