sudo tcpdump -Z
использование initgroups (3), setgid (2) и setuid (2) для отбрасывания полномочий пользователя root его собственного процесса.
# code taken from:
# http://www.opensource.apple.com/source/tcpdump/tcpdump-32/tcpdump/tcpdump.c
/* Drop root privileges and chroot if necessary */
static void
droproot(const char *username, const char *chroot_dir)
{
...
if (initgroups(pw->pw_name, pw->pw_gid) != 0 ||
setgid(pw->pw_gid) != 0 || setuid(pw->pw_uid) != 0) {
fprintf(stderr, "tcpdump: Couldn't change to '%.32s' uid=%lu gid=%lu: %s\n",
username,
(unsigned long)pw->pw_uid,
(unsigned long)pw->pw_gid,
pcap_strerror(errno));
exit(1);
}
...
}
Возможно, ценность для взгляда к этому плагину энергии http://www.vim.org/scripts/script.php?script_id=1697
У меня есть следующий набор отображения до, быстро отключают блок использования кода C++ #if 0...#endif
:vmap 0 V'<O#if 0<Esc>'>o#endif<Esc>
То, что это делает, настраивается отображение, которое только работает, в то время как режим Visual включен (vmap
), который отключает визуальный режим (V
), переходит к началу последнего визуального выбора ('<
), вводит новую строку выше его (O
), входит "#if, 0" текстов затем выходят из режима редактирования (<Esc>
), затем идет в конец последнего визуального выбора ('>
), добавляет строка ниже (o
) и вводит "#endif" текст.
Вы могли сделать что-то подобное путем замены запуска и закончить текст, например.
:vmap 0 V'<O{% comment %}<Esc>'>o{% endcomment }<Esc>
Обратите внимание, что это требует использования линию за линией визуального режима, перешедшего с капиталом V
, вместо познакового визуального режима, который использует нижний регистр v
.