URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 90813
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Предотвращение запуска Wine любым п..."

Отправлено auto_tips , 11-Июл-13 22:29 
Данная заметка не является способом запрещения запуска Windows-приложений из-под Wine, она служит лишь целью предотвращения запуска Wine любым пользователем, который не желает случайно это сделать.

Простейший пример, связанный с безопасностью: известно, что крайне нежелательно запускать Windows приложения из-под  пользователя root, ибо Wine в этом случае имеет доступ ко всем ресурсам компьютера. Учитывая так же, что Windows-приложения в Wine могут выполнять любые команды Unix, то можно представить масштаб возможных проблем при запуске вредоносного ПО.

Решение крайне простое. В домашней директории пользователя достаточно создать пустой файл ".wine" (без кавычек). В этом случае запуск Wine приведёт к ошибке:

   # wine stduviewer.exe

   wine: /root/.wine is not a directory

Никакие другие действия выполнять больше не нужно.

URL:
Обсуждается: http://www.opennet.ru/tips/info/2780.shtml


Содержание

Сообщения в этом обсуждении
"Предотвращение запуска Wine любым пользователем"
Отправлено Аноним , 11-Июл-13 22:29 
man wine
WINEPREFIX

"Предотвращение запуска Wine любым пользователем"
Отправлено Аноним , 13-Июл-13 19:07 
Первую строку хоть осиль.
Я понимаю, что никто не читает ничего кроме кода и цифр, но все таки

"Предотвращение запуска Wine любым пользователем"
Отправлено demimurych , 11-Июл-13 22:38 
спасибо.  
поржал.

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


"Предотвращение запуска Wine любым пользователем"
Отправлено konst , 12-Июл-13 20:51 
> спасибо.
> поржал.
> Автор даю наколочку
> почитать про права которые можно устанавливать. Особенно посмотреть в сторону прав на
> выполнение,
> и как их можно ставить для групп пользователей.

Про права root'а почитайте.


"Предотвращение запуска Wine любым пользователем"
Отправлено demimurych , 14-Июл-13 09:14 
Ога.
Особенно про то как созданные пустой .wine остановит рута от заупка самого wine а

"Предотвращение запуска Wine любым пользователем"
Отправлено konst , 15-Июл-13 01:35 
> Ога.
> Особенно про то как созданные пустой .wine остановит рута от заупка самого
> wine а

Вы, видимо, новичок в linux. Просто опыта не хватает.
На Ваш вопрос ответ: ДА. Остановит. А почему? - Вам лучше догадаться самому.


"Предотвращение запуска Wine любым пользователем"
Отправлено konst , 15-Июл-13 01:39 
>> Ога.
>> Особенно про то как созданные пустой .wine остановит рута от заупка самого
>> wine а
> Вы, видимо, новичок в linux. Просто опыта не хватает.
> На Ваш вопрос ответ: ДА. Остановит. А почему? - Вам лучше догадаться
> самому.

PS. Ответ содержится в авторском небольшом тексте.


"Предотвращение запуска Wine любым пользователем"
Отправлено mihalych , 12-Июл-13 22:01 
> спасибо. поржал.

Удобно ли копытами на клавиатуре печатать, а?


"Предотвращение запуска Wine любым пользователем"
Отправлено Аноним , 22-Окт-13 16:24 
А то!

"Предотвращение запуска Wine любым пользователем"
Отправлено daemontux , 12-Июл-13 09:28 
Может просто не ставить wine на боевые сервера и не давать пароль рута всем подряд?

"Предотвращение запуска Wine любым пользователем"
Отправлено past , 12-Июл-13 12:16 
И не только на сервера!
Самый верный способ предотвращения запуска... - снести вайн.

"Предотвращение запуска Wine любым пользователем"
Отправлено konst , 13-Июл-13 03:30 
> Может просто не ставить wine на боевые сервера и не давать пароль
> рута всем подряд?

Лет 15-5 назад иногда приходилось ставить wine и на "боевые серверы" (ради некоей проги). Нынче все проще (слава Богу). Производители железок/драйверов/софта теперь учитывают и linux.

А вот давать/не_давать пароль рута всем подряд - это личное демократическое дело. Не будем вмешивать сюда политику. :)



