Замените оболочку пользователя mysql в файле / etc / passwd

Я ищу способ заменить конфигурацию оболочки пользователя mysql в / etc / passwd из командной строки, поскольку есть несколько серверов, на которых я хочу отключить оболочку для пользователя mysql.

фактический

mysql:x:498:498:MySQL server:/var/lib/mysql:/bin/bash 

Желаемый

 mysql:x:498:498:MySQL server:/var/lib/mysql:/sbin/nologin 

Не изменяйте /etc/passwd с помощью sed . Вместо этого используйте инструменты для взаимодействия с этим файлом.

В этом случае chpass / chpass , или, возможно, более общий usermod .

В большинстве систем:

 $ sudo chpass -s /sbin/nologin mysql 

или

 $ sudo chsh -s /sbin/nologin mysql 

должно сработать.

Вы не хотите редактировать /etc/passwd с помощью sed (или с vim / emacs ), и определенно не с sed -i .

Пользователь @JdeBP напоминает мне об утилите vipw в комментариях ниже. Это специальная команда, так же как visudo , которая позволяет вам редактировать /etc/passwd , заботясь о блокировке файлов и т. Д. Он также выполняет проверку согласованности / синтаксиса сохраненного файла перед установкой нового файла паролей вместо старого один. Для получения дополнительной информации см. Руководство по эксплуатации vipw в вашей системе. Это единственный безопасный способ вручную отредактировать файл паролей.

Также обратите внимание, что в некоторых Unix-системах оболочка входа по умолчанию устанавливается другими способами, чем через файл паролей. Например, в ОС X обычные пользователи даже не имеют записи в /etc/passwd .