Архив рубрики: Gentoo

как в Linux вывести настройки IP адресов сетевых карт?

чтобы вывести настройки сетевой карты есть команда: ifconfig

чтобы вывести только ip адрес, маску и подсеть можно выбрать эти даные конвеером из несколькоих команд:

вставить вот это в консоль Linux:
ifconfig eth0 | grep "inet addr:" | cut -f2,3

ifconfig eth1 | grep "inet addr:" | cut -f2,3

ограничение и запрет соединений с сервером Asterisk снаружи

как только поставишь asterisk сервер к тебе начнут долбиться с попытками звонить за твой счет. Чтобы это предотвратить в параметрах sip.conf нужно указать:

deny=0.0.0.0/0.0.0.0                             ;запретить все
permit=8.8.8.8/255.255.255.255           ;разрешить соединения только с этого IP

таких строк может быть не ограниченное количество (для подключения всех филиалов к центральному серверу asterisk или нескольких провайдеров)

и помните, что asterisk это последняя линия обороны. Ломануть могут и ваш сервер и чтобы это предотвратить нужно настроить firewall — сетевой экран, чтобы не пускать определенные типы запросов или же банить по странам.

Это делается через iptables.

Вот пример правил iptables для отклонения всех запросов на регистрацию на ваш Asterisk сервер.:

iptables -A INPUT -p udp —dport 5060 -m state —state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp —dport 5060 -m string —string «REGISTER sip:46.160.231.50» —algo bm -j ACCEPT
iptables -A INPUT -p udp —dport 5060 -m string —string «REGISTER sip:» —algo bm -j DROP
iptables -A INPUT -p udp —dport 5060 -m string —string «OPTIONS sip:» —algo bm -j DROP
iptables -A INPUT -p udp —dport 5060 -j ACCEPT

или вот это с сайта http://invoip.net:

*****начало цитаты*****

-A INPUT -p udp —dport 5060 -j SCAMBLOCK
-A INPUT -p udp —dport 5060 -m recent —set —name SIP
-A INPUT -p udp —dport 5060 -m recent —update —seconds 2 —hitcount 60 —name SIP \
-j LOG —log-prefix «SIP flood detected:»

Приведенное требование определет пакет с помощью цепочки SCАMBLOK. Именно внутри этой цепочки имеют место быть все заблокированные по разным причинам адреса IP. В случае выявления найденного хоть одного совпадения с одним из пакетов списка, пакет незамедлительно отбрасывается.

В случае не отбрасывания пакета используется второе правило, то есть пометка для учета, именуемого SIP. Что касается правила под номером три, то оно производит подсчеты, не состоялось ли превышение данного пакета.

В случае не превышения количества, правило тут же игнорируется, а если превышено, то незамедлительно выполняется конкретное действие. Системный лог в нашем с вами случае безнадежен. Прописывается пакетная детальная информация. Пакетная информация начинается с такой строки, как «SIP flood detected:». Время и количество пакетов для каждого источника отдельно рассчитываются. Из этого следует, что мы совершили ограничение по скорости приема пакетов SIP от каждого IР, которое не заблокировано, уровень составляет тридцать пакетов в секуду.

*****конец цитаты*****

кроме этого нужно обязательно использовать FailToBan.

Как установить Eclipse на Linux?

Чтобы установить Eclipse на Linux нужно сделать следующее:

Зайти на официальный сайт Eclipse. Меня, например, интересовал Eclipse PHP Development Tool

 

 

Eclipse официальная страница загрузки

Eclipse официальная страница загрузки

 

Eclipse PDT официальная страница загрузки

Eclipse PDT официальная страница загрузки

На официальном сайте нужно нажать кнопку Download.

Загрузится архив eclipse-xxxxx.tar.gz

 

 

 

 

Теперь необходимо распаковать архив в папку /opt и создать ярлык для исполняемого файла Eclipse

Как распаковать файлы дистрибутива (установочного комплекта от производителя) через консоль:

вставить вот это в консоль Linux:
su

mkdir ~/opt

cd ~/opt
mv ~/Загрузки/eclipse-php-luna-SR1a-linux-gtk-x86_64.tar.gz .
tar xzvf eclipse-php-luna-SR1a-linux-gtk-x86_64.tar.gz
cd eclipse
./eclipse

здесь нужно учитывать, что версия Вашего дистрибутива могла изменится и имя файла не совпадет с моим. Исправьте имя файла на правильное перед вводом в консоли.

Второй вариант через графический интерфейс («установка мышкой»):

Нажмите ctrl+alt+T (или откройте терминал через меню)

в появившемся окне терминала наберите:

вставить вот это в консоль Linux:
gksudo nemo

если у вас установлен файловый менеджер nemo он откроется от имени Суперпользователя (аналог Администратора в Windows).

Найдите папку загрузок в каталоге /home/имя_вашего_пользователя/Загрузки/

скопируйте загруженный файл Eclipse (его название должно быть похоже на это: eclipse-php-luna-SR1a-linux-gtk-x86_64.tar.gz) правой кнопкой мыши выбрав пункт Скопировать.

