Разрешить пользователям определенной группы запускать команду без sudo

11

Я знаю, как отредактировать / etc / sudoers, чтобы я мог запускать команду как sudo без необходимости ввода пароля, однако есть способ разрешить запуск программы полностью без sudo всеми пользователями группы. (Программы, которые я хочу запустить, это "mount" и "umount").

w4etwetewtwet
источник
Какая у тебя ОС? Вы пытаетесь смонтировать раздел NTFS, EXT или оптический привод?
Нейт

Ответы:

13

Предположим , что я хотел бы добавить группу пользователей , которым разрешено работать mountи umountбез паролей. Поэтому я сначала хочу добавить группу под названием «любое имя»

sudo groupadd anyname

Далее нам нужно отредактировать /etc/groupи добавить пользователей

anyname:x:407:

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

anyname:x:407:user1,user2,...

Теперь нам нужно настроить Судо , чтобы члены группы «имя_узел» на самом деле Призовите mountи umountкоманды.

Вам просто нужно добавить следующие строки в / etc / sudoers

%anyname ALL=NOPASSWD: /sbin/mount, /sbin/umount

Теперь не sudo mountбуду спрашивать пароль, но так как это постоянная боль при наборе кода sudo, мы можем избежать его, выполнив следующее:

Я могу создать следующий скрипт с именем "/ usr / bin / mount" (и аналогичный скрипт для umount)

#! /bin/sh
sudo /sbin/mount $*

Чтобы сделать это немного более безопасным, мы могли бы изменить владельца этих сценариев на группу «anyname».

chgrp anyname /usr/bin/mount /usr/bin/umount

а затем сделать их исполняемыми только для группы "anyname"

chmod g+x /usr/bin/mount  /usr/bin/umount

РЕДАКТИРОВАТЬ : В зависимости от используемой ОС, пожалуйста, проверьте, где расположены команды mount и umount. Это может быть в / bin / вместо /sbin. Так что вам может потребоваться внести необходимые изменения

ВАЖНО : КСТАТИ не запускайте сценарий в системах на основе Arch, где все папки bin связаны между собой.

Stormvirux
источник
1
Спасибо. Я на самом деле реализовал с помощью глобального .bashrc, который содержит функцию mount, которая выглядит следующим образом: mount {sudo mount $ *}
w4etwetewtwet