Данная заметка не является способом запрещения запуска 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.me/tips/info/2780.shtml
man wine
WINEPREFIX
Первую строку хоть осиль.
Я понимаю, что никто не читает ничего кроме кода и цифр, но все таки
спасибо.
поржал.Автор даю наколочку
почитать про права которые можно устанавливать. Особенно посмотреть в сторону прав на выполнение,
и как их можно ставить для групп пользователей.
> спасибо.
> поржал.
> Автор даю наколочку
> почитать про права которые можно устанавливать. Особенно посмотреть в сторону прав на
> выполнение,
> и как их можно ставить для групп пользователей.Про права root'а почитайте.
Ога.
Особенно про то как созданные пустой .wine остановит рута от заупка самого wine а
> Ога.
> Особенно про то как созданные пустой .wine остановит рута от заупка самого
> wine аВы, видимо, новичок в linux. Просто опыта не хватает.
На Ваш вопрос ответ: ДА. Остановит. А почему? - Вам лучше догадаться самому.
>> Ога.
>> Особенно про то как созданные пустой .wine остановит рута от заупка самого
>> wine а
> Вы, видимо, новичок в linux. Просто опыта не хватает.
> На Ваш вопрос ответ: ДА. Остановит. А почему? - Вам лучше догадаться
> самому.PS. Ответ содержится в авторском небольшом тексте.
> спасибо. поржал.Удобно ли копытами на клавиатуре печатать, а?
А то!
Может просто не ставить wine на боевые сервера и не давать пароль рута всем подряд?
И не только на сервера!
Самый верный способ предотвращения запуска... - снести вайн.
> Может просто не ставить wine на боевые сервера и не давать пароль
> рута всем подряд?Лет 15-5 назад иногда приходилось ставить wine и на "боевые серверы" (ради некоей проги). Нынче все проще (слава Богу). Производители железок/драйверов/софта теперь учитывают и linux.
А вот давать/не_давать пароль рута всем подряд - это личное демократическое дело. Не будем вмешивать сюда политику. :)
> Может просто не ставить wine на боевые сервера и не давать пароль
> рута всем подряд?На desktop у вас Windows, да? Всё ясно.
Топор - лучшее средство от проблем!Описали бы лучше:
"Предотвращение запуска компьютера любым пользователем"
"Предотвращение запуска компьютера имея рутовый пароль"
"Предотвращение запуска компьютера имея доступ к рубильнику на трансфрматорной подстанции и рутовый пароль"
"Предотвращение запуска компьютера имея ГОЛОВУ"
> Топор - лучшее средство от проблем!
> Описали бы лучше:
> "Предотвращение запуска компьютера любым пользователем"
> "Предотвращение запуска компьютера имея рутовый пароль"
> "Предотвращение запуска компьютера имея доступ к рубильнику на трансфрматорной подстанции
> и рутовый пароль"
> "Предотвращение запуска компьютера имея ГОЛОВУ"Описали бы лучше, как заставить комментаторов предварительно ВНИМАТЕЛЬНО прочитать сабж.
(хотя бы первую строку)
А зачем пользователь случайно ставит WINE и не желает её случайно запускать?Ещё и случайно под рутом и слуайно на сервере!
Или это случайный пользователь?
на абсурдный совет - абсурдный коментА потом из-за случайных пользователей случайные перебои в работе серверов возникают.
Спасибо за случайный совет :)
Или что-то вроде такого:
mv /usr/bin/wine /usr/bin/nowine ; chmod -x /usr/bin/nowine
А зачем? Это не позволит достичь поставленных автором целей, и, вообще говоря, первое же обновление Wine вернёт его на место.
Гы.
А вот почти правильное решение:
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 в домашний каталог
Можно ещё добавить специальную группу для использования компиляторов.
> Гы.
> А вот почти правильное решение:
> 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.
СпИцИалисты по безопасности.
Уволил бы вас сразу за такое "решение".
А по подробнее, что LD_PRELOAD может противопоставить noexec?
$ 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
Уговорили :)$ 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'.
В какой среде это надо выполнять? Apparmor или SELinux надо при этом отключать?
У меня упрямо выдает:
error while loading shared libraries
Default CentOS 6.4 i686, SeLinux=disabled.Не вижу смысла в нём на домашней машине - не хочу за непонятные плюсы терять производительность.
Как это поможет от запуска рутом?
Гы номер 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, а "защита" от случайного запуска wineю
Ну смотрите, по логике, если wine будет иметь имя, которое знаете только вы сами, то уже вероятность случайного запуска из-за внешних программ упадет в разы. Или нет?
Да, да. Согласен, давайте и rm переименуем. А то вдруг в батнике вендовом кто-то пропишет bash -c rm -rf /
У меня wine как обработчик *.exe прописан ... ну?
Имхо нужно патчить вайн, чтобы от рута не запускался. Раньше он и сам отваливался с предупреждением о том, что от рута так низзя. Сейчас вроде и от рута работает. А фокус с файликом - это костыль в чистом виде. Это можно легко обойти.
> Имхо нужно патчить вайн, чтобы от рута не запускался. Раньше он и
> сам отваливался с предупреждением о том, что от рута так низзя.
> Сейчас вроде и от рута работает. А фокус с файликом -
> это костыль в чистом виде. Это можно легко обойти.Для desktop - очень даже нормальное решение. Сам я wine не пользую, но понимаю, что часто возникает ситуация, когда у тебя запущено несколько xterm и в одном из них ты под root! и выполняешь команду, которую под root давать не стоит.
Предложенное решение - это нормальное решение для домашних раб.станций, которые юзуют wine, и не хотят, чтобы wine "вдруг" запустился из под root.
Ещё раз для особо одарённых - это не _защита_, а предотвращение.
> это костыль в чистом виде. Это можно легко обойти.Это, скорее, как предохранитель на оружии — защита от собственной ошибки или неосторожности, а не для ограничения доступа.
Статью писал хакирЪ. Решил задачу путем нае....лова программы :).
Хорошее решение. Необычное и простое. To hack в чистом виде.
alias wine=`[ "$EUID" == 0 ] && false`;
> alias wine=`[ "$EUID" == 0 ] && false`;это конечно проще команды touch ~/.wine :)
>> 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 останется прежним по отношению к файлику .wine, а делаем ровно то, что подразумеваем: проверяем EUID и в зависимости от него принимаем решение.
Кстати, что вы будете делать, если в системе не один рут и у них не одна и та же домашняя директория? А что если WINEPREFIX вдруг определен?
P.S.
Предложенное решение показывало верный ход мыслей, но оно не до конца верно. Правильным будет что-то такое:alias wine=`[ "$EUID" == 0 ] || /usr/bin/wine`;
> alias wine=`[ "$EUID" == 0 ] && false`;#tcsh - или еще какой шел и увы и ах...
В этом топике - троллинг все, начиная от touch ~/.wine до /root/.wine.В противном случае, все еще печальнее.
> В этом топике - троллинг всеПоздравляю, ты - тролль!
Это троллинг вайна ;-)
виндовое решение какоето :)
Можно ещё Apparmor покрутить.