Параметры командной строки Shell доступны через $1
(первое), $n
(энное), или $*
(все аргументы), таким образом, Ваш сценарий должен запуститься:
#!/bin/bash
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
Теперь аргумент имени доступен из сценария как $name
.
Получить использование метки времени date(1)
управляйте и дайте ему спецификатор формата, таким образом, это производит формат, который Вы хотите:
now=$(date +%Y%m%d%H%M%S)
Теперь $now
содержит текущую дату и время.
Таким образом, можно создать файл журнала таким образом:
logfile=/path/to/log/file/mylogfile.$now
echo "[$name]=[$now]" >> $logfile
Вы - более обеспеченное использование функции оболочки для входа сообщений, поскольку будет легче использовать:
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
Обратите внимание, что функции оболочки получают доступ к своим собственным аргументам таким же образом как к сценарию (через $1
и т.д.)
Таким образом, первоначальный сценарий похож на это:
#!/bin/bash
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
now=$(date +%Y%m%d%H%M%S)
logfile=/path/to/log/file/mylogfile.$now
logit name = $name
(обратите внимание, что файл журнала не находится в точном формате, который Вы указали; это находится в лучшем с меткой времени в начале каждой строки).
Можно использовать usermod
управляйте для изменения оболочки входа в систему пользователя.
usermod -s /sbin/nologin myuser
или
usermod -s /usr/sbin/nologin myuser
Если Ваша ОС не обеспечивает/sbin/nologin, можно установить оболочку на команду NOOP, такую как/bin/false:
usermod -s /bin/false myuser
Вы редактируете /etc/passwd
файл и изменение пользователи окружают от /bin/bash
, или /bin/sh
кому: /sbin/nologin
Во-первых, отключите пароль, с помощью passwd -l username
.
Также отметьте в man
страница для passwd
для опции -l
:
-l, --lock
Lock the password of the named account. This option disables a password by changing it to a value which matches no
possible encrypted value (it adds a ´!´ at the beginning of the password).
Note that this does not disable the account. The user may still be able to login using another authentication token
(e.g. an SSH key). To disable the account, administrators should use usermod --expiredate 1 (this set the account's
expire date to Jan 2, 1970).
Users with a locked password are not allowed to change their password.
Вы можете использовать команду chsh:
~# chsh myuser
введите новые детали оболочки, когда требуется:
Login Shell [/bin/sh]: /bin/nologin
или короче версия:
~# chsh myuser -s /bin/nologin
Изменение оболочки входа в систему не обязательно препятствует аутентификации пользователей (за исключением некоторых служб, которые проверяют, упоминается ли оболочка пользователя в / и т. Д. / снаряды
).
Люди могут по-прежнему иметь возможность аутентифицироваться в различных службах, которые ваша система предоставляет пользователям unix, и могут иметь право выполнять некоторые действия, хотя, вероятно, не запускать произвольные команды напрямую.
Изменение оболочки на / bin / false
или / usr / sbin / nologin
не позволит им запускать команды только в тех службах, которые можно использовать для выполнения команд (вход в консоль , ssh, telnet, rlogin, rexec ...), поэтому влияют на авторизацию только для некоторых служб.
Например, для ssh
это все еще позволяет им выполнять переадресацию портов.
passwd -l
отключит аутентификацию по паролю, но пользователю все равно может быть разрешено использовать другие методы аутентификации (например, authorized_keys
с ssh
).
По крайней мере, с pam
в Linux вы можете использовать модуль pam_shells
, чтобы ограничить аутентификацию или авторизацию для пользователей с разрешенной оболочкой (упомянутых в / etc / shells
).Для ssh
вы захотите сделать это на уровне авторизации ( аккаунт
), поскольку для аутентификации sshd
дополнительно использует pam
для других методов аутентификации (например, authorized_keys
), или вы можете сделать это с помощью директив sshd_config
в / etc / ssh / sshd_config
(например, AllowUsers
и друзья).
Помните, что добавление некоторых ограничений в глобальную авторизацию pam потенциально может помешать запуску cron
заданий от имени этих пользователей.
Чтобы запретить пользователю вход в систему и даже аутентификацию через ssh, которая включает переадресацию портов (, как описано здесь Стефан ), я изменяю пользователя, чтобы он был похож на системного nobody
пользователя:
/etc/shadow
(с *
или !!
в соответствующем поле)/etc/passwd
(, например. /sbin/nologin
в нужном поле)/etc/passwd
(например. /
в нужном поле)
/bin/false
кажется более распространенным, чем/bin/true
. – jw013 07.11.2012, 19:19nologin
на самом деле должен быть найден в/usr/sbin/nologin
– xebeche 19.11.2013, 14:05nologin
– Javier 12.12.2014, 00:46/usr/local/bin/maybe
который/dev/urandom
ly выбирает между теми двумя. Возможно, я должен использовать его :D – hegez 04.10.2017, 19:30