"Предотвращение запуска Wine любым пользователем"
Отправлено Иван Иванович Иванов , 18-Июл-13 01:48 
> Может просто не ставить wine на боевые сервера и не давать пароль
> рута всем подряд?

На desktop у вас Windows, да? Всё ясно.


"Предотвращение запуска Wine любым пользователем"
Отправлено Alan Cox , 22-Июл-13 16:34 
Топор - лучшее средство от проблем!

Описали бы лучше:

"Предотвращение запуска компьютера любым пользователем"
"Предотвращение запуска компьютера имея рутовый пароль"
"Предотвращение запуска компьютера имея доступ к рубильнику на трансфрматорной подстанции и рутовый пароль"
"Предотвращение запуска компьютера имея ГОЛОВУ"


"Предотвращение запуска Wine любым пользователем"
Отправлено konst , 23-Июл-13 03:05 
> Топор - лучшее средство от проблем!
> Описали бы лучше:
> "Предотвращение запуска компьютера любым пользователем"
> "Предотвращение запуска компьютера имея рутовый пароль"
> "Предотвращение запуска компьютера имея доступ к рубильнику на трансфрматорной подстанции
> и рутовый пароль"
> "Предотвращение запуска компьютера имея ГОЛОВУ"

Описали бы лучше, как заставить комментаторов предварительно ВНИМАТЕЛЬНО прочитать сабж.
(хотя бы первую строку)


"Предотвращение запуска Wine любым пользователем"
Отправлено Alan Cox , 29-Июл-13 14:02 
А зачем пользователь случайно ставит WINE и не желает её случайно запускать?

Ещё и случайно под рутом и слуайно на сервере!

Или это случайный пользователь?


на абсурдный совет - абсурдный комент

А потом из-за случайных пользователей случайные перебои в работе серверов возникают.


Спасибо за случайный совет :)


"Предотвращение запуска Wine любым пользователем"
Отправлено Igor , 12-Июл-13 11:07 
Или что-то вроде такого:
mv /usr/bin/wine /usr/bin/nowine ; chmod -x /usr/bin/nowine


"Предотвращение запуска Wine любым пользователем"
Отправлено askh , 27-Июл-13 00:41 
А зачем? Это не позволит достичь поставленных автором целей, и, вообще говоря, первое же обновление Wine вернёт его на место.

"Предотвращение запуска Wine любым пользователем"
Отправлено qqq , 12-Июл-13 11:10 
Гы.
А вот почти правильное решение:
mount -o remount,noexec /home (ну или mount -u -o noexec /usr/home)
chgrp wine /usr/bin/wine (chgrp wine /usr/local/bin/wine)
chmod 550 /usr/bin/wine (chmod 550 /usr/local/bin/wine)

перемонтирование /home с noexec - "защитит" от установки wine в домашний каталог

Можно ещё добавить специальную группу для использования компиляторов.


"Предотвращение запуска Wine любым пользователем"
Отправлено Злыдень , 18-Июл-13 01:47 
> Гы.
> А вот почти правильное решение:
> mount -o remount,noexec /home (ну или mount -u -o noexec /usr/home)
> chgrp wine /usr/bin/wine (chgrp wine /usr/local/bin/wine)
> chmod 550 /usr/bin/wine (chmod 550 /usr/local/bin/wine)
> перемонтирование /home с noexec - "защитит" от установки wine в домашний каталог
> Можно ещё добавить специальную группу для использования компиляторов.

Откройте для себя LD_PRELOAD.

СпИцИалисты по безопасности.

Уволил бы вас сразу за такое "решение".


"Предотвращение запуска Wine любым пользователем"
Отправлено Аноним , 18-Июл-13 21:06 
А по подробнее, что LD_PRELOAD может противопоставить noexec?

