С -L
, это исследует свойства файла - содержание или метаданные, не те из ссылки. Например, если Вы используете -atime
, это проверит atime
из файла, не ссылки:
$ find testdir/ -name link -newer testdir/ref
testdir/link
$ find -L testdir/ -name link -newer testdir/ref
$
testdir/link
был создан после testdir/ref
, но файл, на который это указывает, не был.
Можно использовать chpasswd
сделать это, как это:
echo "username:newpassword" | chpasswd
Можно передать по каналу в chpasswd
из программ кроме echo
, если удобный, но это добьется цели.
Править: Чтобы генерировать пароль в рамках сценария оболочки и затем установить его, можно сделать что-то вроде этого:
# Change username to the correct user:
USR=username
# This will generate a random, 8-character password:
PASS=`tr -dc A-Za-z0-9_ < /dev/urandom | head -c8`
# This will actually set the password:
echo "$USR:$PASS" | chpasswd
Для получения дополнительной информации о chpasswd
, см. http://linux.die.net/man/8/chpasswd
(Команда для генерации пароля была из http://nixcraft.com/shell-scripting/13454-command-generate-random-password-string.html),
Можно использовать OpenSSL для генерации случайного пароля (16 символов, в этом случае):
# 1000 bytes should be enough to give us 16 alphanumeric ones
p=$(openssl rand 1000 | strings | grep -io [[:alnum:]] | head -n 16 | tr -d '\n')
Затем подайте хешированный пароль к useradd
или usermod
# omit the "-1" if you want traditional crypt()
usermod -p $(openssl passwd -1 "$p") <username>
Кредит, где должный: поколение пароля адаптировано от похожего метода, который использует /dev/urandom
вместо openssl
.
useradd должен работать (я сделал его на Ubuntu). Возможно, проверьте, что каждый из Ваших args корректен (тебя, группы существуют, путь является правильным колотить). Можно выполнить команду только с паролем и пользователем, и затем использовать userdel, чтобы удалить и затем повторить с большим количеством параметров, видеть то, что каждый вызывает проблему (метод решения "в лоб").
Существует также newusers (см. страницу справочника), по крайней мере, в соответствии с Ubuntu, где Вы даете ей файл с passwd файлом как информация, включая незашифрованные пароли и она создаст тех пользователей. Хороший способ сделать многих пользователей сразу.
самым простым путем я нашел:
PASSWD="mySeCr3t-default-pa55"
echo ${PASSWD} | passwd --stdin username_here
sudo echo "username:newpass" | chpasswd
? Поскольку поднятые полномочия отsudo
не проходите через канал, таким образом,chpasswd
работал бы как обычный пользователь. Это может быть зафиксировано путем перемещенияsudo
, как вecho "username:newpass" | sudo chpasswd
. Существуют также другие проблемы, которые могут вызвать то сообщение об ошибке, но ошибки полномочий как это, вероятно, наиболее распространены. – Dominick Pastore 02.07.2014, 16:38