我正在阅读这个howto,并且有这样的东西:
我们可以允许已建立的会话接收流量:
Run Code Online (Sandbox Code Playgroud)$ sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT上述规则在 ESTABLISHED,RELATED 中的逗号两侧没有空格
如果上面的行不起作用,您可能在一个阉割的 VPS 上,其提供商没有提供扩展,在这种情况下,可以使用劣质版本作为最后的手段:
Run Code Online (Sandbox Code Playgroud)$ sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
是否有之间的工作一个显著差异-m conntrack --ctstate和-m state --state?他们说一个可能行不通,但他们没有说为什么。为什么我应该更喜欢一个?
我这里有一个非常奇怪的情况。我的电脑工作正常,至少在大多数情况下,但有一件事情我无法处理。当我尝试从我的 Pendrive 复制文件时,一切正常——我得到了 16-19M/s ,它运行得很好。但是当我尝试将某些内容复制到同一个 Pendrive 时,我的 PC 死机了。鼠标指针停止移动一两秒钟,然后移动一点,然后再次停止。例如,在 Amarok 中播放某些东西时,声音就像机关枪。速度从500K/s跃升到15M/s,平均8M/s。仅当我将某些内容复制到 Pendrive 时才会发生这种情况。当复制过程完成后,一切恢复正常。
我尝试了一切——其他的随身碟、前面板上的不同 USB 端口或后面的那些端口,我什至更改了主板(前面板)上的 USB 引脚,但无论我把 USB 记忆棒放在哪里,它总是一样的。我尝试了不同的文件系统 - fat32, ext4. 我的笔记本电脑上的 Windows 设备没有问题。它必须是我的 PC 或系统中的某些东西。我不知道该找什么。我在独立的 Openbox 中使用 Debian 测试。我的电脑有点旧——Pentium D 3GHz、1GiB 内存、1.5TB WD Green 磁盘。如果您有什么可以帮助我解决这个问题的东西,我会很高兴听到这个消息。
我不知道我还应该提供什么信息,但是如果您需要什么,尽管问,我会尽快更新这篇文章。
我试图在 ubuntu 13.04 live cd 上重现这个问题。我安装了我的加密分区 + 加密交换并将我的 Pendrive 连接到 USB 端口。接下来我尝试启动一些应用程序,现在我有大约 820MiB 的 RAM 和大约 400MiB 的 SWAP。复制没有问题,根本没有冻结,一切都应该如此。所以,看起来是系统的故障,但究竟在哪里?什么会导致这种奇怪的行为?
archlinux wiki 上有一个 iptables 规则的例子:
# Generated by iptables-save v1.4.18 on Sun Mar 17 14:21:12 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT …Run Code Online (Sandbox Code Playgroud) 我遇到了以下配置文件:
# Generated by iptables-save v1.3.1 on Sun Apr 23 06:19:53 2006
*filter
:INPUT ACCEPT [368:102354]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [92952:20764374]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j DROP
COMMIT
# …Run Code Online (Sandbox Code Playgroud) 我必须用我自己的用户权限启动一个应用程序,但组必须不同。所以,而不是:
$ ps -eo "user,group,args" | grep qbittorrent
morfik morfik /usr/bin/qbittorrent
Run Code Online (Sandbox Code Playgroud)
例如,它应该是:
$ ps -eo "user,group,args" | grep qbittorrent
morfik p2p /usr/bin/qbittorrent
Run Code Online (Sandbox Code Playgroud)
它也必须在不询问密码的情况下完成。有没有办法实现这一目标?
我img通过以下命令创建了一个文件:
dd if=/dev/zero bs=2M count=200 > binary.img
Run Code Online (Sandbox Code Playgroud)
它只是一个带零的文件,但我可以使用它fdisk并创建一个分区表:
# fdisk binary.img
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x51707f21.
Command (m for help): p
Disk binary.img: 400 MiB, 419430400 bytes, 819200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x51707f21
Run Code Online (Sandbox Code Playgroud)
并且,让我们说,一个分区:
Command (m for …Run Code Online (Sandbox Code Playgroud) 我写这个规则是为了测试目的:
SUBSYSTEMS=="usb", ATTRS{manufacturer}=="Kingston", ATTRS{serial}=="001CC0EC34A2BB318709004B", ATTRS{idVendor}=="0951", ATTRS{idProduct}=="1642", SYMLINK+="pen", NAME="pendrak"
Run Code Online (Sandbox Code Playgroud)
基于以下信息:
# udevadm info --name=/dev/sdb --attribute-walk
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5:1.0/host2/target2:0:0/2:0:0:0/block/sdb':
KERNEL=="sdb"
SUBSYSTEM=="block"
DRIVER==""
ATTR{ro}=="0"
ATTR{size}=="30299520"
ATTR{stat}==" 419 …Run Code Online (Sandbox Code Playgroud) 我有以下网络配置:
# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:e0:1c:73:02:09
inet addr:10.1.4.41 Bcast:10.1.255.255 Mask:255.255.0.0
inet6 addr: fe80::2e0:4cff:fe75:309/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:858600 errors:0 dropped:0 overruns:0 frame:0
TX packets:1069549 errors:0 dropped:0 overruns:5 carrier:0
collisions:0 txqueuelen:1000
RX bytes:142871181 (136.2 MiB) TX bytes:717982640 (684.7 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:37952 errors:0 dropped:0 overruns:0 frame:0
TX packets:37952 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3396918 (3.2 MiB) TX …Run Code Online (Sandbox Code Playgroud) 如您所见,例如这里,作为 systemd 一部分的 logind 可以为用户会话设置对某些设备的权限。还有一个视频展示了这种行为在实践中是如何运作的。简而言之,如果你开始,比如说,amarok,并且你播放一些歌曲,你会听到声音,直到你切换到另一个用户或 TTY,在那里你只有登录提示。那是因为活动会话变为非活动状态。
我知道您可以简单地将一个用户(或多个用户)添加到特定组,在这种情况下为“音频”,这将“解决”这个问题,但我想知道是否有其他解决方案。我真正想要的是为进程设置一些权限,以便它可以一直使用声卡,即使所有用户都锁定了他们的会话。
那可能吗?我问是因为我经常听音乐,而且我并不需要我的显示器大部分时间都在开着,所以我只是锁定了屏幕。但是当我锁定屏幕时,活动会话变为非活动状态并且 amarok 停止播放。是的,屏幕应该被锁定,而不仅仅是关闭。
编辑:
我认为我使用哪个发行版并不重要,因为如果板上有 systemd,那将是完全相同的问题。无论如何,我使用的是 debian sid,但一些软件包如 systemd、udev(和一些依赖项)来自实验分支,现在是 219-9 版本。
我试图理解该/etc/rsyslog.conf文件,但我遗漏了一些东西。例如,这是文件的一部分:
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
user.* -/var/log/user.log
Run Code Online (Sandbox Code Playgroud)
根据这个页面:
该工具是以下关键字之一:auth、authpriv、cron、daemon、kern、lpr、mail、mark、news、security(与 auth 相同)、syslog、user、uucp 和 local0 到 local7。
优先级是以下关键字之一,按升序排列:debug,info, notice,warning,warn(同warning),err,error(同err)crit,alert,emerg,panic(同emerg)。关键字 error、warn 和 panic 已被弃用,不应再使用。优先级定义了消息的严重性。
星号(“*”)代表所有设施或所有优先级,具体取决于它的使用位置(句点之前或之后)。关键字 none 代表没有给定设施的优先级。
您可以使用逗号 (",") 运算符在一个语句中指定多个具有相同优先级模式的设施。您可以指定任意数量的设施。请记住,仅采用此类语句中的设施部分,将跳过优先级部分。
可以使用分号 (";") 分隔符为单个操作指定多个选择器。请记住,选择器字段中的每个选择器都能够覆盖前面的选择器。使用此行为,您可以从模式中排除某些优先级。
所以,这是很容易理解的,但是右边的文件路径呢?它可以只是一条路径,也可以是它之前|或-之前的路径(或者甚至是其他东西)。三者有什么区别?