"Предотвращение запуска Wine любым пользователем"
Отправлено Аноним , 18-Июл-13 21:17 
$ cd ~/tmp
$ gcc -fPIC -c -o test.o -x c - <<EOF
#include <stdio.h>
void _init(void) { printf( "TEST\n" ); }
EOF
$ gcc test.o -shared -nostdlib -lgcc -o libtest.so
$ mount | grep ~/tmp
none on /home/x/tmp type tmpfs (rw,noexec,nosuid,nodev,size=2g,uid=1000,gid=1000,mode=0700)
$ LD_PRELOAD=~/tmp/libtest.so uname
ERROR: ld.so: object '/home/x/tmp/libtest.so' from LD_PRELOAD cannot be preloaded: ignored.
Linux
$ su -c "mount -o remount,exec /home/x/tmp"
Password:
$ mount | grep ~/tmp
none on /home/x/tmp type tmpfs (rw,size=2g,uid=1000,gid=1000,mode=0700)
$ LD_PRELOAD=~/tmp/libtest.so uname
TEST
Linux

"Предотвращение запуска Wine любым пользователем"
Отправлено Иван Иванович Иванов , 20-Июл-13 14:21 
Уговорили :)

$ cd tmp
$ wget http://www.win.tue.nl/~aeb/linux/hh/fixelf.c
$ cp /usr/bin/bc /tmp
$ gcc fixelf.c -o fixelf
$ ./fixelf bc
# mount -o remount,noexec /tmp
$ mount | grep tmp
tmpfs on /tmp type tmpfs (rw,noexec,nosuid,nodev)
$ /lib/ld-linux.so.2 ./fixelf.out
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.


"Предотвращение запуска Wine любым пользователем"
Отправлено Аноним , 29-Июл-13 09:47 
В какой среде это надо выполнять? Apparmor или SELinux надо при этом отключать?
У меня упрямо выдает:
error while loading shared libraries

"Предотвращение запуска Wine любым пользователем"
Отправлено Иван Иванович Иванов , 01-Авг-13 12:58 
Default CentOS 6.4 i686, SeLinux=disabled.

Не вижу смысла в нём на домашней машине - не хочу за непонятные плюсы терять производительность.


"Предотвращение запуска Wine любым пользователем"
Отправлено XoRe , 18-Июл-13 12:24 
Как это поможет от запуска рутом?

"Предотвращение запуска Wine любым пользователем"
Отправлено qqq , 12-Июл-13 11:13 
Гы номер 2:
пользователь потом сделает у себя в каталоге rm -f .wine и будет счастлив, даже без WINEPREFIX:
Маленькая демонстрация:

igorr:~>ls -ld QQQQ
----------  1 root  wheel  0 12 jul 11:12 QQQQ
igorr:~>pwd
/usr/home/igorr
igorr:~>id
uid=1001(igorr) gid=1001(igorr) groups=1001(igorr)
igorr:~>rm -f QQQQ
igorr:~>ls -ld QQQQ
ls: QQQQ: No such file or directory


"Предотвращение запуска Wine любым пользователем"
Отправлено qqq , 12-Июл-13 11:15 
А теперь нужно принести извинения: там в заметке сказано, что защита не от запуска wine, а "защита" от случайного запуска wineю

"Предотвращение запуска Wine любым пользователем"
Отправлено Igor , 12-Июл-13 11:23 
Ну смотрите, по логике, если wine будет иметь имя, которое знаете только вы сами, то уже вероятность случайного запуска из-за внешних программ упадет в разы. Или нет?

"Предотвращение запуска Wine любым пользователем"
Отправлено mihalych , 12-Июл-13 22:11 
Да, да. Согласен, давайте и rm переименуем. А то вдруг в батнике вендовом кто-то пропишет bash -c rm -rf /

"Предотвращение запуска Wine любым пользователем"
Отправлено Злыдень , 18-Июл-13 01:46 
У меня wine как обработчик *.exe прописан ... ну?

"Предотвращение запуска Wine любым пользователем"
Отправлено mihalych , 12-Июл-13 22:20 
Имхо нужно патчить вайн, чтобы от рута не запускался. Раньше он и сам отваливался с предупреждением о том, что от рута так низзя. Сейчас вроде и от рута работает. А фокус с файликом - это костыль в чистом виде. Это можно легко обойти.

"Предотвращение запуска Wine любым пользователем"
Отправлено konst , 13-Июл-13 02:48 
> Имхо нужно патчить вайн, чтобы от рута не запускался. Раньше он и
> сам отваливался с предупреждением о том, что от рута так низзя.
> Сейчас вроде и от рута работает. А фокус с файликом -
> это костыль в чистом виде. Это можно легко обойти.

