Я хочу, чтобы один из моих пользователей sudo мог только сбрасывать пароль пользователя. Я не хочу, чтобы у них были другие административные привилегии, кроме этих.
Я знаю, как заблокировать определенный доступ, но как заблокировать все, кроме passwd
.
В первую очередь, если Вы даже рассматриваете административные привилегии ограничения какого-либо пользователя, необходимо сначала сделать sudo gpasswd -d [username] sudo
как можно скорее, потому что у них есть полный доступ к системе, пока не удалено из sudo.
Теперь, существует способ позволить этот тип задачи, но это все еще очень опасно и проблематично и может привести к катастрофическим ситуациям.
Очевидно, Вы не можете позволить этому пользователю иметь неограниченный доступ к passwd
потому что затем не будет ничего останавливающего его от passwd root
.
Однако Вы все еще хотите предоставить ему доступ для изменения паролей пользователей, не принадлежащих административной группе. Это - стратегия, о которой я могу думать:
Вам назвали продвинутого пользователя fakeboss
это будет изменять пароли для пользователей. Вы делаете его специальной папкой, позволяет, называют его /usr/local/fakeboss/
то единственное его группа и sudo может получить доступ.
Корень создает названного рядового пользователя user1
, и сценарий, который будет читать и выполнять разрешение, только названное user1pw.sh
с:
chmod 755 user1pw.sh
и вставляет его /usr/local/fakeboss/
в корневых записях сценария, (1$ является аргументом нового пароля, передал, и я проверил его быстро, но большая часть передачи по каналу других команд или привела к отклоненному разрешению или измененный user1 пароль к переданной по каналу строке, но тем не менее я должен буду проверить эту часть дважды),
#!/bin/bash
filtered=echo $1 | tr -d '[:cntrl:]'
echo "user1:$filtered" | chpasswd
echo "You just reset password for user1"
затем в /etc/sudoers
корень добавляет
fakeboss ALL = NOPASSWD: /usr/local/fakeboss/user1pw.sh
а также /usr/local/fakeboss/
к secure_path строке в/etc/sudoers
Вы завершаете его псевдонимом для fakeboss
alias user1pw ='sudo /usr/local/fakeboss/user1pw.sh'
и они теперь могут измениться user1
пароль к новому, с которым они отправляют как спор, позволяет, скажите:
user1pw IamYourBoss!
который установит user1 пароль на IamYourBoss!
и эта тактика может быть реализована для всех пользователей, выбранных корнем, и эти пользователи смогут разблокировать свои пароли fakeboss
. Что еще более важно, fakeboss
не имеет никакого доступа к сценариям сброса пароля, поскольку они являются незаписываемыми, и имеет нет passwd
полномочия, ни любой sudo
полномочия вне этих сценариев сброса пароля. Одной последней вещью, которую я добавил бы, является, конечно, некоторый серьезный механизм входа также, возможно, системное сообщение, отправленное в root
утверждение этого user1
имел их сброс пароля в этом и на этот раз для безопасности и целостности.
Я записал это быстро и, возможно, пропустил деталь или два, но это - конечно, путь, более безопасный, чем разрешение pseudo-sudo пользовательского неограниченного доступа к passwd
.
Править: Добавленная входная фильтрация,