9

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

Есть идеи, как этого добиться?

3 ответа3

7

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

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

Проверьте раздел 'AUTHORIZED_KEYS FILE FORMAT' на вашей странице руководства sshd (я предполагаю, что вы используете OpenSSH).

http://man.openbsd.org/OpenBSD-current/man8/sshd.8

1

Вы можете достичь этого с помощью ACL. Вам все еще нужен скрипт, работающий от имени пользователя root, который меняет права доступа для каждого файла. Посмотрите справочные страницы для ACL, setfacl и getfacl, если вам интересно.

1

Есть несколько другой способ создать это без использования ACL. Но вы должны соблюдать осторожность здесь. Во-первых, создайте группу, например, с именем roroot (только для чтения root). Затем примените этот идентификатор группы ко всем каталогам. Сделайте разрешения для групповых битов равными r- или 400 восьмеричным числам, после чего вы сможете создать учетную запись пользователя, как обычный пользователь, например, rorootusr, со следующим идентификатором, установленным на то, что находится в вашей системе, сделайте его член группы roroot только, не делайте его частью колеса, мусорного ведра и т. д., в зависимости от того, какие группы используются в вашей установке. Следующий бит будет клудги. Откройте файл /etc /passwd с помощью vim /nano /emacs /joe / любого другого редактора, который качает вашу лодку, и найдите идентификатор, который вы только что создали, т.е. rorootusr, файл passwd будет выглядеть так

root:x:0:0::/root:/bin/sh

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

rorootusr:x:512:450:Root User RO:/home/rorootusr:/bin/bash

Это третье поле (512), в котором вы измените его на 0. 450 будет идентификатором группы для roroot. Сохраните сеанс редактирования, и все готово. Теперь у rorootusr будет доступ с правами root, но он является единственным членом группы roroot и имеет доступ только для чтения к системе.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .