Синопсис
Во фре пользователь если входит в группу wheel (если конечно при установке он был включен в группу wheel), не ознает, что если нам нужно сделать что-то с правами суперпользователя, например создать другого юзера, то мы можем написать как-то так:
sudo adduser
Так работать не будет, потому что во фре изначально никакого понятия сюдоера нету. Если мы хотим добавить пользователя, то мы должны саначала перейти в суперпользователя и под суперпользователем добавлять нового пользователя (или чего-нибудь еще, что требует суперпользовательских прав):
su Password: root@freebsd:/home/username # adduser
Вот так работать будет, и то если пользователь входит в группу wheel, если же мы попытаемся зайти в другого пользователя из под пользователя не входящего в группу wheel, то нам система откажет. Конечно постоянно переходить из одного пользвателя в другого, чтобы что-то запустить из под суперползователя и потом возвращаться обратно менее удобно, чем просто написать sudo команда. Но есть еще одно неудобство, которое еще хуже чем просто переход туда сюда. Допустим на машине с фрёй есть еще несколько пользователей, которым тоже иногда нужны временные суперползовательские права, но которым не нужно знать пароль рута. В этом случае им придется ждать пока вы вернетесь с работы, чтобы ввести пароль рута, а вот если бы тот другой юзер был сюдоером, то он бы просто ввел свой пароль. Поэтому рано или поздно вопрос о запуске команд через sudo во фре становится злободневным. Чуть выше, когда я писал, что во фре никакого понятия судоера нету, я немножечко слукавил, его нету только по умолчанию, но мы его можем установить.
Установка утилиты sudo
Давайте установим сюдоера на нашей фре. Запустите терминал и введите команду:
whereis sudo /usr/ports/security/sudo
Так мы найдем порт, от куда можно установить утилиту sudo. Теперь переходим в этот порт:
cd /usr/ports/security/sudo
И заходим в суперпользователя командой su (напоминаю, перейти в суперпользователя можно только если пользователь входит в группу wheel):
su Password: root@freebsd: /usr/ports/security/sudo # make install clean
После этого установщик начнет вытягивать исходники, потом их компилировать и затем ставить банарный пакет.
Назначение пользователя сюдоером
После того как все поставилось, осталось еще подредактировать файл /usr/local/etc/sudoers. По этому, пока оставайтесь суперпользователем, перейдите в каталог /usr/local/etc и проверьте, что файл sudoers действительно есть:
cd /usr/local/etc ls -l sudoerd -r--r----- 1 root wheel 3381 Apr 7 22:44 /usr/local/etc/sudoers
Если файл sudoers есть, то ему надо еще включить права на запись, так как по умолчанию он создается с правами на чтение:
чмод u+w sudoers
Теперь откроем его на редактирование:
vim sudoers
Найдите в нем строчку root ALL=(ALL) ALL и добавьте под ней такую же только со своим юзером (строчка 10):
... ## ## Runas alias specification ## ## ## User privilege specification ## root ALL=(ALL) ALL username ALL=(ALL) ALL ## Uncomment to allow members of group wheel to execute any command # %wheel ALL=(ALL) ALL ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL ## Uncomment to allow members of group sudo to execute any command # %sudo ALL=(ALL) ALL ...
Расшифруем строку:
username ALL=(ALL) ALL
Она означает, что для пользователя username разрешено:
Первый ALL означает с каких хостов разрешено выполнять команду sudo. В нашем случае из под всех.
Второй (ALL) означает пользователей, из под которых разрешено выполнять команду sudo. В нашем случае из под любого пользователя. Так же можно написать пользователя и группу, из под которых разрешено выполнять команду sudo, записывается так: (ALL:ALL), что означает из под всех пользователей и групп.
И третий ALL означает команды, которые разрешено выполнять через команду sudo. В нашем случае любую команду.
Сохраните и выйдите из вима:
(Esc) wq
и выйдите из суперпользователя:
exit
Пользуемся утилитой sudo
Теперь чтобы что-то запустить для чего требуются суперпользовательские привилегии нужно вставить перед той командой, которую требуется запустить, команду sudo без перехода в суперпользователя:
sudo команда
Если же вам и это надоело (постоянно вводить sudo перед суперюзерской командой), то можете сделать это один раз, введите:
sudo -s
и теперь вы будете постоянно находиться в режиме суперпользователя до выхода из него командой exit или вводом ctrl+D, при этом, не зная суперпользовательского пароля.