Как насчет расширения параметра bash?
$ var=20180402
$ echo "${var::4}-${var:4:2}-${var:6}"
2018-04-02
Помимо root, есть другие пользователи, которые являются демонами (менеджерами процессов ), которых не следует менять.
Я предлагаю выполнить следующую команду от имени пользователя root:
for user in $(grep "/home" /etc/passwd | cut -s -d':' -f1)
do
passwd -e $user
done
Всегда проверяйте участки кода, особенно перед применением команды, изменяющей возможность входа пользователей в систему. Возможно, вам придется отменить свою работу в спешке, если вы ошиблись.
Сначала попробуйте следующее, чтобы убедиться, что у вас есть действительный список пользователей, срок действия пароля которых вы хотите удалить:
grep "/home" /etc/passwd | cut -s -d':' -f1
Из вырезать (1)справочную страницу:
cut - remove sections from each line of files
-s, --only-delimited
do not print lines not containing delimiters
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
-f, --fields=LIST
select only these fields; also print any line that contains
no delimiter character, unless the -s option is specified
Я предлагаю создать нового пользователя, попробовать passwd -e
с этим именем пользователя, выйти из системы и снова войти в систему, чтобы убедиться, что ожидаемое поведение получено, прежде чем применять ту же команду к другим пользователям.