Запрет выполнения команд linux
Как пользователю запретить выполнять какие либо программы?
Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.Модератор: Bizdelnick
Как пользователю запретить выполнять какие либо программы?
Есть Debian etch + KDE. есть пользователь test. как ему запретить запускать определенные программы? ну допустим kwrite, kedit и т.д. ?хм.. установил kiosk admin tools но не могу найти чтобы тут где-то можно было доступ к конкретным программам ограничить..
подскажите пжлста..
Найти их исполняемые файлы, присвоить им созданную заранее группу, убрать у категории «остальные» права на чтение и выполнение и не включать пользователя test в эту группу. Есть Debian etch + KDE. есть пользователь test. как ему запретить запускать определенные программы? ну допустим kwrite, kedit и т.д. ?
ACL.
Зпретить доступ пользователю тест к выбранным программам/каталогам. Есть Debian etch + KDE. есть пользователь test. как ему запретить запускать определенные программы? ну допустим kwrite, kedit и т.д. ?
ACL.
Зпретить доступ пользователю тест к выбранным программам/каталогам.
что-то не могу разобраться с man'ом.. можете подсказать конкретный пример как запретить юзеру test запускать kwrite ?
Есть Debian etch + KDE. есть пользователь test. как ему запретить запускать определенные программы? ну допустим kwrite, kedit и т.д. ?ACL.
Зпретить доступ пользователю тест к выбранным программам/каталогам.
что-то не могу разобраться с man'ом.. можете подсказать конкретный пример как запретить юзеру test запускать kwrite ?
ACL.
Зпретить доступ пользователю тест к выбранным программам/каталогам.
что-то не могу разобраться с man'ом.. можете подсказать конкретный пример как запретить юзеру test запускать kwrite ?
мдя.. написал же что не получается разобратся с маном.. ( .. проще всего отправтиь на гугл имхо..
Тогда уж проще найти того, кто Вам все настроит. Можно даже каким-либо образом вознаградить его за это. Тогда уж проще найти того, кто Вам все настроит. Можно даже каким-либо образом вознаградить его за это.как я понял людей которые могут помочь все настроить нет. пока попадаются одни шутники.
Найти их исполняемые файлы, присвоить им созданную заранее группу, убрать у категории «остальные» права на чтение и выполнение и не включать пользователя test в эту группу. ACL.Зпретить доступ пользователю тест к выбранным программам/каталогам. Найти их исполняемые файлы, присвоить им созданную заранее группу, убрать у категории «остальные» права на чтение и выполнение и не включать пользователя test в эту группу. ACL.
Зпретить доступ пользователю тест к выбранным программам/каталогам.
1- в admin kiosk tools нельзя запретить запуск kwrite для какого либо юзера.
2- если убрать права на чтение и выполнение у приложеия chmod o-rx `which kwrite` то всеравно кликнув два раза по файлу test.txt откроется kwrite! проверьте если не верите!
3 с ACL пока не получается разобраться, собственно и прошу по этому помощи.. выяснил только то что у kwrite родитель kdeinit, и как ограничить через ACL - хз..
P.S.: как я полнял с ACL можно запретить доступ к директории или ограничить, а вот как запретить запуск kwrite только для одного пользователя так и не пойму. : /
Еще как можно. Запретите выполнение команд по Alt+F2, уберите все лишние программы из меню (в том числе обязательно все эмуляторы терминалов) и отключите ассоциации файлов с kwrite.
2- если убрать права на чтение и выполнение у приложеия chmod o-rx `which kwrite` то всеравно кликнув два раза по файлу test.txt откроется kwrite! проверьте если не верите!Охотно верю, что если сделать что-то неправильно, то нужного результата достигнуть не удастся. Вы выполнили лишь два пункта из четырех, которые дал Rootlexx:
1. Найти их исполняемые файлы
2. присвоить им созданную заранее группу
3. убрать у категории «остальные» права на чтение и выполнение
4. не включать пользователя test в эту группу
Всего-то и нужно было, что дать следующие команды:
Ну и для очистки совести удостовериться, что пользователь test не входит в группу kwrite. Хотя если группа была создана позже пользователя, то маловероятно, что он в нее попадет. Но лучше все же перестраховаться, чем недостраховаться. :) 1- в admin kiosk tools нельзя запретить запуск kwrite для какого либо юзера.
Еще как можно. Запретите выполнение команд по Alt+F2, уберите все лишние программы из меню (в том числе обязательно все эмуляторы терминалов) и отключите ассоциации файлов с kwrite.
2- если убрать права на чтение и выполнение у приложеия chmod o-rx `which kwrite` то всеравно кликнув два раза по файлу test.txt откроется kwrite! проверьте если не верите!Охотно верю, что если сделать что-то неправильно, то нужного результата достигнуть не удастся. Вы выполнили лишь два пункта из четырех, которые дал Rootlexx:
1. Найти их исполняемые файлы
2. присвоить им созданную заранее группу
3. убрать у категории «остальные» права на чтение и выполнение
4. не включать пользователя test в эту группу
Всего-то и нужно было, что дать следующие команды:
Ну и для очистки совести удостовериться, что пользователь test не входит в группу kwrite. Хотя если группа была создана позже пользователя, то маловероятно, что он в нее попадет. Но лучше все же перестраховаться, чем недостраховаться.
по первому пункту - пользователь может пользоваться флешкой в FAT32, на ней лежат файлики .txt и множество других. Так что блокировка Alt+F2 в киосктулз отпадает. (походу я просто плохо объяснил свою проблему..ссори ) ) ассоциации файлов буду рассматривать в последний вариант, так как необходимо "в корне" отрубить пользователю возможность запускать kwrite и т.д.
после этого тыкаю на файл test.txt и он без проблем всеравно открывается kwrite! имхо дело тут не в группах, я теже права отключал для пользователя.. и в группе он или нет - не имеет значения. (пробывал даже chmod a-rx `which kwrite`) поэтому естественно опять не сработало
может я опять что-то не то сделал? Пользователь должен выйти из системы и заново войти. "На лету" эти изменения не применятся.
Хотя могу и ошибаться, проверю-ка у себя. Пользователь должен выйти из системы и заново войти. "На лету" эти изменения не применятся.
странно обычно изменения с правами применяются "на лету" : /
даже после перезагрузки компа спокойно открывается kwrite
и даже так kwrite запускается.. может потому что kwrite как-то связан с kdeinit??
и даже так kwrite запускается.. может потому что kwrite как-то связан с kdeinit??Может. Именно поэтому я и советовал kiosk.
Проверил. В качестве подопытных кроликов использовал kedit и xterm. После манипуляций с группами и правами доступа kedit удалось запустить из главного меню KDE и с помощью Alt+F2, из консоли он запускаться отказался. К слову сказать, он не запускался с помощью Alt+F2 в случае указания полного имени файла. Что касается xterm, то он отказался запускаться в любом случае.
и даже так kwrite запускается.. может потому что kwrite как-то связан с kdeinit??Может. Именно поэтому я и советовал kiosk.
Проверил. В качестве подопытных кроликов использовал kedit и xterm. После манипуляций с группами и правами доступа kedit удалось запустить из главного меню KDE и с помощью Alt+F2, из консоли он запускаться отказался. К слову сказать, он не запускался с помощью Alt+F2 в случае указания полного имени файла. Что касается xterm, то он отказался запускаться в любом случае.
и какой вердикт? получается установка прав запрета на выполнение программ которые входят в состав KDE (таких как kwrite) ничего не дает и их всеравно можно выполнять
kiosk tools я и так юзаю по полной, но просто отключить ассациации для данного типа файлов мне кажется изначально не правильный подход. охото запретить именно запуск kwrite..
Хотел бы ограничить обычных юзеров в выполнении команд, которые им не нужны, (ifconfig,kill,fdisk и тд ) да к ним нужны права sudo, но задача не чтобы не могли изменять, а чтобы не знали что можно поменять, но при этом оставить им возможность создавать/копировать/перемещать их файлы и тп элементарные задачи.
1 вариант: переменную $PATH изменить, но тогда не сложно набрать /sbin/ifconfig
2 вариант: дать права 544 на эти команды, но тогда мне придется сидеть под sudo
> 2 вариант: дать права 744 на эти команды, но тогда мне придется сидеть под sudo
3 вариант: дать права 754 и добавиться в группу
>kill
А она им точно не нужна?
но задача не чтобы не могли изменять, а чтобы не знали что можно поменять, но при этом оставить им возможность создавать/копировать/перемещать их файлы и тп элементарные задачи.
Моя сломать орган мозг.
Если я правильно понял, то либо сделать специальную группу, добавить себя в нее и сделать ее группой-владельцем этих файлов, либо, если это невозможно, отнять у группы и others права на исполнение, а себе их дать отдельно через ACL.
Как раз для этих целей и были придуманны аттрибуты владелец-группа-остальные + отдельные разрешения.
> 3 вариант: дать права 754 и добавиться в группу
Любой может скопировать этот файл и сделать его исполняемым.
ky-san> Любой может скопировать этот файл и сделать его исполняемым.
Куда, eсли $HOME, /tmp, /var/tmp смонтированны с noexec?
> Куда, eсли $HOME, /tmp, /var/tmp смонтированны с noexec?
Это предложение поиграть в телепата или попытка сказать, что на разделах с опцией монтирования noexec нельзя выставить биты на исполнение?
нельзя будет запустить
Намёк был на то, что ни ты, ни я не можем знать, что же у будет у ТС и каким образом.
Как раз для этих целей и были придуманны аттрибуты владелец-группа-остальные + отдельные разрешения.
Он обновится и все прова слетят
.
нет намек был на твой неверный совет. Ты ведь тоже не знаешь что там у ТС, но при этом однозначно заявил, что достаточно скопировать файл и сделать его исполняемым, чтобы обойти ограничение на запуск. Хотя при условии, что ТС собирается ужесточать пользовательское окружение, логично предположить, что будет noexec на ФС доступных для юзеру на запись.
Никто не мешает сделать /lib/ld-linux* /путь/к/бинарнику/без/прав/на/выполнение, если уж на то пошло.
AITap> Никто не мешает сделать /lib/ld-linux* /путь/к/бинарнику/без/прав/на/выполнение, если уж на то пошло.
Я ждал этого. Сделай! И выложи пруф.
Или Вы имели в виду то же самое на noexec? Тогда, конечно, не получится:
AITap> Или Вы имели в виду то же самое на noexec?
Конечно, я только о noexec и говорил.
Совет дважды верный - при защите от исполнения нужно убирать защиту от копирования (вдруг пользователь владеет spool файлами для e-mail в /var/spool/mail | /var/mail) и на файл на noexec разделе всё можно поставить exec биты - т.е. формально сделать его исполняемым.
А ТС, задавая такие вопросы, про noexec вряд ли знает, так что гадать смысла не вижу
> чтобы обойти ограничение на запуск.
Это ты додумал за меня.
>А ТС, задавая такие вопросы, про noexec вряд ли знает, так что гадать смысла не вижу
Да кстати стыдно, не знал, точнее не знал где применяется. Вообщем сегодня очередная попытка поломать (сервер) общедоступный компьютер в школе, закончилась успехом. И не знаю что и делать. На этот раз подобрали пароль к sudo. Ох уж эти детки. блин не знаю как их угомонить. Покамись решил закрыть ssh, выходные думаю пройдут успешно, а что делать в понедельник, когда детки придут учиться и не знаю. :(
Система полномочий в Linux имеет очень важное значение, поскольку благодаря ей можно разделять привилегии между пользователями, ограничить доступ к нежелательным файлам или возможностям, контролировать доступные действия для сервисов и многое другое. В Linux существует всего три вида прав - право на чтение, запись и выполнение, а также три категории пользователей, к которым они могут применяться - владелец файла, группа файла и все остальные.
Эти права применяются для каждого файла, а поскольку все в системе Linux, даже устройства, считаются файлами, то, получается что эти права применимы ко всему. Мы более подробно рассматривали как работают права доступа к файлам Linux в отдельной статье, а этой, я хочу остановиться на команде chmod, которая используется для установки прав.
Команда chmod Linux
Эта команда имеет типичный для команд linux синтаксис, сначала команда, затем опции, а в конце файл или папка, к которой ее нужно применить:
$ chmod опции права /путь/к/файлу
Сначала рассмотрим какими бывают права доступа linux и как они устанавливаются. Пред этим рекомендую прочитать статью про права, ссылка на которую есть выше. Есть три основных вида прав:
Также есть три категории пользователей, для которых вы можете установить эти права на файл linux:
Синтаксис настройки прав такой:
группа_пользователей действие в ид_прав
В качестве действий могут использоваться знаки "+" - включить или "-" - отключить. Рассмотрим несколько примеров:
- u+x - разрешить выполнение для владельца;
- ugo+x - разрешить выполнение для всех;
- ug+w - разрешить запись для владельца и группы;
- o-x - запретить выполнение для остальных пользователей;
- ugo+rwx - разрешить все для всех;
Но права можно записывать не только таким способом. Есть еще восьмеричный формат записи, он более сложен для понимания, но пишется короче и проще. Я не буду рассказывать как считать эти цифры, просто запомните какая цифра за что отвечает, так проще:
Права на папку linux такие же, как и для файла. Во время установки прав сначала укажите цифру прав для владельца, затем для группы, а потом для остальных. Например, :
- 744 - разрешить все для владельца, а остальным только чтение;
- 755 - все для владельца, остальным только чтение и выполнение;
- 764 - все для владельца, чтение и запись для группы, и только чтение для остальных;
- 777 - всем разрешено все.
Каждая из цифр не зависит от предыдущих, вы вбираете именно то, что вам нужно. Теперь давайте рассмотрим несколько опций команды, которые нам понадобятся во время работы:
Теперь, когда вы знаете опции и как настраиваются права доступа chmod, давайте рассмотрим несколько примеров как работает команда chmod linux.
Примеры использования chmod
Я не буду приводить много примеров, так как там и так все более-менее понятно после пояснения правил создания выражений установки прав. Сначала самый частый случай - разрешить выполнения скрипта владельцу:
Или можно воспользоваться цифровой записью:
chmod 766 file
ls - l file
Недостаток цифровой записи в том, что вы не можете модифицировать уже существующие права доступа linux. Например, в первом варианте вы просто добавили флаг выполнения для владельца файла, а все остальные права оставили неизменными. В восьмеричном варианте мы полностью заменили текущие права новыми - все для владельца и чтение/запись для группы и остальных. Как видите, права установлены как и ожидалось. Теперь отключим выполнение владельцем:
И снова проверяем:
Дальше разрешим только чтение всем, кроме владельца:
chmod 744 file
ls -l file
Или отберем все права:
chmod ugo-rwx file
Файлы с правами 000 недоступны никаким пользователям, кроме суперпользователя и владельца. Вернем права обратно:
chmod 755 file
ls -l file
Такая же ситуация с файлами, владельцем которых вы не являетесь, если вы хотите изменить их права - используйте sudo. Из модификаторов прав вы можете конструировать любые последовательности, я думаю тут нет смысла разбирать их все. Для того чтобы поменять права на все файлы в папке используйте опцию -R:
chmod -R ug+rw dir
ls -l dir/
Также вы можете смотреть подробную информацию про вносимые изменения, например:
chmod -Rv ug+rw dir
Выводы
В этой небольшой статье была рассмотрена команда chmod linux. Она очень часто используется наряду с такими командами, как chown и umask для управления правами. Надеюсь, эта информация была полезной для вас. Если у вас остались вопросы, спрашивайте в комментариях!
Команда chmod, команда chown и команда chgrp.
Команда chmod
Команда chmod предназначена для изменения прав доступа файлов и директорий в Linux. Название команды произошло от словосочетания «change mode».
Синтаксис команды chmod следующий:
Разрешения можно задавать двумя способами:
Изменение прав доступа командой chmod
Запись прав доступа числом
В данном формате права доступа задаются не символами rwx, как описано выше, а трехзначным числом. Каждая цифра числа означает определенный набор прав доступа.
- Первая цифра используется для указания прав доступа для пользователя.
- Вторая цифра для группы.
- Третья для всех остальных.
В таблице ниже приводятся все возможные комбинации разрешений rwx и соответсвующие им числа (которые используются в команде chmod):
Число | Разрешения | Символьное обозначение |
---|---|---|
0 | разрешения отсутствуют | --- |
1 | x — запуск | --x |
2 | w — изменение | -w- |
3 | x+w — запуск+изменение | -wx |
4 | r — чтение | r-- |
5 | r+x — чтение+запуск | r-x |
6 | r+w — чтение+изменение | rw- |
7 | r+w+x — чтение+изменение+запуск | rwx |
Рассмотрим использование команды chmod с записью прав доступа числом на примере. Установим для файла права доступа 764:
Это означает (см. таблицу выше), что для файла myfile мы устанавливаем права доступа 7 6 4 , которые означают:
- 7 — права для владельца-пользователя. Владелец файла может читать, изменять и запускать файл (r+w+x).
- 6 — права для группы. Пользователи, которые принадлежат группе могут читать и изменять файл (r+w).
- 4 — права для всех остальных. Все остальные могут только читать файл (r).
Если записать 764 с помощью символов (см. таблицу), то мы получим: «rwxrw-r-».
В таблице ниже приведены некоторые часто используемые значения числовых значений прав доступа:
Числовое обозначение | "rwx"-обозначение | Описание |
---|---|---|
400 | -r-------- | Владелец файла может только читать файл. Для всех остальных все действия с файлом запрещены. |
644 | -rw-r--r-- | Все пользователи могут читать файл. Владелец может изменять файл. |
660 | -rw-rw---- | Владелец и группа могут читать и изменять файл. Для всех остальных все действия с файлом запрещены. |
664 | -rw-rw-r-- | Все могут читать файл. Владелец и группа могут изменять. |
666 | -rw-rw-rw- | Все могут читать и изменять файл. |
700 | -rwx------ | Владелец может читать, изменять и запускать файл. Для всех остальных все действия с файлом запрещены. |
744 | -rwxr--r-- | Все могут читать файл. Владелец может также изменять и запускать файл. |
755 | -rwxr-xr-x | Все могут читать и запускать файл. Владелец может также изменять файл. |
777 | -rwxrwxrwx | Все пользователи могут читать, изменять и редактировать файл. |
Запись прав доступа символами
Как вы можете видеть, в данном формате права доступа задаются символами rwx, но в синтаксисе используются и другие вспомогательные символы, например, математические операции «+» и «-» и такие символы как, например, «g» или «u».
Общий синтаксис можно записать примерно так:
Обозначения для владельцев файла следующие:
Обозначение | Описание |
---|---|
u | Владелец-пользователь. |
g | Группа. |
o | Все остальные. |
a | Вообще все. |
Математические операции означают следующее:
Оператор | Описание |
---|---|
+ | Добавляет к текущим правам доступа новое разрешение. |
- | Удаляет из текущих прав доступа определенное разрешение. |
= | Устанавливает полностью новые разрешения (предыдущие перезаписываются новыми). |
В одной команде можно перечислять владельцев и их разрешения через запятую (см. пример ниже).
Разрешаем владельцу (u) и группе (g) запускать файл (x).
Рекурсивное изменение прав доступа
Если необходимо изменить права доступа на все файлы в директории, включая вложенные директории, то для этого существует опция -R, что означает рекурсивное изменение прав доступа для директорий и их содержимого. Например, изменим права доступа у всех файлов в директории Mydir:
И еще один момент. Если пользователь не является владельцем файла, но ему нужно изменить права доступа у данного файла, то команду chmod необходимо выполнять с использованием sudo, например:
Видео-обзор команды chmod
Команда chown — изменение владельца и группы
Для изменения владельца и группы файла используется команда chown.
Для изменения владельца файла используется следующий синтаксис:
Например, установим для файла myfile нового владельца vasya:
Для изменения владельца и группы файла используется следующий синтаксис:
Например, установим для файла myfile нового владельца vasya и группу sambashare:
Команда chgrp — изменение группы
Есть еще одна команда — chgrp. Она позволяет изменить только группу. Например:
Резюме
В Linux у каждого файла есть права доступа — это разрешения, владелец и группа.
Разрешения задаются для владельца, группы и для всех остальных.
Есть три вида разрешений — r — чтение, w — изменение, x — запуск.
Представьте себе этот сценарий. Вы хотите разрешить пользователю выполнять только определенные задачи и выполнять определенные команды. Пользователь не должен изменять переменные / пути окружения. Он / она не может посещать другие каталоги, кроме своего домашнего каталога, и не может переключаться на других пользователей и т. Д. Пользователь может выполнять только несколько команд, назначенных системным администратором. Это возможно? Да! Здесь на помощь приходит Restricted Shell . Используя Restricted Shell, мы можем легко ограничить доступ пользователя к системе Linux. После того, как вы поместите пользователей в ограниченный режим оболочки, им разрешено выполнять только ограниченный набор команд. В этом кратком руководстве мы поговорим о том, как это сделать в Linux. Я тестировал это руководство на минимальном сервере CentOS 7. Однако он будет работать в большинстве Unix-подобных дистрибутивов.
Что такое Restricted Shell?
Оболочка с ограничениями ограничивает возможности пользователей выполнять большинство команд и изменять текущий рабочий каталог. Ограниченная оболочка налагает следующие ограничения на пользователей:Ограничьте доступ пользователей к системе Linux с помощью оболочки с ограничениями
Сначала создайте символическую ссылку под названием rbash из Bash, как показано ниже. Следующие команды следует запускать от имени пользователя root .
Установите пароль для нового пользователя.
Создайте каталог bin внутри домашней папки нового пользователя.
Теперь нам нужно указать, какие команды может запускать пользователь.
Здесь я позволю пользователю запускать только команды «ls» , «mkdir» и «ping» . Вы можете назначить любые команды по вашему выбору.
Для этого выполните следующие команды:
Теперь вы понимаете, почему мы создали каталог bin на предыдущем шаге. Пользователи не могут запускать никакие команды, кроме трех вышеуказанных команд.
Затем запретите пользователю изменять .bash_profile .
Отредактируйте файл /home/infoit/.bash_profile :
Измените PATH как показано ниже.
Нажмите клавишу ESC и введите : wq, чтобы сохранить и закрыть файл.
Теперь, когда пользователь входит в систему, ограниченная оболочка (rbash) будет запускаться как оболочка входа по умолчанию и читать .bash_profile , который установит PATH в $HOME/bin, чтобы пользователь мог запускать только ls , mkdir и команды ping . Оболочка с ограничениями не позволяет пользователю изменять PATH , а разрешения на .bash_profile не позволяют пользователю изменять среду, чтобы обойти ограничения во время следующего сеанса входа в систему.
Проверка Rbash
Теперь выйдите из системы от имени пользователя root и снова войдите в систему с вновь созданным пользователем, в нашем случае с ostechnix.
Затем запустите несколько команд, чтобы проверить, работает он или нет. Например, я хочу очистить Терминал.
Для этого я запустил:
Sample output:
Вы не можете использовать команду cd для перехода в другой каталог.
Пример вывода:
Пример вывода:
Кроме этих трех команд, пользователь ничего не может выполнять. Он / она полностью под вашим контролем.
Разрешить пользователям новые команды
Если вы хотите назначить пользователю больше команд, выйдите из системы текущего пользователя и снова войдите в систему как пользователь root и назначьте команды, как показано ниже.
Например, чтобы позволить пользователю (т.е. ostechnix) выполнять команду rm , выполните следующую команду от имени пользователя root .
Теперь пользователь может использовать команду «rm».
Для получения дополнительных сведений см. Справочные страницы по приведенной ниже ссылке.
Читайте также: