From Wireshark to Linux Capabilities

Tcpdump 和 Wireshark 是抓包必备的程序,但是由于需要截取网络数据包,所以在 Linux 下必须以 root 的身份来运行。每次都 sudo 执行不方便也并不安全(对 Wireshark 来说捉包只是一小部分功能),解决方案当然有,在寻找的过程中我了解到了 Capabilities 的冰山一角。 TL;DR 可以通过设置 Setuid 以 root 身份执行,但如此以来赋予了过高的权限(也没有必要)。 Linux 下用 Capabilities 把系统权限划分成多个条目,以此实现细粒度地提升程序的执行能力。 Setuid 先盗一张图复习下 Linux File Permission 的基础知识: 除了 rwx 之外还存在三种特殊类型,即是为了在更高权限下运行程序: Setuid: 程序的运行者不再是执行者,而是变成文件的所有者 Setgid: 程序的运行群组变成了文件的所在群组,如果给目录设置,那么其中新建的文件所有群组会变成目录的群组而不是执行者的群组 Sticky bit: 针对目录设置,目录下的文件只有所有者和 root 能够重命名、移动和删除 在 Linux 中 sudo 是 Setuid 最好的例子,而 crontab 和 tmp/ 分别是 Setgid 和 Sticky bit 的典型应用。 在命令行中测试: # Setuid ➜ ~ umask -S u=rwx,g=rx,o=rx ➜ ~ umask # 掩码是 022,所以默认文件的权限是 666-022=644,而目录则是 777-022=755 022 ➜ ~ touch foo....

11-21 · 3 min

Use setxkbmap for Keyboard Mapping

这是一篇使用(过) Linux Xorg without any DE 以及笔记本外接键盘的人才能理解其中辛酸苦痛的抒情科普文。 TL;DR 外接键盘不要开蓝牙,直接插线,除非你乐意折腾 使用 setxkbmap 而不是 xmodmap 来做 key remapping 不要用 Xorg The Irrational Part 上午十点零一分,端坐到显示器前,深呼吸两次。 Ok,回滚内核版本之后 Screen Lock 卡死的问题果然消失了,我们继续。 进入系统,先看一下昨晚的日志吧: ... 需求目标: 1. 交换 L-Ctrl & Caps-Lock 2. 交换 Win & Alt 当前方案: 使用 xmodmap 自定义配置文件,在 startx 时执行 已知问题: 1. 系统挂起或蓝牙睡眠导致的 keyboard reconnection 会 reset 掉 Win&Alt 的交换 2. 之后重新执行 xmodmap 会导致 L-Ctrl&Caps-Lock 交换回原状,必须执行两次 后续跟进: 1. TTY console switch 快捷键不可用 2. Terminate X 快捷键 CAB(Ctrl-Alt-Backspace) 不可用 3....

10-16 · 2 min