Есть ли способ прекратить писать 'sudo' для каждой мелочи в Linux?


59

Вскоре я собираюсь сделать довольно много работы с PHP, и я заинтересован в изучении RoR, поэтому я установил Linux Mint 12 в своем VirtualBox.

До сих пор самым разочаровывающим аспектом коммутатора были проблемы с разрешениями Linux. Кажется, что я не могу сделать ничего полезного (как, скажем, скопировать архив Symfony2 из моего каталога Downloads в корневой каталог моего документа и распаковать его), не выдавая себя за root с помощью sudo.

Есть ли простой способ заставить linux предоставить мне беспрепятственный доступ к определенным каталогам, не открывая все их разрешения?


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

Было бы лучше вместо этого указать корневой документ на что-то в моем домашнем каталоге?

3
«Sudo» - одна из тех нелепых команд, которая слишком часто используется и злоупотребляется новыми пользователями Linux. Часто я вижу учебники в Интернете, где 15 команд подряд будут использовать sudo? В обычных ситуациях вам не нужны специальные разрешения при входе в систему как обычного пользователя (рекомендуется). Я был в компании, где все они использовали sudo. Когда я попытался запретить это (по соображениям безопасности), они пожаловались. Изучив загадочный файл конфигурации sudo, я обнаружил недостаток (как всегда), который позволил мне «рутировать» систему от этого обычного пользователя. Судо чрезвычайно опасен!
Jeach

Ответы:


77

Мне на ум приходят два варианта:

  1. Получите нужный каталог, используя chown:

    sudo chown your_username directory 
    

    (замените your_username на ваше имя пользователя и каталог на каталог, который вы хотите.)

  2. Другая вещь, которую вы можете сделать, это работать с правами root, пока вы ЗНАЕТЕ, ЧТО ВЫ ДЕЛАЕТЕ . Для использования root сделайте:

    sudo -s
    

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


«Другая вещь, которую вы можете сделать, - это работать с правами root, пока вы ЗНАЕТЕ, ЧТО ВЫ ДЕЛАЕТЕ. Чтобы использовать root, делайте ...» - ну, это отменяет лучшую практику, которую пытались обучить пользователи дистрибутивов и сообщества безопасности. По теме: «что такое принцип наименьших привилегий» .

16

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

Если есть файлы, которые вы хотите разместить на своем веб-сервере, работайте как собственный пользователь, а затем используйте его, sudoчтобы поместить файлы на место в области веб-обслуживания вашей файловой системы. Обычно это выполняется сценарием установки, и вы запускаете что-то вроде sudo -u webmaster install-webserver-filesили лучше sudo -u webmaster git update(или систему управления версиями по вашему выбору).

Если вы работаете на сервере разработки и хотите, чтобы ваши файлы были доступны мгновенно, создайте каталог в области веб-сервера и сделайте его владельцем или, по крайней мере, записываемым вами. После этой одноразовой операции ( sudo chown …или sudo -u webmaster setfacl …) вам не понадобятся повышенные привилегии для повседневных операций.

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


3

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


Я понимаю, что вы прямо отвечаете на вопрос автора оригинала. Но это плохой совет, который объясняет отрицательное голосование.
bignose

Как то, что вы связали это с Windows.
LeWoody

3

Моя идеология всегда была такова, что как пользователь, вы можете делать все, что захотите, в Linux и для всего остального, всегда есть sudo. sudoпозволяет выполнять несколько вещей, как некоторые другие пользователи, чаще всего случаи, как rootдля системного администрирования. sudoбыло большим преимуществом, позволяющим делегировать некоторые из моих рутинных задач и привилегий как (root) пользователю другим пользователям и помогать лучше управлять своим временем и временем других, не повышая привилегий сверх того, что требуется. В то же время, я доверяю им, чтобы их записи присутствовали наsudoersконфигурационный файл. Я не уверен, может ли это быть связано, но что я могу сказать, так это то, что sudo дает вам лучшую перспективу безопасности того, кто все и что они могут сделать со своими доверенными привилегиями. Даже если что-то пойдет не так, они несут ответственность. (Я всегда могу сделать некоторую подлую информацию о журнале sudoers, чтобы найти виновных). Мои парни всегда выражали мне свою озабоченность тем, что им нужно вводить sudo для всего, что они хотели сделать с повышенными привилегиями в среде Linux. Здесь я тоже нашел такой же вопрос.

Чтобы увидеть решения и мои поиски альтернатив, я наткнулся на средства управления доступом на основе ресурсов, RBAC но в другой стране приключений Solarisс такими инструментами и pfexecт. Д. Этот подход более эффективен, потому что это позволит сохранить привилегии пользователей уже повышенными и будет доверять на совести и бдительности того, что сисадмины хотели бы сделать со своими привилегиями.

Рассматривая доступные решения RBAC и его реализации в мире Linux, я наткнулся на

SELinux http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/

grsecurity http://en.wikipedia.org/wiki/Grsecurity

и хотя есть некоторые другие реализации, я бы рассмотрел их в верхнем порядке списка. Внедрение RBAC - это большая работа в организации, особенно когда много пользователей. RBAC будет лучшим решением в однородной среде. Тем не менее, когда в сети существуют гетерогенные установки Unix и пользовательская база данных является общей, тогда это может произойти сбой. Поскольку SELinux не масштабируется / не реализован в Solaris, а инструменты RBAC / pfexec не реализованы в Linux. Существуют разные подходы для выполнения одной вещи. Например: http://blogs.oracle.com/darren/entry/opensolaris_rbac_vs_sudo_howto