Для desktop - очень даже нормальное решение. Сам я wine не пользую, но понимаю, что часто возникает ситуация, когда у тебя запущено несколько xterm и в одном из них ты под root! и выполняешь команду, которую под root давать не стоит.

Предложенное решение - это нормальное решение для домашних раб.станций, которые юзуют wine, и не хотят, чтобы wine "вдруг" запустился из под root.


"Предотвращение запуска Wine любым пользователем"
Отправлено Злыдень , 18-Июл-13 01:43 
Ещё раз для особо одарённых - это не _защита_, а предотвращение.

"Предотвращение запуска Wine любым пользователем"
Отправлено askh , 27-Июл-13 00:52 
> это костыль в чистом виде. Это можно легко обойти.

Это, скорее, как предохранитель на оружии — защита от собственной ошибки или неосторожности, а не для ограничения доступа.


"Предотвращение запуска Wine любым пользователем"
Отправлено Аноним , 13-Июл-13 14:20 
Статью писал хакирЪ. Решил задачу путем нае....лова программы :).

"Предотвращение запуска Wine любым пользователем"
Отправлено catgirl , 16-Июл-13 20:56 
Хорошее решение. Необычное и простое. To hack в чистом виде.

"Предотвращение запуска Wine любым пользователем"
Отправлено pavlinux , 17-Июл-13 20:25 
alias wine=`[ "$EUID" == 0 ] && false`;

"Предотвращение запуска Wine любым пользователем"
Отправлено konst , 17-Июл-13 21:07 
> alias wine=`[ "$EUID" == 0 ] && false`;

это конечно проще команды touch ~/.wine :)



"Предотвращение запуска Wine любым пользователем"
Отправлено pavlinux , 18-Июл-13 14:16 
>> alias wine=`[ "$EUID" == 0 ] && false`;
> это конечно проще команды touch ~/.wine :)

$ export HOME=/tmp
и пиcец, нету больше вашей /root/.wine

$ export EUID=666
bash: EUID: доступная только на чтение переменная

Более того, есть переменная WINEPREFIX, которая чудно меняется на что приспичит.

$ export WINEPREFIX=$HOME/.wineshit
$ wine

опа, и нам пох на touch ~/.wine;
---

Поэтому ваш костыль нужно дорабатывать

export WINEPREFIX=$HOME/.wine && readonly WINEPREFIX HOME && touch $WINEPREFIX;


"Предотвращение запуска Wine любым пользователем"
Отправлено Аноним , 29-Июл-13 23:52 
Это логичнее. Мы не надеемся на то, что поведение Wine останется прежним по отношению к файлику .wine, а делаем ровно то, что подразумеваем: проверяем EUID и в зависимости от него принимаем решение.
Кстати, что вы будете делать, если в системе не один рут и у них не одна и та же домашняя директория? А что если WINEPREFIX вдруг определен?


P.S.
Предложенное решение показывало верный ход мыслей, но оно не до конца верно. Правильным будет что-то такое:

alias wine=`[ "$EUID" == 0 ] || /usr/bin/wine`;


"Предотвращение запуска Wine любым пользователем"
Отправлено Аноним , 08-Авг-13 07:40 
> alias wine=`[ "$EUID" == 0 ] && false`;

#tcsh - или еще какой шел и увы и ах...


"Предотвращение запуска Wine любым пользователем"
Отправлено erera22 , 18-Июл-13 13:48 
В этом топике - троллинг все, начиная от touch ~/.wine до /root/.wine.

В противном случае, все еще печальнее.


"Предотвращение запуска Wine любым пользователем"
Отправлено pavlinux , 18-Июл-13 18:24 
> В этом топике - троллинг все

Поздравляю, ты - тролль!


"Предотвращение запуска Wine любым пользователем"
Отправлено Аноним , 25-Июл-13 22:47 
Это троллинг вайна ;-)

"Предотвращение запуска Wine любым пользователем"
Отправлено лопстер , 29-Июл-13 14:31 
виндовое решение какоето :)

"Предотвращение запуска Wine любым пользователем"
Отправлено Омский линуксоид , 30-Июл-13 00:19 
Можно ещё Apparmor покрутить.