Вставьте этот файл (правой кнопкой мыши выбрав пункт Вставить) в папку /opt находящуюся прямо в начале файловой системы. Доступ Суперпользователя Вам нужен был именно для этой папки.

Нажмите правой кнопкой мыши на этом файле, выберите распаковать здесь.

Появится папка Eclipse. 

Создайте ярлык для файла /opt/eclipse/eclipse в меню или на рабочем столе.  Как создать ярлык в меню Gnome.

Все, программа Eclipse установлена.

 

файловый менеджер Nemo

запуск Nemo (файлового менеджера) с правами root (sudo)

чтобы запустить файловый менеджер Nemo в Linux Mint, Ubuntu, Debian или другом дистрибутиве Linux cо средой Gnome

нужно выполнить команду:

вставить вот это в консоль Linux:
<pre><code>gksudo nemo</code></pre>

чтобы в меню  программ или на рабочем столе был ярлык, нужно создать ярлык в меню Gnome для этой команды. Как это сделать описано в моей статье Как создать ярлык в меню Gnome.

 

создать новый ярлык в Gnome

как создать новый ярлык в меню Gnome?

настройка меню Gnome

настройка меню Gnome

чтобы создать новый ярлык в меню Gnome нажмите правой кнопкой мыши на надписи (если нет — логотипе меню Gnome) и выберите пункт Настройка

 

 

 

 

 

Появится меню настройки Меню Gnome

настройки меню Gnome

настройки меню Gnome

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В этом меню нажмите кнопку Open The menu editor. Появится окно Main menu:

редактор меню Gnome

редактор меню Gnome

 

В этом меню выберите с левой стороны группу приложений, например Стандартные и нажмите справа кнопку New Item.

 

 

 

 

 

 

 

 

 

 

 

 

 

Появится окно создания нового значка запуска с названием launcher properties:

создать новый ярлык в меню Gnome

создать новый ярлык в меню Gnome

 

В этом окне вам нужно:

в поле Name ввести имя ярлыка.

В поле Command ввести команду запуска, для которой Вы хотите создать постоянный ярлык, чтобы не вводить в консоли эту команду или не находить этот файл (приложение) каждый раз в файловом менеджере.

если вы хотите запускать введенную Вами команду в консоли (командной строке Linux) то нужно поставить галочку Launch in terminal

И нажать ОК.

После сохранения ярлыка запуска Вы можете установить его порядок в данной группе меню (выше или ниже текущего положения кнопками Move up, Move down.

 

теперь можно закрыть все окна кнопками Закрыть. На этом создание ярлыка в меню Gnome завершено.

описание групп в Linux

Группы в LINUX

Чаще всего на рабочих станциях и домашних компьютерах добавляют не-root пользователей в ниже указанные группы, чтобы дать доступ к оборудованию или функциям системного администрирования:

  • audio
  • floppy
  • lp
  • network
  • optical
  • power
  • storage
  • video
  • wheel
Список групп и их функции (отсортированно по алфавиту)
Группа Affected files Назначение
adm
/var/log/*
доступ на чтение к log файлам.
audio
/dev/audio

,

/dev/snd/*

,

/dev/rtc0
Доступ к звуковому оборудованию.
avahi
bin
/usr/bin/*
Right to modify binaries only by root, but right to read or executed by anyone. (Please modify this for better understanding…)
camera доступ к цифровым камерам Digital Cameras.
clamav
/var/lib/clamav/*

,

/var/log/clamav/*
И Clam AntiVirus.
daemon
dbus
/var/run/dbus/*
disk
/dev/sda[1-9]

,

/dev/sdb[1-9]
Access to block devices not affected by other groups such as optical, floppy, and storage.
floppy
/dev/fd[0-9]
Access to floppy drives.
ftp
/srv/ftp
games
/var/games
Access to some game software.
gdm
hal
/var/run/hald

,

/var/cache/hald
http
kmem
/dev/port

,

/dev/mem

,

/dev/kmem
locate
/usr/bin/locate

,

/var/lib/locate

,

/var/lib/mlocate

,

/var/lib/slocate
Right to use
updatedb

command.

log
/var/log/*
Access to log files in
/var/log

,

lp
/etc/cups

,

/var/log/cups

,

/var/cache/cups

,

/var/spool/cups
Access to printer hardware; enables the user to manage print jobs.
mem
mail
/usr/bin/mail
network Right to change network settings such as when using NetworkManager.
networkmanager Requirement for your user to connect wirelessly with NetworkManager. This group is not included with Arch by default so it must be added manually.
nobody Unprivileged group.
ntp
optical
/dev/sr[0-9]

,

/dev/sg[0-9]
Access to optical devices such as CD and DVD drives.
policykit
power Right to use suspend utilities and power management controls.
rfkill
root
/*
Complete system administration and control (root, admin).
scanner
/var/lock/sane
Access to scanner hardware.
smmsp
sendmail

group

storage Access to removable drives such as USB hard drives, flash/jump drives, MP3 players; enables the user to mount storage devices through HAL and D-Bus.
stb-admin
sys Right to admin printers in CUPS.
thinkpad
/dev/misc/nvram
Used by ThinkPad users for access to tools such as tpb.
tty
/dev/tty

,

/dev/vcc

,

/dev/vc

,

/dev/ptmx
Eg. to acces /dev/ACMx
users Standard users group.
uucp
/dev/ttyS[0-9]

,

/dev/tts/[0-9]
Serial and USB devices such as modems, handhelds, RS-232/serial ports.
vboxusers
/dev/vboxdrv
Right to use VirtualBox software.
video
/dev/fb/0

,

/dev/misc/agpgart
Access to video capture devices, DRI/3D hardware acceleration (X can be used without belonging to this group).
vmware Right to use VMware software.
wheel Right to use sudo (setup with
visudo

), also affected by PAM.

При подготовке использован материал с сайта Archlinux.org

как в Linux добавить строку в конец файла без его открытия в редакторе?

часто когда настраиваешь Linux компьютер требуется добавить в конец разных файлов строку (или несколько) с настройками. Это можно сделать не открывая файл в редакторе, тем более обычно рекомендуют открывать файл в редакторе vi или nano.

НО ведь новичок, да и не новичок в Linux не знает комбинации клавиш в этих консольных редакторах. Кроме того и действий требуется лишнего.

Вместо этого можно:

вставить вот это в консоль Linux:
echo "Строка для вставки в конец файла" >> полный_путь_к_файлу_для_вставки_текста_в_его_конец

почему внешние узлы на Asterisk сервере не пингуются?

почему в Linux с 2мя сетевыми картами не работает интернет?

lnux-asteriskв данной статье рассматривается финальная настройка (после ввода параметров сетевых карт) интернета на Asterisk сервере.

проблема с шлюзами на базе Linux заключается в том, что после того, как обе сетевых карты настроены Linux не знает куда направлять все пересылаемые пакеты данных (например, когда вы пингуете интернет-узел).

 

 

 

вставить вот это в консоль Linux:
route add default ip_адрес_внешней_интернетовской_сетевой_карты

чтобы это работало после каждой перезагрузки сервера, вставьте эту строку:

route add default ip_адрес_внешней_интернетовской_сетевой_карты

в файл /etc/rc.local

это можно сделать командой:

вставить вот это в консоль Linux:
echo oute add default ip_адрес_внешней_интернетовской_сетевой_карты >> /etc/rc.local
Что нужно, чтобы это работало (если не работает)

если Вы вошли в систему не как пользователь root, то для большинства команд установки-смены настроек нужно впереди команды писать sudo. Это команда запуска вашей команды с правами root (или теми, что были специальным образом назначены.), но в общем случае это права root-пользователя.

Почему в Linux клик по тачпаду не работает?

(одиночный клик по тачпаду вместо одиночного клика мышкой)

Я поставил себе linux Mint v 17 и столкнулся с тем, что тачпад (панель заменяющая мышку на ноутбуке) не реагирует на одиночное или двойное касание тачпада (что в Windows обычно заменяет клик (нажатие) левой кнопкой мыши (один или два раза в зависимости от количества коротких касаний тачпада пальцем).

Как это устранить? Ответ — не настроен тачпад. Настроки здесь:

Открыть Системные настройки — Мышь и сенсорная панель — Закладка «Сенсорная панель» — поставить крестик в «Включить нажатия мыши для сенсорной панели».

Снимок экрана от 2015-02-02 23:07:53Снимок экрана от 2015-02-02 23:08:07

iptables параметр -j — целевое действие

Целевое действие указывается с помощью опций -j или —jump.

Действием может быть одно из стандартных действий, действий расширений или переход на пользовательскую цепочку.

Стандартные действия включают ACCEPT, DROP, QUEUE и RETURN. Примерами действия расширений могут быть REJECT и LOG.

Если применено одно из стандартных действий, участь пакета решается незамедлительно и обработка пакета в таблице прекращается. Если действием указан переход на пользовательскую цепочку, и пакет проходит через нее, он возвращается на исходную цепочку и продолжает со следующего после перехода правила. Действия расширений могут быть терминальными (как стандартные действия) или нетерминальными (как пользовательские цепочки).

Смотрите также man 8 iptables-extensions для получения более подробной информации.

 

источник https://wiki.archlinux.org/..

как сделать Linux компьютер интернет-сервером (маршрутизатором)?

чтобы Linux Ubuntu, Debian, Kubuntu, Lubuntu, Mint, Pepermint, Gentoo или любой другой линукс стал интернет сервером, который получает интернет по одной сетевой карточке а передает интернет по другой сетевой карточке во внутреннюю сеть нужно чтобы каждый раз при загрузке компьютера с Linux выполнялись следующие команды:

указанные команды нужно выполнять от имени root или суперпользователя (т.е. иметь на это права)

команды включающие NAT в Linux:
iptables -t nat -P POSTROUTING DROP

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Первая команда устанавливает для таблицы POSTROUTING правило работы по-умолчанию (если ничего из правил не подошло DROUP — прекратить работу полученного пакета без дальнейших проверок.

Таблица POSTROUTING это встроенная таблица в программу iptables. Таблица POSTROUTING задействуется, когда пакет возвращается из LINUX компьютера обратно в сеть.

Вторая команда используется, чтобы весь трафик приходящий на Linux компьютер  перенаправлялся на карту eth1 (интернет-карта) или нужно указать имя своей сетевой интернет-карты (интерфейса), например eth0 или wlan1 для Wi-Fi.

Маскировкой (MASQUERADE) в Linux называется операция, когда роутер (linux) принимает пакеты на свое имя (внешний или другими словами Белый IP) и отправляет их внутрь сети уже под внутренними IP адресами.

Что нужно, чтобы это работало (если не работает)

Ядро Linux должно быть скомпилированно с поддержкой фильтрации сетевых пакетов

В настройке компиляции ядра это выглядит так:

Networking options —>

[M] Network paket filtering (replace ipchains)

Как просто установить счетчик сколько трафика жрет LINUX машина?

вставить вот это в консоль Linux:
sudo iptables -A INPUT -i wlan0 -d 192.168.0.105/24

эта команда позволяет посчитать весь входящий по Wi-Fi трафик для

IP адреса получателя 192.168.0.105  (/24 — это маска подсети 255.255.255.0)

если трафик нужно посчитать на обычной сетевой карте с витой парой то нужно выполнять для подсчета трафика на сетевой карте с именем в Linux eth0 это:

вставить вот это в консоль Linux:
sudo iptables -A INPUT -i eth0 -d 192.168.0.105/24

если трафик нужно посчитать на обычной сетевой карте с витой парой то нужно выполнять для подсчета трафика на сетевой карте с именем в Linux eth1 это:

вставить вот это в консоль Linux:
sudo iptables -A INPUT -i eth1 -d 192.168.0.105/24

-i eth1  — имя сетевого интерфейса (сетевой карты в Linux) на которой будет считаться трафик.

пример результатов работы этой команды:
sudo iptables -L -v
Chain INPUT (policy ACCEPT 1348K packets, 1973M bytes)
 pkts bytes target     prot opt in     out     source               destination         
1348K 1973M            all  --  wlan0  any     anywhere             192.168.0.0/24      

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0            all  --  wlan0  any     anywhere             anywhere            
    0     0            all  --  wlan0  any     192.168.0.0/24       anywhere            
    0     0            all  --  wlan0  any     anywhere             192.168.0.0/24      

Chain OUTPUT (policy ACCEPT 638K packets, 35M bytes)
 pkts bytes target     prot opt in     out     source               destination 

для постоянных подсчетов нужно внести эту команду в файл:

/etc/rc.local

просмотреть содержимое этого файла (что уже стартует из этого файла можно командой:

cat /etc/rc.local

как удалить настройки соединений в Gnome?

чтобы удалить настройки соединений:

1) откройте диспетчер файлов с правами root (sudo)

2) в папке /etc/NetworkManager/system-connections лежат все настройки соединений.

3) удалите нужные или все если никакие не нужны.
Готово.

 

в Google Chrome xneural switcher chrome печатает по 2 буквы

xneural switcher chrome печатает по 2 буквы / двоятся буквы в Linux xneural switcher

чтобы это исправить, нужно выполнить эту команду в консоли для открытия файла настоек Chrome

вставить вот это в консоль Linux:

sudo gedit /usr/bin/google-chrome-stable

файл настроек находится по этому пути: /usr/bin/google-chrome-stable

вставить в начало этого файла после комментариев сверху (они обозначены в начале знаком #) вот это:

вставить вот это в файл:

export LANG=ru_RU.UTF-8

Если не сработало есть другой вариант, или дополнение к этому варианту:

в настройках Google Chrome установить настройку:

Использовать системные рамки и строку заголовка (поставить галочку)

вот скриншот:

не работает Xneural Switcher

не работает Xneural Switcher

глоссарий к Linux

  • репозиторий — локальная или удалённая директория, содержащая пакеты и различные данные о пакетах (метаданные пакета). Репозитории ранее назывались источниками установки, сервисами или каталогами.
  • псевдонимпсевдоним репозитория представляет собой краткий вариант названия репозитория для использования в командах и опциях для работы с репозиториями, например, removerepo или --repo.
  • пакетпакет программного обеспечения (пакет RPM, пакет исходного кода). Патчи, модели и продукты также обычно рассматриваются как различные виды пакетов.
  • патчпакет или группа пакетов, необходимых для установки обновления (в основном, исправление ошибки).
  • шаблон — представляет группу пакетов. Например, шаблон Http Server будет иметь зависимости, определённые таким образом, чтобы вызвать установку всех пакетов, необходимых для запуска и управления http-сервера, после установки шаблона.
  • продукт — представляет собой полный продукт (например, «openSUSE 11.1»).

sudo — как запустить команду от имени другого пользователя (например root или vasya)

sudo — выполнить команду от имени другого пользователя

СИНТАКСИС

sudo -V | -h | -l | -L | -v | -k | -K | -s | [ -H ] [ -P ] [ -S ] [ -b ] | [ -p запрос ] [ -c класс| ] [ -a тип_аутентификации ] [ -u имя_пользователя/#uid ] команда

ОПИСАНИЕ

sudo позволяет разрешенному пользователю выполнять команду как суперпользователь или другой пользователь, как определено в файле sudoers. Реальный и эффективный uid и gid при этом устанавливаются так, чтобы соответствовать таковым целевого пользователя, как определено в файле passwd (также инициализируется вектор группы, если целевой пользователь — не root). По умолчанию sudo требует, что бы пользователи аутентифицировали себя при помощи пароля (ЗАПОМНИТЕ: это пароль пользователя, не пароль root). Как только пользователь аутентифицировал себя происходит обновление временной метки и пользователь может использовать sudo некоторый период времени без пароля (по умолчанию пять минут, если в sudoers не указано другое).

sudo определяет, кто является авторизованным пользователем сверяясь с файлом /etc/sudoers и всеми файлами с подходящим названием в каталоге/etc/sudo.d. Указав для sudo флаг -v пользователь может обновить временную метку без выполнения команды. Строка приглашения для ввода пароля так же устаревает, если пользователь не введёт пароль в течение 5 минут (если в sudoers не переопределено другое).

Если не указанный в файле sudoers пользователь попытается выполнить при помощи sudo команду, то уполномоченному пользователю будет отправлено почтовое сообщение, как определено во время конфигурации или в файле sudoers (по умолчанию это root). Обратите внимание, что сообщение не будет отправлено, если неавторизованный пользователь пытается выполнить sudo с флагами -l или -v. Это позволяет пользователям определить — разрешено им использовать sudo или нет.

sudo может регистрировать оба типа попыток, успешные и не удачные, (так же как и ошибки) при помощи системного журнала регистрации событийsyslog(3), собственного журнала, или с использованием обоих вариантов. По умолчанию sudo регистрирует события через syslog(3), но это можно изменить во время конфигурации или в файле sudoers.

ПАРАМЕТРЫ

sudo акцептирует следующие параметры командной строки:

«-V»
Параметр -V (версия) заставляет sudo показать номер версии и выйти. Если пользователем инициировавшим вызов является root, то параметр -Vотобразит список значений по умолчанию с которыми был собран sudo, в том числе локальные сетевые адреса машины.
«-l»
Параметр -l (список) перечислит дозволенные (и запрещенные) команды для пользователя на данной машине.
«-L»
Параметр -L (список по умолчанию) отобразит список параметров, которые могут быть установлены в строке Defaults, с кратким описанием каждого. Этот параметр полезен в сочетании с grep(1).
«-h»
Параметр -h (помощь) заставит sudo показать справку об использовании и выйти.
«-v»
Если указан параметр -v (идентифицировать), sudo обновит временную метку пользователя, предложив пользователю, если необходимо, указать пароль. Это продлит срок действия прежнего пароля sudo на следующие 5 минут (или на тот срок, который указан в sudoers), но не требует при этом выполнения какой-либо команды.
«-k»
Указание для sudo параметра -k (уничтожить) лишает законной силы временную метку пользователя, устанавливая время на начало века. При следующем выполнении sudo потребуется указать пароль. Эта операция не требует указания пароля и была добавлена, чтобы позволить пользователю аннулировать права sudo из файла .logout.
«-K»
Параметр -K (уничтожить наверняка) для sudo полностью удаляет временную метку пользователя. Этот параметр тоже не требует указания пароля.
«-b»
Параметр -b (фон) сообщает sudo выполнить заданную команду в фоновом режиме. Если вы используете параметр -b, то вы не сможете использовать контроль над запущенными процессами оболочки для манипуляций командами.
«-p»
Параметр -p (приглашение) позволяет переопределить внешний вид приглашения в систему по умолчанию. Если вид приглашения содержит управляющий символ %u, то %u будет заменен учетным именем пользователя. Аналогично %h может быть заменено на имя компьютера.
«-c»
Параметр -c (класс) заставляет sudo выполнить определенную команду с ограничением ресурсов, свойственным указанному классу пользователя. Параметр класс может быть либо именем класса, указанным в /etc/login.conf, или знаком -. Указание класс с помощью — означает, что команда будет выполнена с учетом прав того пользователя, от имени которого эта команда выполняется. Если параметр класс указывает на текущий класс пользователя, то команда должна быть выполнена от имени root, или команда sudo должна выполняться из оболочки суперпользователя (root). Этот параметр доступен с BSD-классом входа в систему, где sudo был сконфигурирован с параметром —with-logincap.
«-а»
Параметр (тип аутентификации) принуждает sudo при идентификации пользователя использовать указанный тип аутентификации, в соответствии с /etc/login.conf. Системный администратор может указать перечень подходящих для sudo методов аутентификации путём добавления в /etc/login.conf записи «auth-sudo». Этот параметр доступен только на системах поддерживающих BSD-тип аутентификации, если sudo был сконфигурирован с параметром —with-bsdauth.
«-u»
Параметр -u (пользователь) вызывает sudo для выполнения указанной команды от имени пользователя, отличного от root. Для указания uid вместоимени пользователя, используйте #uid.
«-s»
Параметр -s (оболочка) запускает командный интерпретатор, определенный переменной окружения SHELL, или оболочку указанную в passwd(5).
«-H»
Параметр -H (HOME) устанавливает значение переменной окружения HOME к домашнему каталогу целевого пользователя (по умолчанию root), определенную в passwd(5). По умолчанию sudo не изменяет HOME.
«-Р»
Параметр -P (сохранить вектор группы) сообщает sudo о необходимости сбережения вектора группы пользователя в неизменном виде. По умолчанию sudo инициализирует групповой вектор к списку групп, к которым принадлежит целевой пользователь. Однако, реальный и эффективный идентификаторы групп назначаются соответствующими целевому пользователю.
«-S»
Параметр -S (stdin) заставляет sudo считывать пароль со стандартного ввода вместо терминала.
«—«
Флаг обозначает, что sudo должен прекратить выполнение параметров командной строки. Это полезно в сочетании с флагом -s.

КОДЫ ВОЗВРАТА

В случае успешного выполнения возвращаемым значением sudo будет возвращаемое значение выполненной программы.

В противном случае sudo завершает работу со значением 1, если обнаруживает проблемы в конфигурации/правах доступа или sudo не в состоянии выполнить заданную команду. В последнем случае сообщение об ошибке будет выведено в stderr. Если sudo не в состоянии получить stat(2) на одну или болееe запись в пользовательском PATH, то сообщение об ошибке будет выведено на stderr. (Если каталог не существует или если это на самом деле не каталог, запись о нем будет игнорирована и об ошибке сообщено не будет.) При нормальных обстоятельствах этого не должно произойти. Наиболее частая причина возврата от stat(2) «permission denied», если вы запустили автоматическое монтирование дисков и один из каталогов в вашем PATH находится на машине, которая в настоящий момент не доступна.

ПРИМЕЧАНИЯ ПО БЕЗОПАСНОСТИ

sudo пытается быть безопасной при выполнении внешних команд. Переменные, контролирующие выполнение динамической загрузки и связей, могут быть использованы для уничтожения программ выполняемых sudo. Для борьбы с этим, переменные окружения LD_*, _RLD_*, SHLIB_PATH (только HP-UX) и LIBPATH (только AIX), изъяты из окружения доступного для команд выполняемых всеми. sudo также изымает переменные IFS, ENV, BASH_ENV, KRB_CONF, KRB5_CONFIG, LOCALDOMAIN, RES_OPTIONS, HOSTALIASES, NLSPATH, PATH_LOCALE, TERMINFO, TERMINFO_DIRS И TERMPATH, поскольку они тоже могут представлять угрозу. Если установлена переменная TERMPATH и является именем пути, то она также будет игнорирована. Дополнительно, если переменные LC_* или LANGUAGE содержат символы / или %, то они будут игнорированы. Если sudo було собрано с поддержкой SecurID, то переменные VAR_ACE, USR_ACE и DLC_ACE будут также очищены. Список переменных, подлежащих очистке со стороны sudo, может быть распечатан в вывод команды sudo -V, выполненной от имени суперпользователя (root).

Во избежание подмены команд sudo проверяет «.» и «» (оба указывают на текущий каталог), когда осуществляет поиск команды в пользовательском PATH (если один из них есть в PATH) в последнюю очередь. Однако, обратите внимание, что фактическая переменная окружения PATH не модифицирована и передается программе, выполняемой sudo, в неизмененном виде.

Из соображений безопасности, если ваша ОС поддерживает разделяемые библиотеки и не отключает пользовательский путь поиска для программ использующих setuid (чаще всего), вы должны использовать параметры линковщика которые исключают такую возможность или линкуют sudoстатически.

sudo проверяет принадлежность каталога содержащего временные метки (по умолчанию это /var/run/sudo) и игнорирует каталоги с содержимым не принадлежащим root и доступным на запись только для root. В системах, позволяющих не привилегированным пользователям передавать права на файлы через chown(2), если временная метка находится в каталоге доступном для записи для всех (т.е.: /tmp), то возможна ситуация, когда пользователь создаст каталог каталог содержащий временную метку прежде, чем будет выполнено sudo. Однако, так как sudo проверяет права владения и режим доступа каталога и его содержимого, то вред может быть нанесён только «скрытыми» файлами, помещенными в каталог с временными метками. Это вряд ли случится в том случае, если владельцем каталогов с временными метками является суперпользователь и они не доступны для других пользователей для записи в них. Что бы обойти эту проблему вы можете использовать каталог для хранения временных меток (например /var/adm/sudo), никому не доступный для записи, или создать /var/run/sudo, с соответствующими владельцем (root) и правами доступа (0700) в системных файлах запуска.

sudo игнорирует временные метки с датой создания в далеком будущем. Временные метки с датой большей, чем настоящий момент времени + 2 * TIMEOUT будут игнорироваться, регистрироваться sudo и уполномоченному пользователю будет послано предупреждение. Это сделано во избежание создания временных меток с поддельными датами, которые позволят отдавать файлы пользователям.

Обратите внимание, что sudo регистрирует только явно выполненные команды. Если пользователь выполняет такую команду как sudo su или sudo sh, то команды выполненные из этих оболочек не будут запротоколированы и при этом их не затронет управление доступом sudo. Тоже-самое верно по отношению к командам, допускающим использование управляющих символов (включая большинство редакторов). В связи с этим должна быть проявлена осторожность при предоставление пользователям доступа к выполнению команд посредством sudo, во-избежание нечаянного предоставления пользователю доступа к оболочке суперпользователя (root).

EXAMPLES

Внимание: следующие примеры содержат работающие записи sudoers(5).

Для получения списка файлов в каталоге закрытом для чтения:
sudo ls /usr/local/protected

Для получения списка файлов домашнего каталога пользователя yazza на машине, где файловая система, содержащая ~yazza не позиционируется как корневая:
sudo -u yazza ls ~yazza

Для редактирования файла index.html как пользователь www:
sudo -u www vi ~www/htdocs/index.html

Для выключения компьютера:
sudo shutdown -r +15 «quick reboot»

Для создания списка занимаемого каталогами места в партиции /home. Обратите внимание, что это выполняется в под-оболочке (sub-shell) для выполнения cd и переадресации файла.
sudo sh -c «cd /home ; du -s * | sort -rn > USAGE»

ПЕРЕМЕННЫЕ

sudo использует следующие системные переменные:

PATH Установленную в нормальное значение, если установлен SECURE_PATH. SHELL Используется для указания оболочки для запуска с параметром -s. USER Устанавливается к целевому пользователю (root, если параметром -u не определено другое). HOME В варианте -s или -H (или если sudo было сконфигурировано с
параметром —enable-shell-sets-home) указывает на домашний                                   каталог целевого пользователя.
SUDO_PROMPT Используется как заданная по умолчанию подсказка пароля. SUDO_COMMAND Установлено на команды, выполняемые sudo. SUDO_USER Установлено на вход в систему пользователя, которому разрешено
вызывать sudo. SUDO_UID Установлено на uid пользователя, которому разрешено вызывать sudo. SUDO_GID Установлено на gid пользователя, кто вызвал sudo. SUDO_PS1 Если установлено, PS1 будет установлен на это значение.

ФАЙЛЫ

/etc/sudoers /etc/sudo.d/* Описание того, кто и какие команды может выполнять /var/run/sudo Каталог содержащий временные метки

АВТОРЫ

Многие люди годами работали над sudo. Эта версия содержит код написанного преде всего:
Todd Miller
Chris Jepeway

Краткую историю sudo смотри в файле HISTORY в дистрибутиве или в интернете по адресу http://www.sudo.ws/sudo/history.html.

Александр Блохин <sass@altlinux.ru> — перевод на русский язык.

ОШИБКИ

Если вам кажется, что вы нашли ошибку в sudo, то отправьте рапорт об ошибке по адресу: http://www.courtesan.com/sudo/bugs/

ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ

Sudo поставляется «КАК ЕСТЬ’ и любые явные или неявные гарантии, включая, но не ограничиваясь неявными гарантиями, коммерческой ценности и пригодности для конкретной цели отрицаются. Подробности смотри в файле LICENSE, поставляемом вместе с sudo.

ПРЕДОСТЕРЕЖЕНИЕ

Не существует никакого простого способа предотвратить захват пользователем оболочки с правами суперпользователя (root), если он имеет доступ к командам оболочки.

Если пользователь имеет sudo ALL, то ничто не остановит его от создании собственной программы, которая даст ему оболочку привилегированного пользователя (root), не смотря ни на какие элементы ! в спецификации пользователя.

Выполнение сценариев оболочки через sudo может вызвать те же самые ошибки ядра, которые делают сценарии оболочки со сменой идентификатора пользователя опасными на некоторых операционных системах (если ваша ОС поддерживает каталог/dev/fd/, сценарии оболочки со сменой идентификатора пользователя в целом безопасны).

СМ. ТАКЖЕ

stat(2), login_cap(3), sudoers(5), passwd(5), visudo(8), grep(1), su(1).

 
Источник — www.opennet.ru

делегирование прав sudo другому пользователю

нужно чтобы пользователь мог зайти на Linux в SSH или с консоли напрямую и выполнить какую-то команду, требующую прав root

ну не давать ему же пароль от root!

Можно включить его в группу admin, но и это лишнее количество передаваемых прав. Так он дел натворит! Можно дать ему доступ к sudo на конкретные команды или (и) переменные среды конкретного пользователя. Этому и посвящена эта запись.

Идея в том, что будет один пользователь и он сможет выполнять определенные команды от sudo не имея root прав. Но можно сделать это и нескольким пользователям.

Общий вид команд этого файла:

[пользователь] [хост]=([кем может стать]) [что может сделать]

#TVS
#%tvs-ssh-system-views TVS-Laptop = NOPASSWD: /home/tvs/scripting/test.sh  # этот вариант с правами на выполнение скрипта группе не работает. Нужно указывать каждому пользователю.

запуск файла редактирования и делегирования прав sudo

sudo visudo

настройка делегирования прав sudo

vova TVS-Laptop = NOPASSWD: /home/tvs/scripting/test.sh

tvs TVS-Laptop = NOPASSWD: /home/tvs/scripting/test.sh

чтобы указанная в visudo команда работала нужно сделать

1) chmod 771 имя_файла.sh
2) запускать имя файла.sh без source имя_файла.sh
т.е.
запуск скрипта от sudo
sudo имя_файла.sh

Также здесь, в настройках, указывается какие пользователи могут выполнять команды от sudo

# User privilege specification
root ALL=(ALL:ALL) ALL

Defaults env_reset #команда сбрасывает все переменные среды. Если нужен доступ к каким-то переменным среды, то их нужно указать здесь.

Defaults:%admin !env_reset # не сбрасывать переменные среды для группы admin
которая будет сохранять переменные окружения для всех пользователей группы admin, или:
Defaults:tvs env_keep=my_var1 #сохранить для пользователя tvs переменную var1
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL  #членам группы admin дать все права root

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL  #членам группы sudo дать разрешение выполнять любые команды

команды проверки конфигурации sudo

sudo -l

пример результатов работы этой команды:

tvs@TVS-Laptop:~$ sudo -l
Matching Defaults entries for tvs on this host:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User tvs may run the following commands on this host:
(ALL : ALL) ALL
(root) NOPASSWD: /home/tvs/scripting/test.sh
tvs@TVS-comp:~$

sudo -ll # показать полные данные по правам sudo для текущего пользователя

пример результатов работы этой команды:

tvs@comp:~$ sudo -ll

Matching Defaults entries for tvs on this host:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User tvs may run the following commands on this host:

Sudoers entry:
RunAsUsers: ALL
RunAsGroups: ALL
Commands:
ALL

Sudoers entry:
RunAsUsers: root
Commands:
NOPASSWD: /home/tvs/scripting/test.sh

sudo -lU user_name

пример результатов работы этой команды:

tvs@comp:~$ sudo -lU vova
User vova is not allowed to run sudo on TVS-comp.

редактирование файла настроек sudo напрямую

nano /etc/sudoers

#    /etc/sudoers файл настроек sudo.

команда visudo проверяет синтаксис этого файла и не дает его сохранить если в нем есть ошибки.

 

управление пользователями и группами в Linux

cat /etc/group # файл групп пользователей

useradd -m -g [основная группа] -G [список дополнительных групп] -s [командный интерпретатор] [имя пользователя]

-m — создаёт домашний каталог, вида /home/[имя пользователя].
-g — имя или номер основной группы пользователя.
-G — список дополнительных групп, в которые входит пользователь.
-s — определяет командную оболочку пользователя.

passwd [username] # задать пароль пользователя

userdel -r [username] # удалить указанного пользователя

groups [username]  # в каких группах состоит пользователь

sudo cat /etc/group | grep «tvs*» # поиск группы с именем, начинающимся с tvs

passwd -a tvs tvs-my-user-group # добавление пользователя в группу vs-my-user-group

gpasswd -d [user] [group]   # удалить пользователя из группы

groupdel [group]                    # удалить группу

 

 

 

запуск нескольких команд через SSH

иногда нужно подключиться к Linux серверу и что-то выполнить, затем выйти. Например посмотреть квоты пользователей или нагрузку на процессор, но при этом не нужно, чтобы юзер что-то еще делал. Для этого могут служить следующие параметры SSH подключения:


$ ssh root@192.168.1.1 'uptime; df -h'

Узнать Memory Usage и Load Average

$ ssh root@192.168.1.1 ‘free -m | cat /proc/loadavg’

Показать Версию Ядра, информацию о CPU и кол-во RAM


$ ssh root@192.168.1.1 << EOF
uname -a
grep "model name" /proc/cpuinfo
grep MemTotal /proc/meminfo
EOF

Выполнение Локального Скрипта на Удаленном Linux Сервере

 bash -s # говорит BASH при запуске, чтобы тот считывал данные со стандартного ввода (перенаправление или конвеер). 

$ ssh [user]@[server] ‘bash -s’ < [local_script]

Запустить Локальный Скрипт ‘local_script.sh’ на Удаленной Машине

$ ssh root@192.168.1.1 ‘bash -s’ < local_script.sh

Источник данных