как я могу разрешить одному пользователю su другим без разрешения root-доступа?

<p>я хотел бы разрешить определенным пользователям использовать su для другой учетной записи пользователя без необходимости знать пароль этой учетной записи, но не разрешать доступ к любой другой учетной записи пользователя (например, root).<br> например, я бы хотел разрешить tom dba su для пользователя oracle, но не для пользователя tomcat или root.</p><p>я полагаю, что это можно сделать с помощью файла/etc/sudoers - возможно ли это? если да, то как?</p>

<p>да, это возможно.</p><p>в <strong>/ etc/sudoers</strong> элемент, следующий сразу за равенством, - это пользователь, которому разрешено выполнять команду.</p><pre><code>tom all=(oracle) /bin/chown tom * </code></pre><p>пользователь (том) может набрать <strong>sudo -u oracle/bin/chown tom/home/oracle/oraclefile</strong></p>

<p>добавьте в ваш/etc/sudoers что-то вроде</p><pre><code>tom all=(oracle) all </code></pre><p>тогда пользователь том должен иметь возможность использовать sudo для запуска в качестве пользователя oracle с параметром -u, не позволяя тому</p><p>то есть получение shell в качестве пользователя oracle (ну, учитывая, что ваш sudo достаточно новый, чтобы иметь опцию -i).</p><pre><code>sudo -u oracle -i </code></pre>

<p>чтобы только предоставить возможности в вопросе, добавьте следующее в/etc/sudoers:</p><pre><code>tom all=(oracle) /bin/bash </code></pre><p>тогда том может:</p><pre><code>sudo -u oracle bash -i </code></pre>

<blockquote> <p>например, я бы хотел разрешить tom dba su пользователю oracle, но не пользователю tomcat или пользователю root.</p> </blockquote><p>мне нужно было сделать это с системой недавно, и мне было трудно найти мои заметки о альтернативной установке, которую я использовал несколько лет назад, которая также допускала синтаксис <code>su <user></code>. в моей ситуации мне нужно было разрешить нескольким пользователям <code>su</code> определенному пользователю.</p><p>создать группу с помощью <code>addgroup <groupname></code> что другие пользователи смогут <code>su</code> без пароля. затем добавьте эту группу к каждому пользователю, которого вы хотите иметь возможность <code>su</code> для этого пользователя без пароля: <code>usermod -a -g <groupname> <username></code> (или <code>usermod -a -g oracle tom</code>). изменения в группе могут не вступить в силу до следующего входа в систему.</p><p>примечание: в вашем случае у вас уже есть группа, потому что группа <code>oracle</code> была бы создана, когда вы сделали пользователя oracle с <code>adduser oracle</code>.</p><p>теперь редактируйте <code>/etc/pam.d/su</code> и ниже:</p><pre><code># this allows root to su without passwords (normal operation) auth sufficient pam\_rootok.so </code></pre><p>..добавить строки правил авторизации, поэтому раздел выглядит так:</p><pre><code># this allows root to su without passwords (normal operation) auth sufficient pam\_rootok.so auth [success=ignore default=1] pam\_succeed\_if.so user = <groupname> auth sufficient pam\_succeed\_if.so use\_uid user ingroup <groupname> </code></pre><p>заменить <code><groupname></code> с <code>oracle</code> в этом случае. это позволит любому пользователю, который является частью <code><groupname></code> до <code>su <groupname></code></p><p>теперь <code>tom</code> может <code>su oracle</code> и если вам нужно предоставить другим пользователям такой же доступ, добавьте их в группу <code>oracle</code>.</p><p>похожий вопрос <a href="https://apple.stackexchange.com/questions/82438/allow-sudo-to-another-user-without-password">здесь</a> </p>