Как зайти в root в centos

Обновлено: 04.07.2024

It is highly recommended that GUI interfaces not be run as root. That can easily lead to disaster. It is best to log in as a normal unprivileged user and to only use root's powers as required.

1. Using the su command

Many commands can only be run as the root user so to run these commands we need to become "root". To do this, we can use the su command (substitute user). The su command takes the following format:

but most commonly we will use su to become the root user:

If no username is specified, then the root user is assumed, so the above is often shortened to:

but the two commands above behave differently. 'su <user>' gives the current user the identity of <user> whereas 'su - <user>' gives the current user the identity of <user> together with <user>'s environment that would be obtained by logging in as <user>.

Often a user will become root using just 'su', try to run a command (eg, ifconfig), and get a 'command not found' error. For example:

The reason is that regular system users and the root user have different PATH environment variables. When you type a Linux command, the shell will search the user's PATH to try to locate the command to run. It starts searching each directory on the PATH until a match is found.

Often when a person reports a problem, in IRC or otherwise, they are referred to this page. In debugging WHY a given binary cannot be seen, it is helpful to view the currently effective PATH with: echo $PATH

Commands for regular users are mostly located in /usr/bin, and /bin and occasionally /usr/local/bin -- the /usr/local/* path prefix is not used for packaging by default upstream. However, root commands are mostly located in /usr/sbin, and /sbin and occasionally /usr/local/sbin As such, root's PATH reflects this.

When you become root by using 'su -', you also adopt root's PATH whereas using just 'su' retains the original user's PATH, hence why becoming root using just 'su' and trying to run a command located in /usr/local/sbin, /usr/sbin, or /sbin results in a 'command not found' error. For a more detailed explanation, see the bash manual page (man bash), particularly the section on INVOCATION and login shells.

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.

2. Using sudo

You don't need to be root every time you want to run some specific administrative tasks. Thanks to sudo, you can run some or every command as root. Once sudo is installed (package name: sudo), you can configure it by running 'visudo' as root. Basically, it runs $EDITOR (vim as default) on /etc/sudoers, but it is not recommended to do it manually. If you are on a desktop computer, you will want to be able to do almost everything.

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

where bob is the name of the user. Save (press escape, then type ZZ), and you are ready to go. Log in as bob, and run for example:

sudo will ask for a password. This password is bob's password, and not root's password, so be careful when you give rights to a user with sudo.

But sudo can do more. We can allow a user or group of users to run only one command, or a group of commands. Let's go back to our sudoers file (which is, by the way, well commented on CentOS 5). Let's start with bob and alice, members of a group named admin. If we want all users of the "admin" group to be able to run every command as root, we can modify our example:

bob can still do his stuff, and alice is now allowed to run sudo, with the same rights, with her password. If bob and alice are not in the same group, we can define a user alias in the sudoers file:

here we define an alias named ADMINS, with alice and bob as members.

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:

But it's not enough! We need to tell sudo the users defined in ADMINS can run the commands defined in LOCATE. To do this, we replace the line with "%admin" with this line:

it means that users of alias ADMINS can run ALL the commands in the LOCATE alias.

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

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:

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:

Let's add this to our /etc/sudoers file (with visudo!), and give it access to our ADMINS group of users, the /etc/sudoers now looks like this:

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

the answer should come quickly:

Now, let's sudo it:

sudo is often used to give certain users partial access to privileged commands so that they can perform limited administrative tasks. One nice feature about sudo is that all sudo commands are logged in /var/log/secure. The above example will write this line in the log:

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

3. Graphical helpers

3.1. GNOME

3.2. KDE

The 'Run Command. ' option on the KDE Menu has the facility (under Options) to run a command or application as a different user by supplying that users credentials. Users who are less confident at the command line may like to consider this as an alternative GUI-based method for tasks that require root privileges.

4. consolehelper

consolehelper is a wrapper for running GUI applications. When it starts, it checks configuration of PAM for the desired application. This means that we can authenticate user with all installed PAM modules. The basic method is to ask for a password, but if we have proper hardware, we can also authenticate using smartcards, tokens, fingerprints, etc. Configuration of PAM is beyond scope of this document (see PAM Administrator's Guide), so we will only show how to configure it when we want consolehelper to run an application as root and request the root password.

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

First, because we also want to retain the ability to run xterm as a normal user, we create a symbolic link named /usr/bin/xterm-root to /usr/sbin/consolehelper:

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

Finally, configure consolehelper to run /usr/bin/xterm as the root user when started as 'xterm-root'. Create the file /etc/security/console.apps/xterm-root:

That's it. Run 'xterm-root' (from the command line or from a .desktop file), enter the root password and enyoy. If you get an error: "Xlib: connection to ":0.0" refused by server", run 'xhost local:root' first or add the following line to the file /etc/security/console.apps/xterm-root

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

TipsAndTricks/BecomingRoot (последним исправлял пользователь NedSlider 2021-07-27 23:17:03)

Бывает, что требуется организовать беспарольный доступ к уделённому серверу по ключу, а парольную авторизацию отключить. Просишь это сделать коллегу, который отвечает за удаленный сервер, а он не умеет. На помощь коллеге придёт эта инструкция.

Требуется: Завести удалённую учетную запись, настроить sudo , сделать переключение в учетную запись root без ввода пароля, отключить авторизацию по паролю, организовать подключение к удалённому серверу по SSH-ключам.

2. Решение.

2.1. Подготовка сервера.

Устанавливаем файловый менеджер Midnight Commander, он очень похож на Norton Commander:

Отключение SELinux.

Состояние работы SELinux:

Ответ:


SELinux включен. Отключим его.

Для этого достаточно выполнить замену строки в вышеописанном конфигурационном файле следующей командой:

Проверим состояние SELinux с помощью команды sestatus , как показано ниже:


Готово! SELinux выключен.

2.2. Создание пользователя.

Создадим учётную запись на сервере. Под ней будет заходить коллега для работы по удалённому доступу. Для удобства можно спросить какое бы он предпочел имя удалённой учетной записи. В примере будет использоваться учетная запись коллеги myrzik.

Создадим ему учетную запись:

Пароль ему делать на сервере не будем, он будет подключаться по ключу к серверу.

2.3. Настройка sudo.

Сделаем копию системного файла.

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

Ответ: Зашел в учетную запись пользователя mytzik ввода без пароля.

Ответ: Зашел в учетную запись root ввода без пароля.

Выходим из цепочки учетных записей.

2.4. Авторизация по ключу.

Теперь организуем вход для коллеги с его ключом.

Коллега, который планирует заходить удалённо на наш сервер, должен сгенерировать 2 ключа: приватный и публичный.

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

И так! Есть ключ коллеги id_rsa.pub , который мы получили от него по электронной почте.

Надо его переписать в специальный файл-хранилище ключей локального пользователя на удалённом сервере.

Создадим каталог для посторонних публичных ключей. Пускай будет каталог

Кладу в него ключ id_rsa.pub .

Смотрю что содержится в файле ключа.

Ответ:


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

Ответ:


Файл публичного ключа id_rsa.pub можно удалить, так как он уже не нужен.

Настроим права на каталоги и файлы:

2.5. Отключение авторизации по паролю.

Сделаем копию системного файла.

Отредактируем системный файл:

Запретим аутентификацию по паролю.

Модифицируем файл конфигурации изменением советующего поля на указанное значение:

Протестируем попытку удалённого доступа на сервер с другого компьютера с авторизацией по ключу пользователя myrzik.

Если текущим пользователем является root, для создания нового пользователя введите команду:

Если же текущим является пользователь с привилегиями sudo (об этом – в следующем разделе), запустите следующую команду, которая создаст новую учетную запись:

Затем нужно установить пароль для нового пользователя. Для этого используйте команду passwd .

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

Пароль нужно будет ввести дважды (второй раз для подтверждения).

Ну что, пользователь создан, теперь мы можем выйти из системы. Тем не менее, это не все. Зачастую данных действий недостаточно, ведь хоть пользователь нам нужен был и обычный, но все же, с возможностью администрирования системы (установка/удаление программ, настройка CentOS 7), а это означает, что нам нужно разрешение использования sudo .

Пароль нужно будет ввести повторно, чтобы подтвердить его. Готово! Теперь новая учетная запись пользователя настроена и готова к использованию.

2. Передача привилегий sudo.

Если новому пользователю нужно иметь возможность выполнять команды с правами root, нужно предоставить ему доступ к sudo .

Для этого нужно добавить пользователя в группу wheel (все пользователи, помещенные в эту группу, могут пользоваться sudo ) с помощью команды gpasswd . Это самый безопасный и простой способ управления правами sudo .

Итак, если текущим является root, введите:


Если текущим является пользователь с привилегиями sudo:

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

Для этого нужно просто начинать команду с sudo :

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


3. Управление пользователями с привилегиями sudo.

Команда gpasswd позволяет добавлять пользователей в группу (например, wheel ) и удалять их из группы, но при этом команда не показывает, какие пользователи состоят в группе. Чтобы узнать, какие пользователи состоят в группе wheel , используйте функцию lid . Как правило, lid используется для того чтобы просмотреть группы, в которых состоит определенный пользователь, но флаг -g способен обратить действие команды, и тогда она покажет, какие пользователи состоят в определенной группе.


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

4. Команда смены пользователя.

Чтобы начать работать от имени пользователя username в CentOS 7 просто наберите в терминале команду:

Если просто зайти в его учетную запись, то:

и нажмите клавишу Enter.

5. Как перейти в учетную запись root?

Можно войти вот так:

6. Как принудить пользователя изменить пароль при регистрации?

Команда chage позволяет задать время окончания действия пользовательского пароля.

После этого, при попытке регистрации пользователя в системе, в том числе и по ssh, он будет получать предупреждение: «Срок действия вашего пароля истек. Вы должны изменить ваш пароль и войти заново».


7. Удаление пользователей.

Чтобы удалить пользователей с помощью команды userdel , необходимо войти в систему как пользователь root или пользователь с доступом sudo .

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

Чтобы удалить пользователя, но сохранить все его файлы, запустите как root:

При вызове команда userdel читает содержимое файла /etc/login.defs . Свойства, определенные в этом файле, переопределяют поведение по умолчанию команды userdel . Если USERGROUPS_ENAB установлено на значение yes в этом файле, userdel удалит группу с тем же именем пользователя, только если никакой другой пользователь не является членом этой группы.

Команда удалит записи пользователей из файлов /etc/passwd и /etc/shadow .

При удалении учетной записи пользователя с помощью команды userdel домашний каталог и каталоги почтового спула не удаляются.

Используйте параметр -r ( –remove ), чтобы заставить userdel удалить домашний каталог пользователя и почтовую папку:

Чтобы удалить домашний каталог вместе с учетной записью пользователя, введите как root:

Примечание: если текущим является пользователь с привилегиями sudo , внесите команду sudo в начало строки.

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

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

Если пользователь, которого вы хотите удалить, все еще вошел в систему, или если запущены процессы, принадлежащие этому пользователю, команда userdel не позволит вам удалить пользователя.

В этой ситуации рекомендуется выйти из системы и завершить все запущенные процессы пользователя с помощью команды killall :

После этого вы сможете удалить пользователя.

Другой вариант – это использовать флаг -f ( –force ), который принудительно удалит учетную запись пользователя, даже если пользователь все еще вошел в систему или если запущены процессы, принадлежащие этому пользователю.

8. Информацию о пользователях, которые в данный момент используют систему.

Команда w примечательна тем, что это самая короткая команда в CentOS 7.

Команда w выводит информацию о пользователях, которые в данный момент используют систему.

Для каждого пользователя выводится его имя, информация о том, какую командую строку использует пользователь (оболочку), время регистрации в системе и время простоя и некоторые другие данные.


9. Некоторые операции с id пользователей.


9.2. Первым выводится именно id пользователя. Если вам нужно узнать информацию о другом пользователе, вы можете передать его имя в параметры утилиты:


9.3. Когда необходимо вывести только id пользователя:


9.4. Если вам надо узнать только id группы определенного пользователя, то используйте опцию -g :


9.5. Есть ещё несколько способов посмотреть id . Например, для текущего пользователя его можно найти в переменной окружения UID:



9.7. Или смотрим содержимое файла /etc/passwd с помощью команды grep :


9.8. Бывает нужно узнать группы пользователя.

Это делается командой:

Если не вводить имя пользователя, то подставится имя текущего пользователя.

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

1. Войдите как root-пользователь.

Получив свой IP-адрес и root-пароль, войдите на сервер как главный пользователь (root). Для этого используйте команду (замените выделенный IP своим IP-адресом):

Терминал вернет что-то вроде:


Выберите yes и введите свой root-пароль.


Примечание: использовать учетную запись root на регулярной основе не рекомендуется! Данное руководство поможет создать другого пользователя для постоянной работы.

2. Измените пароль root-пользователя.

На данный момент используется root-пароль, установленный по умолчанию и полученный после регистрации сервера. Первое, что нужно сделать, — заменить его собственным паролем.

3. Создайте нового пользователя.

Войдя на сервер и изменив root-пароль, нужно снова войти на VPS как root. Данный раздел продемонстрирует, как создать нового пользователя и установить пароль для него.

Итак, создайте нового пользователя. Для этого используйте следующую команду (замените test своим именем пользователя):

Теперь создайте пароль для этого пользователя (опять же, замените test именем только что созданного пользователя):

4. Root-привилегии.

На данный момент все права администратора принадлежат root-пользователю. Чтобы иметь возможность постоянно использовать новую учетную запись, нужно передать новому пользователю (test) все root-привилегии.

Для выполнения задач с привилегиями root нужно начинать команду с sudo.

Эта фраза полезна по двум причинам:

  1. Она защищает систему от разрушающих ошибок, допущенных пользователем;
  2. Она хранит все запущенные с sudo команды в файле /var/log/secure , который позже можно просмотреть.

Теперь нужно изменить настройки sudo. Для этого используйте текстовый редактор CentOS 7, который называется mcedit и сходит в состав пакета программного обеспечения Midnight Commander.

Установим Midnight Commander:

Подробнее о Midnight Commander можно узнать из статьи «CentOS 7: Установка Midnight Commander».

Найдите раздел User privilege specification, который выглядит так:

После строки с привилегиями root внесите следующую строку, которая передаст все привилегии новому пользователю:

Внесите изменения. Не забудьте сохранить файл.

5. Настройте SSH (дополнительно).

Теперь нужно обезопасить сервер. Этот дополнительный раздел расскажет, как защитить сервер путем усложнения процедуры авторизации.

Внимание! Прежде чем смело менять порт ssh, в начале его пробросьте в брандмауэре и в маршрутизаторе, иначе поменяете и потом не сможете попасть на сервер. Получится очень глупая ситуация. Чем привыкли пользоваться, тем и пробрасывайте.

Откройте конфигурационный файл:

Найдите следующие разделы и внесите в них соответствующие изменения:

Port: хотя по умолчанию используется порт 22, его номер можно заменить любым другим в диапазоне от 1025 до 65536. В данном руководстве используется SSHD-порт 25000. Обратите внимание: новый номер порта нужно обязательно запомнить/записать, поскольку он понадобится для входа на сервер через SSH.

PermitRootLogin: измените значение yes на no, чтобы отключить вход в систему как root. Теперь войти на сервер можно только при помощи нового пользователя.

Чтобы SSH мог использовать только конкретный пользователь, добавьте эту строку в нижней части документа (замените test своим именем пользователя):

Затем сохраните изменения и закройте файл.

6. Перезапуск SSH.

Чтобы активировать внесенные изменения, перезапустите сервис SSHD:

Чтобы протестировать новые настройки (пока что не выходите из учетной записи root), откройте терминал и войдите на сервер как новый пользователь (не забудьте указать правильный IP-адрес и порт):

Читайте также: