Кто-нибудь знает способ запретить пользователю запускать определенные команды? Например, я хотел бы запретить пользователям копировать данные на сервер и с сервера без прохождения нашего репозитория SVN. (экспорт SVN против scp)
Любые идеи?
Вы не можете (надежно) запретить пользователям запускать определенный список команд.
Они как-нибудь найдут способ обойти ваши ограничения. (Не пытайтесь понять, как - вы никогда не подумаете обо всех возможностях, потому что это бесконечное множество.)
Вы жестяная банка ограничить пользователей только уметь запускать определенный список команд. (Вызвать bash с -r
флаг (или жестко привяжите его к имени rbash
) и обратитесь к разделу «ОГРАНИЧЕННАЯ ОБОЛОЧКА» страница руководства bash.)
Это неприемлемо для реального использования - это все равно, что просить пользователей печатать в боксерских перчатках.
Если их учетные записи настолько повреждены, вы также можете заставить их использовать удаленно запускаемые инструменты управления пакетами, а не предоставлять им доступ к оболочке.
Другой (более жизнеспособный) вариант - сделать область развертывания доступной для записи только с определенным UID и заставить пользователей использовать sudo
для запуска сценария развертывания, который вносит в него изменения.
В Linux (и в Mac OS, являющейся unix-подобной системой) вы можете использовать acl, который расширяет стандартные разрешения на основе «Пользователь-владелец», «Пользователь группы-владельца» и «Другие». Таким образом, вы можете создать дополнительную группу под названием, например, «тестеры», которая отключила бит выполнения для двоичного файла, который вы хотите исключить.
http://www.techrepublic.com/blog/mac/introduction-to-os-x-access-control-lists-acls/1048
Конечно, это не мешает пользователям устанавливать некоторые программы в свой домашний каталог.
Вот Можно ли предотвратить SCP, сохранив при этом доступ по SSH? у вас есть обсуждение, которое тоже может оказаться полезным
HTH