Ограничить выполнение пользователем определенных команд

mysql... | awk '{ print "diff is", $0 }'

Или просто

mysql... 'SELECT CONCAT("diff is ", VALUE) FROM...'

Изнутриawk:

awk 'BEGIN { cmd = "mysql..." }
     { cmd | getline value;
       printf("diff is %s\n", value); # or print "diff is", value;
       close(cmd) }'

Это запустит команду один раз для каждой строки ввода в сценарий awk. Без close()он был бы запущен один раз и давал бы valueзначение каждой последующей строки вывода команды.

Ваш скрипт использует $lastdiffвместо lastdiffс getline. В awk$lastdiffотносится к номеру поля lastdiffтекущей входной записи.

-1
25.08.2019, 13:29
2 ответа

Обычные пользователи не могут изменять сетевые интерфейсы.

напр. мой не -пользователь root может просматривать детали интерфейса с помощьюifconfig:

$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether xx:xx:xx:xx:xx:xx  txqueuelen 1000  (Ethernet)
        RX packets 178399193  bytes 213874320365 (199.1 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 50539358  bytes 36748192570 (34.2 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xba200000-ba21ffff  

но не могу отключить интерфейс:

$ ifconfig eth0 down
SIOCSIFFLAGS: Operation not permitted

Короче говоря, не позволяйте им работать ifconfigкак root (, например. с sudo), и вам не нужно об этом беспокоиться.

1
28.01.2020, 05:08

Вы пробовали запустить /bin/rm? А вы читали предупреждение в начале статьи?

Disclaimer : This is just a hack, not recommended for Actual Production Use

Я бы также прочитал комментарии к этому ответу на дубликат в Stack Overflow.

Если вы хотите на самом деле ограничить пользователя безопасно , вам, вероятно, придется изучить структуру разрешений, такую ​​​​как SELinux или AppArmor.

1
28.01.2020, 05:08

Теги

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