Различные установки в масштабах сети могут не поддерживать этот подход (однако openrbac может рассматриваться как общий подход к реализации), так как sudoers является подходом с одним хостом или не способен к централизованной конфигурации в сети / домене./etc/sudoersнужно синхронизировать каждый раз, когда есть изменения. Более того, при работе с файлом sudoers существует требование к базе знаний, необходимо понимать язык политики конфигурации sudoers, чтобы не допускать ошибок и разрешать любые предоставления. RBAC может предлагать централизованный подход до некоторой степени, в то время как профили безопасности могут быть общими, добавление / удаление пользователя из предоставленной роли может быть сделано из одного места (это место, где хранится информация о пользователе / ​​passwd / group для домен как LDAP, NIS или AD). Это также косвенно потребует понимания команд, необходимых для работы с базой данных RBAC, таких как smexec, smmultiuser, а их немного.

Sudo может предложить более кросс-платформенный подход, тем не менее, он работает на всех Unix / подобных платформах, которые предлагают функции setuid. И то, sudoи другое RBACуспешно дает некорневым пользователям некоторые привилегии, которые могут быть сделаны без предоставления самого rootпароля. Sudo может дать более тонкий / детальный подход к аргументам командной строки, которые можно использовать при выполнении команд, и ограничить только тем, какую команду с аргументами можно запускать с повышенными привилегиями. Хотя RBAC может ограничить использование до установленных команд или двоичных файлов, но не может контролировать аргументы командной строки. Аудит намного лучше и встроен в среду RBAC, тогда какsudoЭто зависит от конфигурации, а также от принятых ограничений безопасности (например, отсутствие предоставления оболочки и, в частности, хостам разрешается входить в систему с другими хостами без каких-либо проблем). Это лишь некоторые из различий, на которые я мог бы сослаться, и я лично склонен использовать sudo, а не RBAC, хотя с указанными ограничениями я мог бы преодолеть некоторые обходные пути. До тех пор пока все проблемы не будут решены RBAC для лучшего преимущества sudo, я не думаю, что sudo исчезнет, ​​потому что это просто.


1

Я бы выбрал корневой каталог документа, где вы работаете, чтобы у вас был полный доступ к нему.

Чтобы избежать необходимости вводить sudo при каждой установке Gem, следуйте этой статье здесь: http://forums.site5.com/showthread.php?t=11954

Я также настоятельно рекомендую установить RVM для управления версиями Ruby и Rails. http://beginrescueend.com/

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


Знал про rvm, но спасибо за ссылку на форум.
Major Productions

0

Запустите команду.

sudo su root

Теперь вы сможете запускать команды от имени пользователя root. Быть осторожен! Любая команда, которая выполняется, будет от имени пользователя root. Вы можете серьезно испортить ситуацию, если не будете осторожны.

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


4
Почему не просто sudo -s?
Сарнольд

1
Или sudo -iкак это имитирует в качестве оболочки входа в систему. Это может быть немного ближе к локальной локальной учетной записи root, чем запуск bash или другой оболочки через sudo.
Бастиан Эбелинг

1
почему не просто su? Что за одержимость Судо? Тебе не нужен Судо. Когда-либо.
Орион

2
afaik, просто невозможно использовать, suесли пароль root неизвестен. добавление пользователя в sudoers и запуск sudo suпозволяет пользователю использовать свой существующий и известный пароль пользователя для эскалации
Лука,

0

Отредактируйте файл / etc / passwd и предоставьте root-права пользователю «yourUserName», изменив идентификаторы пользователя и группы на UID 0 и GID 0:

YOURUSERNAME: 0: 0 :: / Главная / YOURUSERNAME: / бен / ш


2
Не рекомендую кошмары безопасности! Это наихудшая практика.
контрмод

Я использую это решение для своего Raspberry Pi, в котором у меня нет других учетных записей пользователей, и оно подключено к моей домашней сети
Ufuk özkanlı

0

Как указано в других ответах, самое чистое решение - изменить владельца файлов и каталогов, к которым вам нужен доступ. В качестве альтернативы вы можете создать новую выделенную группу, изменить групповое владение файлами и каталогами на эту группу и установить разрешение записи группы для этих файлов и каталогов. Наконец, установите бит SGID для каталогов таким образом, чтобы при создании нового файла он наследовал принадлежность группы к содержащемуся каталогу (то есть к выделенной группе).


-1

user @ server: ~ $ sudo passwd root
[sudo] пароль для пользователя:
введите новый пароль UNIX:
повторно введите новый пароль UNIX:
passwd: пароль успешно обновлен
user @ server: ~ $ su
Пароль:
root @ server: / home / user #

Это "#" подсказка не вещь красоты?

Я использую «sudo» только один раз, чтобы достичь способности

user @ server: ~ $ su
Пароль:
root @ server: / home / user #

для жизни сервера.

Чтобы сделать это снова безопасным,

root @ server: / home / user # exit
exit
user @ server: ~ $

Сисадмины занимались этим в течение многих лет, когда «sudo» не входило в тенденцию безмолвия.

Когда вы делаете это, это ваша ответственность, а не моя.

Ян


Что за скрипка Попробуй sudo -s. Работа выполнена
roaima
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.