Articles of linux

Ubuntu服务器+ Samba + PAM + Apple OpenDirectory

由于各种原因,我们希望将我们的文件服务器从OS X Server 10.9迁移到在Ubuntu 14.04LTS上运行的真正的Samba实现。 我们已经安装了Ubuntu并运行了Samba,甚至还安装了PAM设置来对照我们的Apple OpenDirectory服务器对用户进行身份validation。 但是,让Samba以我们想要的方式validation用户是相当具有挑战性的。 看来我们有两个select。 选项1只是让Samba将其委托给已经正常运行的PAM子系统; 选项2是使用Samba对LDAP和Kerberos的内置支持。 在Ubuntu的开箱即用的configuration似乎赞成选项1,并且确实看起来像这将是最简单的设置来pipe理长期。 (scheme2需要更多的configuration,包括对苹果模式的修改,我的理解在实践中并不是一个好主意。) 所以,所有人都说,我打算试图让选项1工作,(几乎这样做)。 目前, 针对OD的PAMauthentication已经起作用。 我可以sshlogin作为系统OD用户整天的系统。 但是,不好的是用户在Samba将它们识别为UNIX用户之前必须先执行此操作。 换句话说,在用户至less通过SSH成功​​连接一次之前,Samba将不会识别他们的凭证。 此外,我不相信Samba会看到OD组,因为试图限制连接到基于组名的某些共享也不起作用。 一旦用户使用SSHlogin了一次(或者在尝试使用标准的本地用户帐户时),Samba会永远接受他们的名字和密码。 在此之前,它只是拒绝他们。 smb.conf文件包含以下相关条目: server role = standalone server obey pam restrictions = yes passdb backend = tdbsam unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* […]

始终保持socat活着

我有一个很好的社会运行,执行我的命令时提供的参数连接进来。 但是,我遇到的问题是套接字在EOF,并且下次连接进来时,该过程需要3秒钟才能恢复。 这个过程将会永远保持下去,所以我认为这是一个EOF,至less这是我的理解。 我的命令是: socat -v -s -d -d tcp-listen:2600,reuseaddr,fork exec:"/usr/bin/cec-client $CEC_CLIENT_ARGS" 相关的日志行: 2014/12/31 22:41:04 socat[4746] N socket 1 (fd 4) is at EOF 2014/12/31 22:41:05 socat[4746] N exiting with status 0 我试图两头都不ignoreeof ,没有任何效果。 我也尝试设置超时,包括-t和-T

如果用户login和ssh密码被禁用,rbash是安全的吗?

我有一个服务器,我想用作远程和本地端口转发的SSH网关。 我不希望任意命令能够被执行,只有我的脚本。 我一直在阅读如何限制贝壳容易突破,但是如果: 用户没有密码(所以他/他不能login到一个shell) SSH密码被禁用(所以一个密钥是必需的) PATH =〜/ usr / bin(仅限于此,不能执行其他地方的文件) 〜/ .ssh / authorized_keys中的条目前缀为: command="cmd_handler",no-pty,permitopen="127.0.0.1:*",permitopen="localhost:*",no-agent-forwarding,no-X11-forwarding “cmd_handler”是一个rbash shell脚本,它可以根据从stdin传递到ssh的内容执行一些不同的具体操作。 它存在于〜/ usr / bin文件夹以及它需要的可执行文件的符号链接,具体来说就是fold , head , nc , sed , ssh-keygen , tee , tr 。 〜/ usr / bin是PATH中唯一的文件夹,所以这些是唯一可用的命令。 对于需要访问的任何文件或文件夹(包括〜/ usr / bin文件夹),用户是组的所有者,具有只读访问权限。 用户不是拥有者,并且对〜/ .ssh和〜/ .ssh / authorized / keys(这是必需的)以外的文件和文件夹没有写权限。 我看不出有什么办法让系统变得脆弱,因为远程计算机可以执行的单个命令是“cmd_handler”。 而且,如果远程用户实际上可以执行另一个命令,那么这个命令并不多。 tee , sed和ssh-keygen创build了〜/ .ssh […]

KVM中的混杂模式

我有基于Openstack Icehouse版本的云系统。 现在我想在现有的云中testingOpenstack(Juno)的新版本。 所有的主机和客人使用Ubuntu 14.04作为他们的操作系统。 KVM是我正在使用的pipe理程序。 所以我在云上创build了虚拟机,并在其上安装了Openstack Juno组件。 但是我在这些虚拟机上的networking连接有问题。 Openstack安装指南说: 如果您将OpenStack节点构build为虚拟机,则必须将pipe理程序configuration为允许外部networking上的混杂模式。 但是它并没有说明这是如何完成的。 我也不能通过谷歌searchfind这些信息。 我已经尝试了很多事情,如使用命令在ifconfig eth0 promisc但是没有任何工作,在各种接口上启用混杂模式。 那么我怎样才能在我的pipe理程序上启用混杂模式呢? 编辑:当使用ifconfig我看到我的接口处于状态UP BROADCAST RUNNING PROMISC 。 此外,我已经使用类似的安装在物理主机上安装,并没有任何问题。

如何让Supervisord读取bash环境variables

