Изменение разрешения беспроводного устройства wlan0

Я хочу иметь возможность изменить разрешение wlan0, чтобы я мог использовать tcpdump для прослушивания, не повышая себя до уровня root.

В настоящее время:

tcpdump -i wlan0

дает:

tcpdump: wlan0: You don't have permission to capture on that device

, когда я делаю:

sudo tcpdump -i wlan0 

это работает, как ожидалось.

0
задан 25 April 2014 в 17:26

1 ответ

Небольшое объяснение: это не устройство wlan0, которое мешает вам захватить его как пользователь без полномочий root. Это поведение ядра и по соображениям безопасности. Это та же самая причина, по которой вы не можете сделать dd if=/dev/zero of=/dev/sda как пользователь без полномочий root; это сотрет ваш жесткий диск. Тем не менее, есть способы, которыми вы можете переопределить поведение ядра по умолчанию (ах, прелесть Linux), чтобы получить желаемую функциональность.

Вы можете сделать одно из двух:

Я бы порекомендовал отредактировать файл sudoers так, чтобы он не требовал пароля, чтобы вы могли sudo tcpdump -i wlan0 не требовать ввода пароля каждый раз. Редактируя файл sudoers, вы гарантируете, что вы и только вы можете сделать это, и все другие пользователи системы исключены.

Для этого:

sudo visudo

Затем добавьте в файл следующие строки:

Cmnd_Alias TCPDUMP_WLAN0 = /usr/bin/tcpdump -i wlan0
[username] ALL= NOPASSWD: TCPDUMP_WLAN0 #Be sure to replace [username] with your username

Для этого по-прежнему требуется каждый раз вводить «sudo», но вы можете установить для этого также используется псевдоним bash, поэтому все, что вы делаете, - это набираете tcpdump, и он выполняет sudo tcpdump -i wlan0. Для этого просто отредактируйте файл ~ / .bashrc и добавьте строку: alias tcpdump="/usr/bin/tcpdump -i wlan0"

Использование файла sudoers является наиболее безопасным способом выполнения действий. Теперь, если вы действительно непреклонны в том, чтобы не использовать sudo что-либо еще, тогда я дам вам, что вы хотите. Однако следующая команда предоставит всем пользователям возможность запускать эту программу с необходимыми возможностями, так что нет точного пользовательского контроля.

Имейте в виду, что это не проверено, однако это должно работать. Если нет, у меня есть третье решение ниже.

sudo setcap cap_net_admin+ep /usr/bin/tcpdump

Наконец, если это не сработает, вы можете установить setuid для самого файла. Что он делает, так это запускает программу как владелец файла (в данном случае root). Как и выше, любой, кто запустит этот файл, станет пользователем root для его запуска. Вам действительно следует использовать это только в качестве крайней меры и только в том случае, если вы полностью уверены в том, что программа не эксплуатируется и никоим образом не может использоваться в качестве рычага для взлома вашей системы.

sudo chmod u+s /usr/bin/tcpdump
0
ответ дан 25 April 2014 в 17:26

Другие вопросы по тегам:

Похожие вопросы: