Я хочу создать учетную запись пользователя unix с определенными разрешениями: этот пользователь должен иметь возможность устанавливать программное обеспечение, но не может удалить программное обеспечение. Кроме того, когда пользователь входит в систему, root должен получать уведомление по почте. Возможно?
Я запускаю Debian.
Что касается ограничения прав на управление только установкой программного обеспечения, вы можете использовать sudo: вы разрешаете пользователю запускать инструменты управления пакетами, которые устанавливают. Примерно вам нужно что-то подобное в / etc / sudoers:
Cmnd_Alias SWINST = /path/to/pkg-manager install_action * power_user hostname= NOPASSWD: SWINST
Это позволяет power_user
на компьютере hostname
запускать /path/to/pkg-manager
с первым аргументом install_action
и произвольными дополнительными аргументами, не запрашивая пароль (например, для Debian это переведет на /path/to/apt-get install *
, для распределений на основе SUSE /path/to/zypper in *
).
Следует иметь в виду две вещи:
Менеджер пакетов должен быть хорошо себя вести в том смысле, что он не должен позволять ему передавать несколько действий в одной командной строке (например, pkg-manager install foo, remove bar
полностью разрушит его). Так как менеджеры пакетов также обрабатывают конфликты, даже установка может привести к удалению программного обеспечения, используйте переключатель / конфигурацию, которая отключает это, если это возможно (и см. Комментарий Крейга ниже).
Вы не должны разрешать доступ к низкоуровневым командам обслуживания пакетов, которые могут устанавливать пакет из локального файла. Это позволит пользователю подготовить пакет эскалации привилегий, установить его, а затем вы сможете прогнать свою систему. Вместо этого вы должны убедиться, что с помощью этой команды можно будет установить доверенное программное обеспечение.
Для настольных систем в наши дни часто используется инфраструктура PolicyKit, поэтому это будет другой вариант.
Да, возможно, в последнем варианте каждой строки /etc/passwd
вы указываете оболочку для каждого пользователя. Вы можете написать оболочку и вместо оболочки по умолчанию, такой как bash
или csh
, использовать вашу оболочку (возможно, скрипт оболочки).
Вы меняете значение по умолчанию:
mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash
чтобы:
mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/yourpath/yourshell.sh
Затем вы должны поместить две вещи в yourshell.sh
:
mail
, mutt command
… – прочитать инструкцию) exec /bin/bash -l
Вот мое решение:
Полупривилегированный пользователь запускает скрипт под названием «please-install.sh». аргументы сценария – это имена пакетов или программ.
#!/bin/bash cat <<__EOF__ | mail -s "please install" root@localhost When you get time, please install these programs for me: $@ Thanks, __EOF__
Это имеет преимущество высокотехнологичной нейронной сети, специально обученной в проблемной области (и с миллионами лет эволюции в задачах решения проблем) для оценки всех аспектов безопасности и других практических последствий и реагирования на каждый запрос с решительностью и скоростью, что это заслуживает. например: «нет, я не собираюсь устанавливать этот бит-торрент-клиент на наш производственный веб-сервер».
Если вы хотите получить фантазию, вы можете использовать getopt, чтобы пользователь мог указать параметры приоритета, такие как -l или -low, -h или –high, -u или -urgent.