Есть ли способ разрешить su только для определенных пользователей (например, использование visudo для sudo).
Причина этого в том, что я хотел бы сохранить простой (ненадежный) пароль для моей учетной записи root и иметь учетные записи, которые могут su / sudo иметь возможность входить в систему только с использованием pub / закрытого ключа.
Тогда все другие учетные записи не смогут использовать su как root или как учетная запись, которая может su.
Да, трюк с группой wheel также доступен в Linux: вам просто нужно настроить для него pam, и тогда только члены wheel могут запускать su.
В Debian нужно раскомментировать строку wheel /etc/pam.d/su
Это определенно первое, что нужно сделать на любом сервере, иначе любой взломанный веб-сервер может привести к взлому root.
Слабый пароль для root - это глупо, независимо от элементов управления на «su». Даже если пользователь root может входить в систему только с консоли в машинном отделении с ограниченным доступом, я бы не позволил пользователю root иметь слабый пароль.
Я предлагаю полностью отключить su и использовать sudo для всего. Под отключением я подразумеваю любое из:
rm -f /bin/su
).chmod o-x /bin/su
или chmod go-x /bin/su
).chmod u-s /bin/su
).Остаточная проблема с отключением su путем его удаления или удаления битов разрешений заключается в том, что некоторые системные сценарии могут зависеть от su
присутствие. Для этого нет особенно чистого решения, но их, как правило, немного, потому что «su» запрашивает пароль, а запрос не нравится в средах со сценариями. Другой раз, когда "su" используется, когда "root" запускает команду, чтобы стать другим пользователем; это поддерживается удалением бита setuid (пользователь root может запускать его, но никто другой не может делать это с пользой). Вы можете усилить это, удалив публичное и, возможно, групповое разрешение на выполнение (chmod u-s,go-rwx /bin/su
).
Если вы не используете какие-либо системные средства, будьте очень осторожны; перед запуском в производство.
Если ваша система использует PAM, вы можете отключить su
правильно, поместив что-то подобное в /etc/pam.d/su
:
# This allows root to su without passwords (normal operation)
auth sufficient pam_rootok.so
# Disable all other uses of su
auth requisite pam_deny.so
# [rest of file]
Во FreeBSD только пользователи группы 'wheel' могут su
.
Какую ОС вы используете?
Вы можете редактировать /etc/sudoers
файл, чтобы контролировать, кто может использовать sudo
и что они могут сделать. Если вы разрешаете программы, которые могут порождать оболочку (экранирование оболочки), пользователь может делать что угодно.
Увидеть man
страница для sudoers
Больше подробностей.
Во-первых, su и sudo - это совершенно разные команды.
судо позволяет выполнять одну команду от имени пользователя root (или другого пользователя, если он указан), где ее поведение контролируется / и т.д. / sudoers.
вс запустит оболочку от имени пользователя root (или другого пользователя, если он указан).
Что я могу вам порекомендовать - оставьте надежный пароль root и поместите всех пользователей, которым нужны привилегии root, в / etc / sudoers (Отметьте этот статья).
Другая, менее рекомендуемая идея - использовать сценарий su wrapper.
В зависимости от того, какую авторизацию использует ваша машина, вы можете редактировать /etc/pam.d/su или, если ваша система не использует pam, вы можете создать файл / etc / suauth с правилами для пользователей или групп, имеющих доступ к su. как корень.
Я просто хочу повторить то, что пытались сказать другие, но я не совсем уверен, что вы уловили. Если вы отключите доступ к команде su для всех пользователей, ни один пользователь, даже если у него есть собственная копия su, не сможет переключиться на другую учетную запись пользователя. Это связано с тем, что для команды su необходимо установить бит suid root, чтобы пользователь, пытающийся запустить команду, мог изменить свой UID. Было бы гораздо лучше иметь очень надежный пароль root, отключить команду su для всех пользователей и предоставить тем пользователям, которым вы хотите иметь привилегии root, доступ sudo.
Похоже, вы боитесь, что люди, у которых есть доступ к sudo, поделятся своим паролем с другими пользователями, предоставив им также root-доступ, что на самом деле является проблемой, которую вы не сможете решить. Привилегированный пользователь всегда может просто позволить им сидеть за своим компьютером, если у вас также настроены открытые / закрытые ключи. Все сводится к тому, что вы можете дать пользователю права администратора, только если вы доверяете этому пользователю.
Да. chmod su на 700 и поместите всех, кого вы хотите использовать, в корневую группу, в / etc / group. Однако использование sudo почти наверняка лучше.