Как я могу создать пользователя с доступом только для чтения ко всем файлам? (т.е. root без прав записи)

9

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

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

Mononofu
источник

Ответы:

7

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

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

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

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

Даррен Холл
источник
1
Мне нравится эта идея. Для просто вытягивать файлы через rsyncвсе no-*-options , как указано в человеке должно быть безопасным. Особенно no-pty в сочетании с from является хорошим началом для повышения безопасности. Пример:from="the_pulling_hostname_or_IP",no-pty,...
user569825 20.09.12
1

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

Ким
источник
1

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

корень: х: 0: 0 :: / корень: / бен / ш

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

rorootusr: x: 512: 450: RO пользователя Root: / home / rorootusr: / bin / bash

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

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

t0mm13b
источник