Unix & Linux

Linux,FreeBSD和其他类似Un * x的操作系统用户的问答

4
保护服务器安全的书籍/指南
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我有一个要构建和启动的网站想法,并且正在考虑使用小型VPS进行托管(我喜欢Linode的价格,并且似乎广受欢迎)。我很破产,所以我买不起托管服务器。 我下载了Ubuntu Lucid Server并将其运行在VirtualBox中,以帮助我学习并近似于最终的生产服务器。我致力于学习,但是我很害怕自己会错过一些愚蠢的事情并受到影响。因此,我想了解任何解释LAMP服务器安全要点的优秀指南/书籍。 我已经研究了Linode和Slicehost各自的教程中的基本内容,但是我想尽可能地做好准备。该站点尚未编写,我很可能会首先作为试运行部署到共享主机上,因此我确实有时间至少学习一些基础知识。 我知道要使所有内容保持最新,将iptables配置为仅允许我需要的漏洞(对于ssh / scp / sftp,TCP端口22似乎只是这样-为了(非常次要)安全性,我将从默认端口更改它通过模糊不清的奖金-和80表示http)-尽管我对某些教程感到困惑,因为它们阻止了ICMP,因为我不知道为什么我不想响应ping-并且仅安装需要/删除的软件不需要
13 security 


6
保持日志文件大小固定而不进行logrotate
有什么方法可以保持日志文件的文件大小固定,而无需通过新的空文件旋转并删除(或归档)旧文件。例如,如果我将日志文件的最大大小设置为1MB,则在文件大小增加到该限制之后,它将被自动钳制,然后在“ tail”上添加文本,并弹出最旧的文本部分以保持文件大小为1MB 。
13 files  logs  size  logrotate 


8
在X中录制屏幕
如何在一定时间内在屏幕上记录所有活动?我知道类似的工具xwd可以捕获静止图像。可以扩展录制视频吗?我宁愿不使用任何精美的debian工具或ImageMagick实用程序

1
如何保护bash功能不被覆盖?
在bash外壳中,我们可以f使用 f(){ echo Hello; } 然后使用以下命令重新声明/覆盖它,没有任何错误或警告消息 f(){ echo Bye; } 我相信,有一种方法可以防止功能被这种方式覆盖。


1
我对系统“ iowait”的基本假设不成立
我的基本假设是,当进程的唯一限制因素是磁盘和CPU时,总的系统“ iowait” + CPU使用率应至少等于一个逻辑CPU的100%。(在其他情况下,这将不成立。例如,使用来下载文件时wget,网络通常是限制因素)。 一个简单的测试违反了这一假设。这是预期的吗?如果可以预期,是否有一些条件可以期望我的假设成立? 这里有一些有关“ iowait”的背景:CPU如何知道有IO待处理? 这里的答案引用了违反直觉的想法,即累积的iowait“在某些情况下可能会减少”。我想知道我的简单测试是否会触发这种无证的情况? 更新:请跳到答案。 答案比我最初使用的答案更简单。我保留了下面的原始问题。原始问题可能会显示一些其他详细信息。 原始问题 在简短测试中,我用于dd请求内核生成随机字节,并将其写入文件。我在dd内部运行命令perf stat,只是为了计算内核内部花费的CPU时间。我还在内部运行它perf trace -s,以报告在内部花费的时间write()。同时,我vmstat 5在另一个终端上运行,以查看系统“ iowait”。 我希望至少将整个CPU视为“非空闲”状态,即100%的时间它正在运行或已暂停但正在等待IO(“ iowait”状态)。不是。 (此外,我期望看到“ iowait”时间大致与在write()中花费的时间相匹配。但是似乎没有这样做。) 详细结果和测试环境如下所示。还显示了替代测试,我的假设成立了。注意:有必要在perf stat内部运行perf trace,而不是相反。在此进行详细说明:运行“ perf trace-s”时,“ perf stat”(和“ time”!)显示的结果不正确吗? 关于“ iowait”的背景信息 以下是手册sar页中的定义: %iowait: 在系统有未完成的磁盘I / O请求的过程中,一个或多个CPU空闲的时间百分比。 因此,%iowait意味着从CPU的角度来看,没有可运行的任务,但是至少有一个I / O正在运行。iowait只是空闲时间的一种形式,无法安排任何时间。该值在指示性能问题上可能有用也可能没有用,但是它确实告诉用户系统处于空闲状态,并且可能需要进行更多工作。 https://support.hpe.com/hpsc/doc/public/display?docId=c02783994 还有更长的文章:了解I / O等待(或为什么可以选择0%Idle)。这说明了如何从内核代码清楚地看到定义。代码有所更改,但思路仍然很明确: /* * Account for idle time. * …
13 linux 

