Назад | Перейти на главную страницу

Как создать суперпользователя в CentOS 7

Я очень новичок в ОС Linux (я начал с CentOS 7), поэтому мне было интересно, можно ли создать своего рода суперпользователя, который будет иметь такие же привилегии, что и root. Под этим я подразумеваю возможность писать + читать + выполнять папки и файлы, принадлежащие пользователю root. Зачем мне это нужно? У меня VPS с полным доступом. Чтобы повысить безопасность моего веб-сервера, я создал нового пользователя и отключил вход в систему root, и теперь я вхожу на свой сервер с открытым / закрытым ключом RSA через Putty и WinSCP. Это мой sshd.conf:

Port my_port_number
Protocol 2

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

AuthorizedKeysFile  .ssh/authorized_keys
PasswordAuthentication no
RSAAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PermitEmptyPasswords no

SyslogFacility AUTHPRIV

LoginGraceTime 15m
PermitRootLogin no
StrictModes yes
MaxAuthTries 2

GSSAPIAuthentication yes
GSSAPICleanupCredentials no

UsePAM no

IgnoreRhosts yes

X11Forwarding no
ClientAliveInterval 120
ClientAliveCountMax 720

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

Subsystem   sftp    /usr/libexec/openssh/sftp-server
AllowUsers user_that_i_have_created

Кроме того, я добавил эту строку в /etc/sudoers

## Allow root to run any commands anywhere 
root    ALL=(ALL)   ALL
user_that_i_have_created ALL=(ALL) ALL

Я тоже так делал:

usermod -aG wheel user_that_i_have_created

В чем проблема сейчас? Как новый пользователь, которого я создал, я не могу получить доступ к файлам и папкам, которым разрешено читать и изменять только root. Поскольку мне часто нужно изменять некоторые файлы конфигурации, принадлежащие root (например, apache httpd.conf), мне нужен доступ к этим файлам через WinSCP, потому что я привык редактировать их через блокнот. Редактирование этих файлов через Putty (зарегистрированное как root) было бы пустой тратой времени.

Я представил себе, что смогу создать нового пользователя, такого же, как root (в отношении привилегий и разрешений), но только с другим именем. Возможно ли такое в Linux?

Что это sudo для. При правильной настройке пользователь в sudoers file может делать то же самое, что и root.

Чтобы отредактировать файл: вместо vim filename ты просто используешь sudo vim filename и аналогично для всех остальных команд.

Создание дополнительного фактического пользователя root на самом деле невозможно - вы можете дать другому пользователю идентификатор 0 также, но тогда это настоящий пользователь root с другим именем.

Редактирование этих файлов через Putty (зарегистрированное как root) было бы пустой тратой времени.

Если выше действительно ваша золотая середина в отношении безопасности по сравнению с рабочей нагрузкой, а затем с радостью установите PermitRootLogin without-password и войдите напрямую через WinSCP как root, чтобы редактировать все, что захотите.

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

Однако я считаю весьма спорным утверждение, что подход Putty помедленнее чем WinSCP. Это Быстрее для меня - я не знаю, может быть, я не знаю, как эффективно использовать WinSCP. Или, может быть, вам нужно освежить bash навыки и умения.

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

Возможно, вы создаете группу пользователей wwwadmin и добавляете в нее себя. Затем создайте конфигурации своего веб-сервера в /etc/httpd/conf.d/ и сделайте их доступными для записи для группы wwwadmin.

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

Запуск httpd как root тоже необязателен. Вы можете переопределить systemd httpd.service, добавив CAP_NET_BIND_SERVICE (для портов <1024) и запустив его от имени другого пользователя и группы. См. Справочную страницу systemd.exec.