Необходимо добавить пользователя к wheel
группа:
gpasswd -a youruser wheel
С другой стороны, можно отключить проверку состава группы на su
в pam
путем редактирования
/etc/pam.d/su
и комментирование этой строки:
auth required pam_wheel.so use_uid
Это требует, чтобы пользователи были в wheel
группа, чтобы смочь переключить пользователя. Пользователь, переключающийся как некорневые работы снова, когда это pam
модуль отключен для su
.
Есть быстрые и простые способы сделать это с bash в качестве оболочки, но они не очень безопасны. (за последние несколько лет в директиве authorized_keys «command» и переменных среды Bash обнаружено несколько недостатков безопасности. Должно быть безопасным теперь, если нет другая потаенная ошибка...)
, Если вы хотите сделать это безопасно, но все еще хотеть написать сценарий в ударе, чтобы показать продукцию, я предложил бы писать маленькую программу C, чтобы действовать как раковина, которая управляет и показывает продукцию из вашего сценария удара. Программа C должна игнорировать свои аргументы и сбросить среду на безопасное значение по умолчанию, а затем форк/exec () сценарий bash со значением STDIN/dev/null. Таким образом, пользователь не имеет абсолютно никакого пути взаимодействовать со сценарием. Я могу привести пример, если нужно.
-121--115255-Думаю, это может сработать:
for i in *; do
fileTime=$(stat -c %Y "$i"); #Get last modification (since EPOCH)
formatDate=$(date +%Y%m%dT%H%m -d @"$fileTime"); #Get time in format YYYYMMDDTHHmm
mv "${i%%.*}"_"$formatDate"."${i#*.}"; #Appends "formatDate" before extension
done
С уважением.
-121--70030-В сценарии можно попробовать следующее:
EXT=${FILE#*.}
NAME=${FILE%%.*}
mv "$FILE" "$NAME$(date --reference "$FILE" '+%Y%m%dT%H%M').$EXT"
, если date
поддерживает -привязку
, указывающую дату последнего изменения ссылочного файла.
Думаю, это может сработать:
for i in *; do
fileTime=$(stat -c %Y "$i"); #Get last modification (since EPOCH)
formatDate=$(date +%Y%m%dT%H%m -d @"$fileTime"); #Get time in format YYYYMMDDTHHmm
mv "${i%%.*}"_"$formatDate"."${i#*.}"; #Appends "formatDate" before extension
done
С уважением.
Это все можно сделать как oneliner.
for i in *.* ; do mv "$i" "${i%.*}_$(date --reference "$i" +%Y%m%dT%H%M).${i##*.}"; done
Для буквальной временной метки, т.е. секунд с эпохи, вы можете просто использовать:
for i in *.* ; do mv "$i" "${i%.*}_$(date --reference "$i" +%s).${i##*.}"; done
Это имеет проверку безопасности, чтобы работать только с файлами, чьи имена содержат точки; он правильно обрабатывает файлы с пробелами в именах; и он предполагает (как это обычно бывает), что последнее поле с точками является расширением, а не ПЕРВОЕ поле с точками является именем файла, а остальное - расширением.
Спасибо muru за --reference
; я не знал об этой опции.