3
正确的正则表达式在grep中不起作用
我有这个正则表达式: (?<=prefix).*$ 它返回字符串“ prefix”之后的任何字符,并且在任何在线正则表达式引擎(例如https://regex101.com)上都能正常工作。问题是当我在bash中使用该正则表达式时: grep '(?<=prefix).*$' <<< prefixSTRING 它不匹配任何东西。为什么该正则表达式不适用于grep?

2
/ dev / console是做什么用的?
从这个答案到Linux:/ dev / console,/ dev / tty和/ dev / tty0之间的区别 从 文档中: /dev/tty Current TTY device /dev/console System console /dev/tty0 Current virtual console 在过去/dev/console,系统管理员控制台是过去的。TTY是用户连接到服务器的串行设备。现在 /dev/console和/dev/tty0代表当前显示,通常是相同的。您可以通过添加覆盖它,例如 console=ttyS0到grub.conf。在那之后你/dev/tty0是一个显示器,/dev/console是/dev/ttyS0。 通过“ 系统控制台 ”,/dev/console看起来像是文本物理终端的设备文件,就像/dev/tty{1..63}虚拟控制台的设备文件一样。 在我看来,“ /dev/console和/dev/tty0表示当前显示的内容通常是相同的” /dev/console也可以是虚拟控制台的设备文件。/dev/console似乎/dev/tty0比like /dev/tty{1..63}(/dev/tty0是当前处于活动状态的虚拟控制台,可以是任何一个/dev/tty{1..63})。 什么/dev/console啊 这有什么用途? 不/dev/console玩了Linux内核相同作用/dev/tty的过程?(/dev/tty是进程的进程会话的控制终端,可以是pts,/dev/ttyn其中n1到63,或者更大?) 另一个答复提到: 内核文档/dev/console将字符设备指定为5:1。打开此字符设备将打开“主”控制台,该控制台是控制台列表中的最后一个tty。 难道“控制台列表”是指所有console=的在启动选项? “ /dev/console作为5:1的字符设备”,是否表示/dev/console物理文本终端(即系统控制台)的设备文件?(但同样,我在上面引用的第一条回答/dev/console可能与/dev/tty0不是物理文本终端,而是虚拟控制台的相同) 谢谢。
13 linux  ubuntu  tty  console  pts 


2
Netcat-如何使用IPv6地址在TCP端口上侦听?
我正在使用netcat(v1.10-41.1)的最新版本,该版本似乎没有用于IPv6地址的选项(与-6的旧版本中的一样nc)。 如果输入nc -lvnp 2222并使用来检查监听端口netstat -punta,则服务器似乎2222仅在监听IPv4地址的端口上: tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 2839/nc tcp6无效,例如我的apache2服务器: tcp6 0 0 :::80 :::* LISTEN -
13 linux  netcat 

2
在Mutt中使用替代文件选择器
在狗,是有可能使用一个文件浏览器,如vifm或游侠(可能在TMUX分),而不是默认的文件浏览器选择一个文件附加到电子邮件?
13 mutt 

1
bash扩展的glob-匹配不带前缀的文件
我正在尝试为fail2ban监狱匹配文件名-所以我只需要使用文件名遍历-而不是正则表达式或bash脚本。 我的/var/log/apache2目录包含以下文件: example.com.error.log db.example.com.error.log app1.example.com.error.log app2.example.com.error.log 我正在尝试创建一个glob来匹配以结尾的所有文件,.error.log 除了 db.example.error.log -这可能吗? 我已经尝试过了,!(db)*.error.log但这仍然匹配db.example.com.error.log。我猜的!()是没有字符匹配,从而允许*从文件名的开头进行匹配。 注意:appX添加新的日志文件时,我不需要扩展glob ,因此无法使用@()当前已知的非db文件名列表。 (背景:我想创建一个过滤器,禁止任何人在db.example.com 以外的任何域上请求任何phpMyAdmin URL )

4
为什么systemd-resolved不使用我的本地DNS服务器?
我正在使用本地BIND9服务器托管一些本地dns记录。尝试挖掘本地域名时,如果我未明确告诉dig使用我的本地BIND9服务器,则找不到该域名。 user@heimdal:~$ dig +short heimdal.lan.se user@heimdal:~$ dig +short @192.168.1.7 heimdal.lan.se 192.168.1.2 使用Ubuntu 17.04和systemd-resolved。这是我的/ etc / resolved的内容 # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN # 127.0.0.53 is the systemd-resolved stub resolver. # run "systemd-resolve …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.