Sudoers как root

Sudoers как root Техника

Содержание
  1. Интерактивная система просмотра системных руководств (man-ов)
  2. Что такое sudo
  3. Содержание
  4. СОВЕТЫ ПО БЕЗОПАСНОСТИ
  5. ПЕРЕВОД
  6. Graphical helpers
  7. 3.1. GNOME
  8. 3.2. KDE
  9. Использование псевдонимов
  10. Using the su command
  11. Using sudo
  12. 2.1. Sudo shell
  13. Запуск графических программ с правами администратора
  14. Index
  15. ТАКЖЕ
  16. Basic sudo
  17. Sudo не спрашивает пароль
  18. НАЗВАНИЕ
  19. Получение прав суперпользователя для выполнения нескольких команд
  20. Время действия введённого пароля
  21. Using sudo without a password
  22. Edit /etc/sudoers
  23. Alternate method: Create a new file in /etc/sudoers.d
  24. Использование команды
  25. Настройка sudo и прав доступа на выполнение различных команд
  26. Разрешение пользователю выполнять команду без ввода пароля
  27. Создание синонимов (alias`ов)
  28. For more information
  29. Использование традиционного root аккаунта и команды su
  30. Ubuntu 11.04 и младше
  31. Ubuntu 11.10 и старше
  32. Ссылки
  33. ПРЕДОСТЕРЕЖЕНИЯ
  34. 1 Sudo shell
  35. Содержимое файла /etc/sudoers
  36. How To Become Root
  37. Где используется sudo
  38. ПРИМЕРЫ
  39. Запуск программ с правами администратора в терминале
  40. Enable sudo during system installation
  41. Использование Sudo
  42. Consolehelper
  43. Вместо заключения
  44. Consolehelper

Интерактивная система просмотра системных руководств (man-ов)


  • >> sudoers (5) ( Русские man: Форматы файлов )
  • sudoers (5) ( Linux man: Форматы файлов )
  •  

    This article covers:

    • How to configure sudo access on Red Hat Enterprise Linux (RHEL) and CentOS so you won’t need to use su and keep entering the root password
    • Configuring sudo to not ask for your password
    • How to enable sudo during system installation
    • Why sudo seems to work out of the box for some users and not others

    Что такое sudo

    sudo — это утилита, предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию, при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий, что и root. Однако такое поведение sudo легко изменить, об этом см. ниже в пункте про настройку sudo.

    [userA@rhel7 ~]$ su -
    Password:

    visudo command cannot allow to edit /etc/sudoers file simultaneously by just locking the file and if someone tries to access the same it will get a message to try later. 

    [root@rhel7 ~]# visudo
    visudo: /etc/sudoers busy, try again later

    It also checks the syntax of edits and provide basic sanity checks which are very helpful. If it identifies any error, then visudo won’t allow to save the file with edits. 

    root    ALL=(ALL:ALL) ALL

    This allows root to run any command anywhere.Meaning of this line is –  

    username    hosts=(users:groups)    commands
    userA   ALL=(ALL:ALL)   ALL

    If you wish to use command without password then use PASSWD parameter –  

    userA    ALL(ALL:ALL)    NOPASSWD:ALL
    userA   ALL=(root)      /usr/bin/systemctl, /usr/sbin/httpd start stop restart
    [root@rhel7 ~]# su - userA
    Last login: Thu Sep 13 15:01:18 EDT 2018 on pts/0
    [userA@rhel7 ~]$ sudo -u root systemctl stop httpd
    [sudo] password for userA:
    [userA@rhel7 ~]$

    Note – We can also use vim with visudo.  

    export VISUAL=vim; visudo

    Using nano with visudo  

    export VISUAL=nano; visudo
    %wheel  ALL=(ALL)       ALL
    usermod -aG wheel username

    Данная статья – это продолжение темы, посвящённой утилите sudo, начатой материалами, знакомящими с данной командой и некоторыми её опциями. Ниже попробуем рассказать о настройках утилиты sudo, которые могут применяться в её отношении.

    Настройки sudo по большей части находятся в файле /etc/sudoers. Для внесения изменений в этот файл крайне нежелательно использовать обычный редактор текста. Дело в том, что некорректный синтаксис файла sudoers запросто может навредить операционной системе в части повышения уровня полномочий учётных записей и их действий. Для редактирования файла sudoers существует специальная команда – visudo. Данная команда использует штатный текстовый редактор, но при сохранении внесённых в файл изменений производит проверку синтаксиса.

    Здесь есть один интересный момент. Команда visudo обычно использует текстовый редактор vi. Но, например, в Ubuntu visudo открывает файл при помощи nano. И, несмотря на это, операционная система сохраняет возможность заменить использующийся редактор. В Ubuntu команда для изменения редактора выглядит следующим образом:

    $ sudo update-alternatives --config editor

    Здесь нужно просто ввести соответствующую цифру, либо нажать <Enter>, чтобы не вносить изменений:

    sudo update-alternatives --config editor - Sudo: настройка файла /etc/sudoers

    Пользуюсь Linux (Ubuntu в связке с KDE) не давно.
    В процессе установки apache2 + php5 + mysql скорее всего где то накосячил, так как перестал нормально работать root терминал. Зайти в него сейчас можно, но только через обычный с использованием команды su и ввода пароля. К тому же перестала работать команда sudo, терминал начал воспринимать команды без нее, с sudo просто не работает — пишет «sudo: no valid sudoers sources found, quitting«.
    И что самое не приятное перестали работать программы для которых необходимы были права root, т.е. для работы которых необходимо было ранее вводить пароль: Synaptic, Менеджер обновлений и другие. В «Системном администрировании» в управление пользователями зайти не могу. В общем что произошло с ОС для меня тайна покрытая мраком.
    Искал в гугле, но ответов которые помогли бы решить данную проблему так и не нашел.

    visudo показывает такую инфу:

    Если ввести id, то выдает:
    uid=0(root) gid=0(root) группы=0(root)

    Работаю под одним пользователем, он насколько я понимаю и входит в группу root.
    Команда cat /etc/hosts показывает:

    В общем, что слетело не очень понятно. Если кто то даст дельный совет буду благодарен.
    ————————————————

    Решил возникшую проблему так как предлагали apl и yoik1984 . Всем спасибо за участие в обсуждении.
    Зашел через LiveCD и сменил права /etc/sudoers на root . А также дал root всей папке etc права которой менял при настраивании LAMP, а обратно сменить что то не подумал.

    Содержание

    В любой Linux-системе обязательно есть один привилегированный пользователь — root. Этот пользователь имеет права на выполнение любых действий, удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны, все остальные пользователи системы обычно не имеют большинства необходимых прав, например, прав на установку программ, поскольку это является административной операцией, права на которую есть только у root. Ещё одной распространённой операцией, доступной только суперпользователю, является копирование и изменение файлов в системных папках, куда обычный пользователь доступа не имеет.

    Раньше данная проблема решалась достаточно просто: при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду su. Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе, такая схема работает неплохо, однако у неё есть много существенных недостатков, в частности, невозможно никак (точнее, очень сложно) ограничивать административные привилегии только определённым кругом задач.

    Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита sudo.

    В Ubuntu по умолчанию root аккаунт вообще отключён, т.е. вы никаким способом не сможете попасть под root, не включив его. root именно что отключён, т.е. он присутствует в системе, под него всего лишь нельзя зайти. Если вы хотите вернуть возможность использовать root, смотрите ниже пункт о включении root аккаунта.

    СОВЕТЫ ПО БЕЗОПАСНОСТИ

    В целом исключение команд из ALL,
    с использованием оператора !, не эффективно. Пользователь может тривиально это обойти, копируя желаемые команды с разными именами, и затем их выполнять. Например:

    В действительности не реально предотвратить выполнение bill команд, перечисленных в SU или SHELLS, так как он может запросто их скопировать под разными названиями, или использовать расширения оболочки из редактора или другой программы. Поэтому этот вид ограничений должен быть тщательно изучен (и подкреплен системной политикой).
     

    ПЕРЕВОД

    sass@altlinux.ru

     

    Graphical helpers

    3.1. GNOME

    3.2. KDE

    Использование псевдонимов

    При организации данных по разным пользователям и группам в файле /etc/sudoers полезно использование различных псевдонимов. Вот так выглядят записи в /etc/sudoers, соответствующие трём разным группам пользователей:

    User_Alias     GROUPA = user1, user2, user3
    User_Alias     GROUPB = user4, user5, user3
    User_Alias     GROUPC = user1, user4, user5

    Важно помнить, что названия групп должны начинаться с заглавной буквы. Следующей строкой для членов группы GROUPA мы дадим разрешение на запуск обновления базы данных apt:

    GROUPA      ALL = /usr/bin/apt update

    Подобным же образом мы можем дать участникам группы GROUPC разрешение на перезагрузку операционной системы. Для этого необходимо создать псевдоним, содержащий команды на перезагрузку системы. Такой псевдоним мы назовём, например, RSTRT. После чего участникам группы GROUPC нужно будет выдать разрешение на запуск этих команд.

    Cmnd_Alias      RSTRT = /sbin/restart, /sbin/reboot
    GROUPC          ALL= RSTRT

    В файле /etc/sudoers существует возможность контролировать реакцию утилиты sudo при её вызове. Например, вы можете разрешить пользователям выполнять какую-либо команду с использованием полномочий root, но без необходимости пользователю вводить свой пароль. Для таких случаев применяется опция NOPASSWD. Так будет выглядеть запись в /etc/sudoers, разрешающая запуск команды apt update участникам группы GROUPB:

    GROUPB      ALL = NOPASSWD: /usr/bin/apt update

    И кстати, в /etc/sudoers есть настройка, позволяющая изменить количество неправильных попыток ввода пароля при выполнении команды sudo. По умолчанию таких попыток разрешено 3. Но если есть желание увеличить из количество, допустим, до четырёх, то такая настройка будет выглядеть как:

    Defaults   passwd_tries=4

    Там же вы можете изменить фразу, с помощью которой система сообщает вам о неверно набранном пароле при запуске sudo:

    Defaults    badpass_message="Your password is not correct!"

    И эту фразу пользователь будет видеть вместо стандартной Sorry, try again.

    Сообщение о неправильно набранном пароле

    Using the su command

    su - <user>
    su <user>
    su - root
    su root
    su -
    su
    su
    Password:
    ifconfig
    bash: ifconfig: command not found

    So you either need to specify the full PATH to the command if you just used ‘su‘ (eg, /sbin/ifconfig) or use ‘su —‘ when becoming root.

    Дополнительно:  Ноутбук не выключается после Завершения работы, что делать? 💻

    Using sudo

    So, the quick and dirty way to use sudo would be to add at the end of the sudoers file :

    bob    ALL=(ALL)       ALL
    $sudo yum update
    %admin    ALL=(ALL)       ALL
    User_Alias ADMINS = alice, bob

    However, we don’t want alice and bob to run every command as root, we want them to run only updatedb. Let’s define a command alias:

    Cmnd_Alias LOCATE = /usr/sbin/updatedb
    ADMINS ALL = LOCATE

    At this time, /etc/sudoers looks like this:

    User_Alias ADMINS = alice, bob
    Cmnd_Alias LOCATE = /usr/bin/updatedb
    ADMINS ALL = LOCATE

    alice and bob should be able to run updatedb as root, by giving their password.

    If we replace the last line of the file with:

    ADMINS ALL = NOPASSWD: LOCATE

    alice and bob can run «sudo updatedb» without entering a password.

    It is possible to add more commands in a command alias and more aliases in the rule. For example, we can create an alias named NETWORKING containing some networking commands like ifconfig, route or iwconfig:

    Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables,
                            /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
    User_Alias ADMINS = alice, bob
    Cmnd_Alias LOCATE = /usr/bin/updatedb
    Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables,
                            /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
    ADMINS ALL = LOCATE, NETWORKING 

    A little try: log in as alice (or bob), and type:

    $ping -c 10 -i 0 localhost

    the answer should come quickly:

    PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
    ping: cannot flood; minimal interval, allowed for user, is 200ms

    Now, let’s sudo it:

    $sudo ping -c 10 -i 0 localhost
    PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.049 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.034 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.021 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=5 ttl=64 time=0.017 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=6 ttl=64 time=0.016 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=7 ttl=64 time=0.016 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=8 ttl=64 time=0.016 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=9 ttl=64 time=0.016 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=10 ttl=64 time=0.016 ms
    --- localhost.localdomain ping statistics ---
    10 packets transmitted, 10 received, 0% packet loss, time 1ms
    rtt min/avg/max/mdev = 0.016/0.023/0.049/0.010 ms, ipg/ewma 0.187/0.028 ms
    Apr 18 11:23:17 localhost sudo: bob  : TTY=pts/0 ; PWD=/home/bob ; USER=root ; COMMAND=/bin/ping -c 10 -i 0 localhost 

    That’s it. Now never forget, when using sudo: «with great power comes great responsibility».

    2.1. Sudo shell

    If you have sufficient rights configured in sudoers you can also open a root shell by using

    sudo -i

    Запуск графических программ с правами администратора

    Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt+F2.

    Допустим, нам необходимо запустить файловый менеджер Nautilus с правами администратора, чтобы через графический интерфейс как-то изменить содержимое системных папок. Для этого необходимо ввести в диалог запуска приложений команду

    gksudo nautilus

    Вместо gksudo можно подставить gksu, кроме того, пользователи KDE должны вместо gksudo писать kdesu. У вас попросят ввести свой пароль, и, если вы обладаете нужными правами, Nautilus запуститься от имени администратора. Запуск любого графического ПО можно производить с правами администратора, просто написав в диалоге запуска

    gksudo <имя_команды>

    Будьте предельно внимательны при работе в приложениях, запущенных с правами администратора. Вы безо всяких предупреждений со стороны системы сможете выполнить любую операцию, в частности, удалить системные файлы, сделав при этом систему неработоспособной.

    Index

    НАЗВАНИЕ
    ОПИСАНИЕ
    Краткое руководство по -1EBNF
    Псевдонимы
    Значения по умолчанию
    Списки, которые могут быть использованы в булевом контексте:
    Спецификация Пользователя
    Runas_Spec
    -1NOPASSWD and -1PASSWD
    Символы подстановки (метасимволы):
    Исключения из правил символов подстановки:
    Другие специальные символы и зарезервированные слова:
    ПРИМЕРЫ
    СОВЕТЫ ПО БЕЗОПАСНОСТИ
    ПРЕДОСТЕРЕЖЕНИЯ
    ФАЙЛЫ
    ПЕРЕВОД
    СМ. ТАКЖЕ


    ТАКЖЕ

    rsh(1), sudo(8), visudo(8), su(1), fnmatch(3).


     

    Basic sudo

    1. Become root by runningsu
    2. Run usermod -aG wheel your_user_id
    3. Log out and back in again
    %wheel  ALL=(ALL)  ALL

    After logging out and back in again, you can verify that you are in group wheel by running the id command:

    $ id
    uid=1000(rct) gid=10(wheel) groups=10(wheel),1000(rct)
    
    

    Sudo не спрашивает пароль

    sudo без пароля — чудовищная дыра в безопасности, кому попало разрешено делать что угодно. Если вы разрешили это намеренно — срочно верните обратно как было.

    Однако, в некоторых случаях sudo внезапно перестаёт требовать пароль само по себе. Если сделать visudo, то можно увидеть примерно такую строку, которую пользователь вроде бы не добавлял:

    ALL ALL=(ALL) NOPASSWD:ALL

    Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае, её нужно поменять на строку, разрешающую с правами root запускать только этот Connect Manager, примерно так:

    юзернейм ALL= NOPASSWD: /путь/к/программе

    Есть и другие варианты решения проблемы, небольшое обсуждение здесь.

    НАЗВАНИЕ

    sudoers — список пользователей, с указанием того, что они могут выполнять
     

    Получение прав суперпользователя для выполнения нескольких команд

    Иногда возникает необходимость выполнить подряд несколько команд с правами администратора. В этом случае можно временно стать суперпользователем одной из следующих команд:

    sudo -s
    sudo -i

    После этого вы перейдёте в режим суперпользователя (с ограничениями, наложенными через настройки sudo), о чём говорит символ # в конце приглашения командной строки. Данные команды по действию похожа на su, однако:
    sudo -s — не меняет домашний каталог на /root, домашним остается домашний каталог пользователя вызвавшего sudo -s, что обычно очень удобно.
    sudo -i — сменит так же и домашний каталог на /root.

    Для выхода обратно в режим обычного пользователя наберите exit или просто нажмите Ctrl+D.

    Время действия введённого пароля

    Возможно, вы хотите изменить промежуток времени, в течение которого sudo действует без ввода пароля. Этого легко добиться добавив в /etc/sudoers (visudo) примерно следующее:

    Defaults:foo timestamp_timeout=20

    Здесь sudo для пользователя foo действует без необходимости ввода пароля в течение 20 минут.
    Если вы хотите, чтобы sudo всегда требовал ввода пароля, сделайте timestamp_timeout равным 0.

    Using sudo without a password

    You can also configure sudo to not ask for a password to verify your identity. For many situations (such as for real servers) this would be considered too much of a security risk. However, for developers running a RHEL VM on their laptop, this is a reasonable thing to do since access to their laptops is probably already protected by a password.

    To set this up, two different methods are shown. You can either edit /etc/sudoers or you can create a new file in /etc/sudoers.d/.  The first is more straightforward, but the latter is easier to script and automate.

    Edit /etc/sudoers

    The default /etc/sudoers file contains two lines for group wheel; the NOPASSWD: line is commented out.  Uncomment that line and comment out the wheel line without NOPASSWD. When you are done, it should look like this:

    ## Allows people in group wheel to run all commands
    # %wheel ALL=(ALL) ALL
    
    ## Same thing without a password
    %wheel ALL=(ALL) NOPASSWD: ALL

    Alternate method: Create a new file in /etc/sudoers.d

    $ su -
    # echo -e “your_id\tALL=(ALL)\tNOPASSWD: ALL" > /etc/sudoers.d/020_sudo_for_me
    
    # cat /etc/suders.d/020_my_sudo
    your_id ALL=(ALL) NOPASSWD: ALL
    
    

    Использование команды

    Многие команды могут быть запущены только суперпользователем, поэтому мы должны знать, как становится им (root-ом). Чтобы сделать это, мы можем использовать команду: su (смена пользователя). Команда su принимает следующие форматы:

    su - 
    su 

    но чаще всего мы будем использовать su для того, чтобы стать пользователем root:

    su - root
    su root

    если имя пользователя в строке не указано, то автоматически предпологается пользователь root, поэтому команду можно сократить:

    su -
    su

    но обе команды ведут себя различно. ‘su ‘ дает текущему пользователю личность , тогда, как ‘su — ‘ дает текущему пользователю личность вместе с окружением , которое можно было бы получить, зарегистрировавшись в качестве .

    Дополнительно:  (Решено) BUGCODE_USB_DRIVER Синий экран в Windows 10 - Driver Easy - Ошибка Синего Экрана

    Зачастую пользователи используют ‘su’ для перехода в root. Попробовав запустить команду (например — ifconfig), вы получите: ‘command not found’ error.

    su
    Password:
    ifconfig
    bash: ifconfig: command not found
    

    Команды обычных пользователей обычно расположены в /usr/local/bin, /usr/bin и /bin. А команды пользователя root распологаются в основном в /usr/local/sbin, /usr/sbin, /sbin и корневой PATH это отражает. Поэтому, когда вы становитесь суперпользователем при помощи «su -«, то вы также принимаете и новый путь PATH к основным командам. А используя только ‘su’, сохраняется пользовательский путь PATH по умолчанию, следовательно, при попытке выполнить программу расположенную в /usr/local/sbin, /usr/sbin, /sbin выдаст результат: ‘command not found’ error. Для более детального объяснения, смотрите справочную страницу (man bash), особенно раздел login shells.

    Таким образом, вы или должны указывать полный путь к команде (пример — /sbin/ifconfig) при использовании ‘su’, либо использовать ‘su -‘, когда становитесь root-ом.

    Настройка sudo и прав доступа на выполнение различных команд

    sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки, связанные с правами доступа, хранятся в файле /etc/sudoers. Это не совсем обычный файл. Для его редактирования необходимо (в целях безопасности) использовать команду

    sudo visudo
    %admin ALL=(ALL) ALL

    Подробнее о синтаксисе и возможностях настройки этого файла можно почитать выполнив

    man sudoers

    Если вы допустите ошибку при редактировании этого файла, то вполне возможно полностью лишитесь доступа к административным функциям. Если такое случилось, то необходимо загрузиться в recovery mode, при этом вы автоматически получите права администратора и сможете всё исправить. Кроме того, отредактировать этот файл можно с LiveCD.

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

    Для того, что бы система не запрашивала пароль при определенных командах необходимо в sudoers после строки # Cmnd alias specification добавить строку, где через запятую перечислить желаемые команды с полным путём(путь команды можно узнать, выполнив which имя_команды:

    # Cmnd alias specification
    Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /usr/sbin/pm-hibernate, /sbin/reboot

    И в конец файла дописать строку

    имя_пользователя ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS

    Внимание! Вышеописанные действия не отменяют необходимости ввода команды sudo перед вашей командой

    Создание синонимов (alias`ов)

    Для того, чтобы не только не вводить пароль для sudo, но и вообще не вводить sudo, сделайте следующее:
    откройте файл .bashrc, находящейся в вашем домашнем каталоге

      ~bashrc 

    и добавьте в конец файла строки

     =
     =
     pm-hibernate=
     =
     = 

    For more information

    • See the «Gaining Privileges» chapter in the Red Hat Enterprise Linux 7 System Administrator’s Guide.
    • See «How to allow a normal user to run commands as root user using sudo.» This article is on the Red Hat Customer Portal. Join the Red Hat Developer Program to get a Red Hat ID, which will let you view the knowledgebase articles on the Red Hat Customer Portal.
    • See the «Configure your Fedora system to use sudo» article in Fedora Magazine.

    Использование традиционного root аккаунта и команды su

    Разблокировка учетной записи root приводит неоправданным рискам (работая постоянно под рутом вы имеете 100500 способов «отстрелить себе ногу»), а также упрощает получение доступа к вашему компьютеру злоумышленником.

    Ubuntu 11.04 и младше

    Для входа под root достаточно задать ему пароль:

    sudo passwd root

    Ubuntu 11.10 и старше

    Начиная с версии 11.10 был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.

    1. Устанавливаем root пароль.
    Введите в терминал:

    sudo passwd root
    gksu gedit /etc/lightdm/lightdm.conf

    В конце файла допишите:

    greeter-show-manual-login=true

    3. Перезагружаем lightdm.
    Введите в терминал:

    sudo service lightdm restart

    Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:

    sudo passwd -l root

    Ссылки

    • Настройка sudo — топик на форуме о времени действия пароля

    ПРЕДОСТЕРЕЖЕНИЯ

    Файл sudoers должен редактироваться только командой visudo,
    которая блокирует файл и осуществит проверку грамматики. Это
    обязательно, во избежание возникновения ошибок в синтаксисе sudoers, так как
    sudo не будет работать при наличии ошибок в sudoers.

    Если используются сетевые группы или машины (в противоположность пользователям), если вы сохраняете полностью определенные имена машин в сетевой группе (что, бывает, случается), то имена машин должны быть полностью определенными, и соответствовать именам, возвращаемым командой hostname, или должна использоваться опция fqdn в sudoers.
     

    1 Sudo shell

    Если у вас настроено достаточно прав в sudoers, вы также можете открыть root-ую оболочку shell используя:

    sudo -s
    sudo -i

    В последних версиях только на CentOS 5, для запуска shell под root, используется sudo -s. Будьте очень осторожны, так как это может менять или создавать новые файлы в домашней директории Root, а установку вести в домашний каталог вызвавшего пользователя.

    Содержимое файла /etc/sudoers

    Теперь давайте рассмотрим некоторые настройки, содержащиеся в файле /etc/sudoers.

    Во-первых, строка Defaults env_reset отвечает за сброс терминальной среды с целью удалить переменные пользователя. Такая мера безопасности применяется для ликвидации потенциально опасного воздействия переменных среды в сессии sudo.

    Во-вторых, строка Defaults secure_path задаёт значение для переменной PATH. Такой путь для приложений используется утилитой sudo для выполнения операций. Это позволяет защитить систему от использования пользовательских путей, которые могут быть потенциально опасными.

    Далее, в файле /etc/sudoers есть строка, определяющая полномочия sudo для учётной записи root.

    root ALL=(ALL:ALL) ALL

    В этой записи первое значение ALL указывает на то, что описанное правило будет применено ко всем хостам. Второе значение ALL указывает на то, что учётная запись root может выполнять команды от имени любого пользователя. Третье значение ALL говорит о том, что учётная запись root может выполнять команды от имени любой группы. И, наконец, последнее значение ALL указывает на то, что данное правило применяется ко всем выполняемым командам.

    Также, рассматриваемый файл содержит строку, задающую правила полномочий sudo для групп.

    %sudo ALL=(ALL:ALL) ALL

    Имена, которые начинаются со знака %, указывают на то, что речь идёт именно о названиях групп, а не об именах учётных записей. В остальном данная настройка идентична тому, как это описано в отношении пользователей.

    #includedir /etc/sudoers.d - Sudo: настройка файла /etc/sudoers

    Несмотря на то, что строка с параметром includedir начинается со знака #, комментарием данная строка не является. Этот параметр указывает на то, что файлы, находящиеся в директории /etc/sudoers.d, также применяются для настройки полномочий sudo. Файлы в этом каталоге создаются в основном для того, чтобы определённые пользователи могли запускать определённые команды с использованием привилегий sudo. Данные файлы, также как и файл /etc/sudoers, необходимо редактировать командой visudo. Например, для того, чтобы отредактировать файл /etc/sudoers.d/mysettingsfile, следует применить следующую конструкцию:

    $ sudo visudo -f /etc/sudoers.d/mysettingsfile

    How To Become Root

    1. Using the su command
    2. Using sudo
    3. Graphical helpers
    4. consolehelper

    Где используется sudo

    sudo используется всегда, когда вы запускаете что-то из меню Администрирования системы. Например, при запуске Synaptic вас попросят ввести свой пароль. Synaptic — это программа управления установленным ПО, поэтому для её запуска нужны права администратора, которые вы и получаете через sudo вводя свой пароль.

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

    ПРИМЕРЫ

    Ниже приведены примеры записей sudoers. Возможно, некоторые из них являются выдуманными. Сначала мы определяем свои псевдонимы:

    Здесь мы переопределим некоторые встроенные значения по умолчанию. Мы хотим, чтобы sudo регистрировал события при помощи syslog(3), во всех случаях используя метод auth.
    Мы не хотим, что бы sudo читало лекции всем пользователям, и пользователь millert не должен указывать пароль. В добавок, на машинах в SERVERS Host_Alias мы держим дополнительный локальный файл журнала и удостоверимся, что мы регистрируем год в каждой строке файла журнала, так как записи журнала будут сохраняться в течение нескольких лет.

    Определение пользователя является частью, которая фактически определяет кто что может выполнять.

    Мы позволим супер-пользователю (root) и любому пользователю в группе wheel выполнить любую команду на любой машине от имени любого пользователя.

    Системные администраторы занятые полный рабочий день (millert, mikef и dowdy) могут выполнить любую команду на любой машине без аутентификации.

    Системные администраторы занятые не полный рабочий день (bostley, jwfox и crawl) могут выполнить любую команду на любом компьютере, но сначала должны себя аутентифицировать (так как в записи отсутствует тэг NOPASSWD).

    Пользователь jack может выполнить любую команду на машинах с псевдонимом CSNETS (сети 128.138.243.0, 128.138.204.0 и 128.138.242.0).
    Из этих сетей только <128.138.204.0> имеет явную сетевую маску (в соответствии с CIDR) означающую сеть класса C. Для остальных сетей в CSNETS в случае соответствия будет использоваться сетевая маска машины.

    Дополнительно:  How to compile multiple files in ROOT

    Пользователь lisa может выполнять любую команду на любой машине с псевдонимом CUNETS (сеть класса B 128.138.0.0).

    Пользователь operator может выполнять команды ограничивающиеся простым обслуживанием.
    В данном случае таковыми являются резервное копирование, уничтожение процессов, система печати, выключение системы и любая команда в каталоге /usr/oper/bin/.

    Пользователь joe может выполнять только su(1) оператору.

    Пользователю pete разрешено изменять любой пароль, за исключением пароля супер-пользователя (root) на машинах HPPA. Учтите, что passwd(1) не воспринимает несколько имен пользователей подряд в одной командной строке.

    Пользователь bob может выполнять любые команды на машинах SPARC и SGI, как пользователь описанный в Runas_Alias в OP (root и operator).

    Пользователь jim может выполнить любую команду на машинах в сетевой группе biglab.
    Sudo знает, что biglab является сетевой группой из-за префикса +.

    Пользователи в сетевой группе secretaries должны как помогать в управлении принтерами, так и добавлять или удалять пользователей. Таким образом им позволено выполнять эти команды на всех машинах.

    Пользователь fred может выполнять команды от имени любого пользователя в Runas_Alias DB (oracle или sybase), без указания пароля.

    На машинах ALPHA пользователь john может выполнить su любому пользователю, за исключением супер-пользователя (root), но не имеет права задавать su(1) какие-либо флаги.

    Пользователь jen может выполнить любую команду на любой машине, за исключением машин в Host_Alias SERVERS (master, mail, www и ns).

    Для любой машины в Host_Alias SERVERS jill может выполнить любую команду в каталоге /usr/bin/, за исключением команд относящихся к Cmnd_Aliases SU и SHELLS.

    Пользователь steve может выполнить любую команду в каталоге /usr/local/op_commands/, но только как пользователь operator.

    На своей персональной рабочей станции, valkyrie, matt необходима возможность уничтожать зависшие процессы.

    Любой пользователь может монтировать или размонтировать CD-ROM на машинах в Host_Alias CDROM (orion, perseus, hercules) без ввода пароля.
    Ввод этого несколько утомителен для пользователей, поэтому это первейший кандидат для включения в сценарий оболочки.
     

    Запуск программ с правами администратора в терминале

    Для запуска в терминале команды с правами администратора просто наберите перед ней sudo:

    sudo <команда>

    У вас попросят ввести ваш пароль. Будьте внимательны, пароль при вводе никак не отображается, это нормально и сделано в целях безопасности, просто вводите до конца и нажимайте Enter. После ввода пароля указанная команда исполнится от имени root.

    Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии sudo наберите в терминале

    sudo -K

    Кроме того, часто встречаются ошибки, связанные с каналами в Linux. При исполнении команды

    sudo cat test.txt | grep text > result.txt

    с правами root исполнится только cat, поэтому файл result.txt может не записаться. Нужно либо писать sudo перед каждой командой, либо временно переходить под суперпользователя.

    Enable sudo during system installation

    I have to admit, I overlooked this option and didn’t understand what it did until I stumbled on this article in Fedora Magazine. While the article is about Fedora, this functionality is essentially the same for RHEL, since Fedora is the upstream community project that is used as the basis for RHEL.

    RHEL 7 Install Create User

    Использование Sudo

    Вам не нужно быть суперпользователем каждый раз, когда вы хотите запустить некоторые конкретные административные функции. Благодаря Sudo, вы можете запустить некоторые или все команды как под root-ом. Когда Sudo установлен (пакет: Sudo), вы можете настроить его при помощи команды ‘visudo’ под root-ом. В основном он редактирует (Vim по умолчанию) /etc/sudoers, но это не рекомендуется делать вручную.

    Таким образом, быстрый и нерекомендуемый способ использования Sudo, это добавить в конце файла sudoers:

    alex ALL=(ALL)ALL

    Alex — имя пользователя. Сохраните (нажать escape, затем ввести wq), и все готово. Войдите как alex, и запустите например:

    $sudo yum update

    Sudo запросит пароль. Это пароль alex-а, а не пользователя root. Так что будте осторожны, когда вы даете права пользователя с Sudo.

    %admin ALL=(ALL)ALL

    Alex так же может выполнить суперпользовательскую команду, и alisa получила право запускать Sudo, с теми же правами и со своим паролем. Если alex и alisa не члены одной группы, мы можем определить псевдоним пользователя в файле sudoers:

    User_Alias ADMINS = alisa,alex

    Тем не менее, мы не хотим, чтобы alex и alisa могли запускать с правами суперпользователя любую програму. Мы хотим, чтобы они могли запускать только ‘updatedb’. Давайте определим команду псевдоним:

    Cmnd_Alias LOCATE = /usr/sbin/updatedb
    ADMINS ALL = LOCATE

    На этот раз, /etc/sudoers выглядит следующим образом:

    User_Alias ADMINS = alisa, alex
    Cmnd_Alias LOCATE = /usr/bin/updatedb
    ADMINS ALL = LOCATE

    В результате alex и alisa могут запускать updatedb, как root, введя свой пароль.

    Если последнюю строчку в файле изменить:

    ADMINS ALL = NOPASSWD:LOCATE

    тогда alex и alisa смогут выполнить ‘sudo updatedb’ без ввода пароля.

    Можно добавить другие команды в командный алиас и более алиасов в правило. Например мы можем создать алиас NETWORKING содержащий некоторые сетевые команды типа: ifconfig, route или iwconfig:

    Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhcclient, /usr/bin/net, sbin/iptables,
     /usr/bin/rfcom, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
    User_Alias ADMINS = alice, bob
    Cmnd_Alias LOCATE = /usr/bin/updatedb
    Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net,/sbin/iptables,
    /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
    ADMINS ALL = LOCATE, NETWORKING 

    Маленькая проба: войдите в систему как alisa (или alex), и наберите:

    $ping -c 10 -i localhost

    Ответ должен вернуться быстро:

    PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
    ping: cannot flood; minimal interval, allowed for user, is 200ms

    Теперь, тоже-самое но с Sudo:

    $sudo ping -c 10 -i 0 localhost
    PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.049 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.034 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.021 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=5 ttl=64 time=0.017 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=6 ttl=64 time=0.016 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=7 ttl=64 time=0.016 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=8 ttl=64 time=0.016 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=9 ttl=64 time=0.016 ms
    64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=10 ttl=64 time=0.016 ms
    --- localhost.localdomain ping statistics ---
    10 packets transmitted, 10 received, 0% packet loss, time 1ms
    rtt min/avg/max/mdev = 0.016/0.023/0.049/0.010 ms, ipg/ewma 0.187/0.028 ms

    Sudo часто используется для предоставления определенным пользователям частичного доступа к привелигированным командам, чтобы они могли выполнять ограниченные административные функции. Одно из удобств Sudo в том, что все команды записываются в /var/log/secure. Приведенный выше пример будет описан строчкой в журнале:

    Apr 18 11:23:17 localhost sudo: alex  : TTY=pts/0 ; PWD=/home/alex ; USER=root ; COMMAND=/bin/ping -c 10 -i 0 localhost 

    Вот и все. Теперь никогда не забуду, когда использовал Sudo: «с большой властью приходит большая ответственность».

    Consolehelper

    Consolehelper представляет собой оболочку для запуска GUI приложений. Когда он начинает работать, он проверяет конфигурацию PAM для требуемого применения. Это означает, что мы можем проводить аутентификацию пользователя с помощью всех установленных модулей PAM. Основной метод состоит в том, чтобы запросить пароль, но если мы имеем надлежащее оборудование. мы можем аутентифицировать с помощью смарткарты, жетонов, отпечатков пальцев и т.д. Конфигурация PAM выходит за рамки этого документа (см. PAM Руководство администратора), поэтому мы рассмотрим этап настройки consolehelper, необходимый для запуска приложений под root-ом и запросом пароля root.

    В качестве примера, давайте настроим /usr/bin/xterm для запуска в качестве root-ого.

    Во-первых, мы хотим сохранить возможность запускать Xterm под обычным пользователем. Поэтому создадим символическую ссылку /usr/bin/xterm-root для /usr/sbin/consolehelper:

    ln -s /usr/sbin/consolehelper /usr/bin/xterm-root  

    Теперь для конфигурирования PAM — создайте файл /etc/pam.d/xterm-root:

    #%PAM-1.0
    auth            include         config-util
    account         include         config-util
    session         include         config-util
    

    Наконец, настройте consolehelper на запуск /usr/bin/xterm под root-ом, командой ‘xterm-root’. Создайте файл /etc/security/console.apps/xterm-root:

    USER=root
    PROGRAM=/usr/bin/xterm
    

    Вот и все. Запускайте ‘xterm-root’ (из командной строки или ярлыком .desktop file), введите пароль и в путь. Если вы получили сообщение об ошибке: «Xlib: connecttion to «:0.0″ refused by server», запустите сначала ‘xhost local:root’.

    Вместо заключения

    Файл /etc/sudoers является очень мощным инструментом настройки функционирования системы. В этой ознакомительной статье мы лишь вкратце коснулись данной темы. Ну, а поскольку вы теперь знаете, что такие настройки возможны, глубину их изучения определять именно вам. Ведь применять или не применять их в работе с Linux-системами, решаете вы.

    Consolehelper

    As an example, let’s configure /usr/bin/xterm to launch as root.

    ln -s /usr/sbin/consolehelper /usr/bin/xterm-root

    Now to configure pam — create the file /etc/pam.d/xterm-root:

    #%PAM-1.0
    auth            include         config-util
    account         include         config-util
    session         include         config-util
    USER=root
    PROGRAM=/usr/bin/xterm
    SESSION=true

    Be sure that the line ends with the new line character.

    Оцените статью
    Master Hi-technology
    Добавить комментарий