我使用Supervisord运行我的Java应用程序,这需要一些环境variables的configuration。 我在/ etc / environment中设置了环境variables export MANAGER_URL="http://192.xxx.xxx.xxx:8080/manager/" export MANAGER_URL2="http://192.xxx.xxx.yyy:8081/manager/" 我的主pipe/ conf.d / myjavaapp.conf如下所示: [supervisord] nodaemon=false logfile_maxbytes=100MB logfile_backups=0 [program:java-app] command=/usr/bin/java -jar /home/pi/deploy/java-app.jar stdout_logfile_maxbytes=200MB stdout_logfile_backups=2 stderr_logfile_maxbytes=100MB stderr_logfile_backups=0 autostart=true 我知道我可以设置[java-app]部分的环境variables为: environment=MANAGER_URL="url1",MANAGER_URL2="url2" 但是这对我不起作用,因为我需要使用Puppet清单来更新variables值,Puppet清单可以更新bash环境variables,而不是更新supervisor子stream程环境variables。 我尝试使用以下命令访问shell环境variables: environment=MANAGER_URL=%(MANAGER_URL)s,MANAGER_URL2=%(MANAGER_URL2)s 但是这导致了一个错误,说明string不能被扩展。 有没有我可以读取我的supervisor.conf中的bash环境variables? 额外信息: 我正在使用raspbian Supervisord是在systemd启动时使用/etc/init.d/中的脚本运行的 Puppet代理也由Supervisor运行,因此无法重新启动Supervisor服务

exception – Linux可执行文件被随机破坏

我正在面对一个奇怪的问题,avconv是一个处理video部分libav-tools包的工具。 我在本地的Ubuntu服务器14.04.1 LTS。 会发生什么是avconv工具被损坏,基本上/ usr / bin / avconv正在被修改的东西。 这是命令尚未损坏时文件命令给出的输出 avconv: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=66393d9b38a75978d8cd1838e7b163dda04df7b9, stripped 当它损坏时,这是文件命令的输出: avconv-corrupted-copy-1: ELF 64-bit avconv-corrupted-copy-2: ELF 64-bit LSB no file type, SPARC 有一个使用avconv命令的beanstalkd worker。 有时我可以在bash历史中看到bash fork炸弹( :(){ :|: & };: 。 它看起来像这个VM是完全妥协。 你有什么build议如何理解这个问题的原因? 更新11-02-2015 :现在beanstalkd发生了同样的事情: /usr/bin/beanstalkd: […]

Linux服务器虚拟以太网接口停止响应arp请求

我希望之前有人遇到过这个问题,因为这会让我发疯。 我有2500个Linuxembedded式Linux服务器。 我们部分使用这些服务器来充当专用networking上其他设备的网关。 该configuration包含一系列具有DNAT和SNAT规则的虚拟接口(不是vlans),以将请求传递到所述设备。 多年来,这工作得很好。 上周我们增加了大约25个虚拟接口和约50个iptables规则。 在这一点上,我们遇到了一个我们没有想到的问题。 我们的embedded式Linux服务器随机停止应答对主要以太网接口eth0configuration的IP虚拟IP地址的请求。 ARP请求未被回答,例如: tcpdump -vvvnn arp — *xxx23 is the virtual IP address and xxx16 is the router the request came from* tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 68 bytes 16:15:10.404513 arp who-has xxx23 tell xxx16 16:15:12.403592 arp who-has xxx23 tell xxx16 16:15:14.407617 arp who-has xxx23 […]

调整Amazon Linux工作层

我有一个使用PHP进程控制(pcntl)函数并行发送多个请求到SNS服务的工作层。 我的问题是如何最好地调整MPM_PREFORK指令以获得最佳的开箱即用,以及如何计算我可以使用可用资源运行的最并发的PHP进程。 我正在运行一个T2媒体,这是这样specid: Model |vCPU | CPU Credits / hour | Mem (GiB) | Storage t2.medium | 2 | 24 | 4 | EBS-Only 此外,如果有人可以阐明如何使用/计入CPU计算,我将非常感激。 我目前在这些post中应用了这些思想。 tune apache performance using mpm prefork module http://fuscata.com/kb/set-maxclients-apache-prefork 任何帮助非常感谢

跨NUMA系统移动进程

我在有数十个套接字的大型NUMA系统上运行了许多multithreading进程。 跨不同节点的内存访问非常缓慢,所以我将每个进程限制在一个套接字中,让它使用完整的CPU。 对于这个位置,我使用numactl及其–localalloc选项。 有时我的进程放置脚本意外地将两个进程放在一个节点上。 我可以使用任务集等将进程从一个节点移动到另一个节点,但是分配的内存将会滞后。 因为我知道可以透明地在NUMA节点之间移动内存页面,所以我想知道是否有任何命令行工具可以执行此操作?

在Azure Linux VM上移动主目录

我仍然遇到将我的主目录移动到Azure上的CentOS虚拟机上的新磁盘的问题。 创build时,服务器configuration为使用SSH密钥进行身份validation,并设置“无密码”选项。 添加新磁盘后,创build分区,格式化磁盘,装入磁盘,移动我的主目录,并更新fstab,直到重新启动。 重新启动后,我无法使用SSH密钥对服务器进行身份validation。 尽pipe我无法通过SSH进行身份validation,但是我可以使用Azure控制台中的CustomLinuxScript扩展来执行脚本,以便我能够看到所有磁盘都已正确安装,而我的公钥在/home/myUser/.ssh/中正确authorized_keys,并且所有文件的权限都设置正确。 我对是否有其他人遇到这个问题很感兴趣,或者如果有人知道我在这里做错了什么。