SUDO: условие Имени пользователя в sudoers файле

На Linux, pwd обычно обеспечивается coreutils пакет. Можно загрузить источник с того веб-сайта, или с исходного репозитория распределения (здесь для Debian).

Можно скомпилировать pwd и другие инструменты в том пакете обычный путь: распакуйте источник и:

./configure
make

Можно изменить исходный код для pwd и перекомпилируйте, как Вы желаете (это - код C, в src/pwd.c). Но я не рекомендовал бы установить что-либо, от чего Вы изменили себя coreutils по копии Вашего распределения.

Если Вы хотите "играть" с ним, установите его на местоположении где-нибудь в Вашем корневом каталоге и предварительно ожидайте это к Вашему пути (или к пути проверочного пользователя). Только перезапишите исполняемые файлы, управляемые Вашим распределением/диспетчером пакетов, если Вы знаете точно, что Вы делаете (и знайте, как отменить это).

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

1
29.05.2013, 12:58
3 ответа

У Joel Davis есть корректный ответ, всем большое спасибо за Вашу любезную помощь! "написало сценарий приложение POSIX ACL", который является!

И: https://stackoverflow.com/questions/869536/linux-directory-permissions-read-write-but-not-delete

Пример: (Создайте файлы, когда-то записанные, они только для чтения, но CAN быть удаленными владельцем, но не другими.)

setfacl --set u::rwxs,g::rwx /controlled
setfacl -d --set u::r-x,g::r-x,o::- /controlled

Это точно, что я должен сделать.

Всем большое спасибо за Вас помогает, я должен был задать этот вопрос по-другому.

1
27.01.2020, 23:21

Переменные Shell интерпретируются Вашей оболочкой и никогда не замечаются sudo или любой другой программой, запущенной с ними. Таким образом, при выполнении foo=bar; echo "$foo", echo никогда не знает, что данные, они были переданы, прибыли из переменной, названной "нечто", потому что оболочка разворачивает их прежде echo даже выполняется. Поэтому не возможно заставить переменные оболочки работать прозрачно в Вашем sudoers файле.

Кроме того, с тех пор $LOGNAME могло быть что-либо, что Вы желаете сделать, чрезвычайно эквивалентно использованию звезды после /home в Вашем sudoers, независимо от того, используете ли Вы его или нет. Я не рекомендовал бы делать это, потому что можно по существу скопировать что-либо в где угодно как корень, который является огромной угрозой безопасности (так как $LOGNAME может содержать ..). В конечном счете Вы говорите, что не хотите использовать *, но меры, которые Вы желаете принять, одинаково опасны.

Наилучший вариант состоит в том, чтобы позволить доступ для чтения к тому, что в /home/$LOGNAME/file_source, и доступ для записи для этих пользователей к /var/www. У Вас мог быть a www-logs группа, которой считали группу и запись группы для этих путей, соответственно.

3
27.01.2020, 23:21
  • 1
    Привет Chris, большое спасибо за ответ. Это - все печальные новости для меня, потому что разрешение пользовательского доступа для записи к/var/www не сделает ни одного для ограничений безопасности. Humm я понимаю то, что Вы объясняете очень хороший. Угадайте, что я должен буду понять что-то. Возможно, задание, работающее каждую 1 минуту/30-е, синхронизируя мой файл от пользователей, размещает к/var/www, работающему в корневой учетной записи или иначе. Думайте, что это мог быть путь... –  trox 29.05.2013, 06:27
  • 2
    Кроме того, что относительно env_keep? $LOGNAME, $USER и так далее являются ENV varibale... Nevrmind это используется позже, когда команда выполняется... –  trox 29.05.2013, 06:43
  • 3
    Нет ли никакой способ использовать regexp для sudo проверок условия, которые были бы действительно полезны, по крайней мере, мне, ПУТЬ :) –  trox 29.05.2013, 07:13
  • 4
    $LOGNAME может быть произвольным, как это было бы более безопасно? –  Chris Down 29.05.2013, 08:15
  • 5
    @trox, Если все Вы пытаетесь сделать, позволяют их файлы копии в каталог, к которому у них должен быть доступ для записи, он походит на задание для приложения в виде сценария POSIX ACL. Вы не должны давать им доступ для записи ко всем деревьям каталогов, но можно дать просто этим пользователям доступ для записи к конкретным каталогам. –  Bratchley 29.05.2013, 14:25

Создайте сценарий, который выполняет копирование после любых необходимых проверок и предоставления sudo доступ к этому.

Обратите внимание, что привилегированные сценарии оболочки считают плохой практикой; Вы могли бы хотеть пойти для, например, Python или Perl вместо этого.

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

0
27.01.2020, 23:21
  • 1
    Да, который был также чем-то, которое я имел в виду, но предпочел не делать. –  trox 30.05.2013, 01:27

Теги

Похожие вопросы