Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Проверка пользователя на вход

Приветствую, встал вопрос такой. Как написать в скрипте фоновый процесс, который бы чекал чере каждую минуту, что данный пользователь с данным именем вошёл в ситсему, и если да, то он должен выдать сообщение и завршиться иначе продолжить работу. А вторым параметром скрипта можно... ну допустим время, которое этот процесс работает.

Добавлено через 2 часа 14 минут
Уже не надо, сам всё написал, кому понадобится:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
# Любой x-скрипт должен начинаться со строки: #!/bin/x, где x - язык скрипта
# Это своего рода указатель на язык, на котором будет писаться скрипт
echo "Start proc..." # Вывод на терминал 
 
read -p "Please, enter the name of the user who will need to check: " user_name # Ввод имени юзера, которое будет проверяться
read -p "and enter time:" time                          # Ввод тайминга (время ожидания) в !секундах!
 
t=0                     # Счётчик тайма
name="$(whoami)"                # Имя пользователя в системе на данный момент
 
echo "Starting proc..."             # Сообщение, сигнализирующее о начале процесса
# Цикл: пока счётчик не достиг границы
while (($t < $time)); do
# Кейс по имени
 case $user_name in
    # Если имя совпало, то выводим смсочку и заканчиваем программу :3
    $name) echo "This user is on the system!" 
           break;;
    # Иначе информируем юзера, что мы его подождём и
        *) echo "I'm wait you :)"
           sleep 60             # уходим в сон на 60 секунд
           # let t+=60;;            # наращиваем счётчик на 60
 esac                       # конец кейса
done;                       # конец цикла
kill                        # DEUS VAULT!!! IERUSALIM!
P.S. Не исключено, что можно лучше
Ответ: nezabudka, я имел ввиду, что значат по отдельности cut, -d, -f1 а так суть понятна, да только вот команды бы знать.

Добавлено через 1 час 5 минут
nezabudka, Я так понял, что опция -f1 вырезает из файла, где хранятся данные о пользователях, 1й столбец. а -d что делает?

Добавлено через 5 минут
nezabudka,-d ' ' это мы говорим, что разделитель пробел? Окей, а что делает команда check &? Проверяет что?

Добавлено через 14 минут
А, это связано с именем функции... А зачем это писать? "}" не достаточно?
Вопрос: Создание пользователя в терминале и добавление ему прав

Здравсвуйте.
Поделитесь опытом, по созданию в терминале пользователей и назначение им прав.
Кто может написать код по этому вопросу:

Доступ пользователя на чтение и запись, доступ группы на чтение и выполнение, доступ только на чтение для остальных

P.s создал пользвователя
Bash
1
 adduser user1
Ответ: Вообщем с тяжелым трудом справился сам) спасибо тем кто мне помог т.е мне самому)


1. Создайте пользователя user1.
Для создания нового пользователя используем команду под правами суперпользователя «adduser user1» в терминале:
2. Войдите от имени созданного пользователя, используя виртуальный терминал.
Для входа под пользователем user1 можно вызвать терминал используются комбинации клавиш <Ctrl>+<Alt>+<F1>указать логин и пароль или воспользоваться командой sudo –su user1, где так же потребуется ввод пароля.

3. Комбинацией клавиш <Ctrl>+<Alt>+<F7> перейдём к графическому терминалу.
4. Проверьте текущие права доступа к файлу.
Используем пакетный файл с названием «cp.sh», и расположенный в: /home/black/KP.
Для просмотра прав файла используем команду: «ls cp.sh –l»:
Установлены следующие права:
Владелец – r - чтение, w - запись, x - выполнение
Группа – r - чтение, w - запись, x - выполнение
Прочие – r – чтение.

5. Запускаем файл cp.sh от имени пользователя user1.
Из-за того, что для остальных пользователей доступно только чтение, то файл запускается, но не может вносить изменения. Поэтому получаем отказ в доступе.

6. От имени пользователя black назначьте права доступа к файлу -
Указываем команду: chmod u=rw, g=rx, o=r cp.sh

7. Попытайтесь запустить указанный файл от имени пользователя user1. Объясните полученный результат.
Отказано в доступе т.к доступ остальным только на чтение.

8. Измените пользователя user1, переместив его в ту же группу, к которой принадлежит black. Для редактирования информации о пользователях используем команду usermod с правами суперпользователя. В качестве параметров укажем –g (первичная группа пользователя), название группы и имя пользователя:

9. Завершили сеанс пользователя user1 (команда logout или exit - для графического терминала) и снова вошли в систему от его имени.

10. Снова запускаем пакетный файл cp.sh.
Объясните полученный результат.

После перемещения пользователя user1 в группу black, пакетный файл cp.sh открылся на чтение и выполнение т.к доступ для группы rx.

11. Удалите пользователя user1.
Для того, чтобы удалить пользователя используем команду userdel с правами суперпользователя и указанием имени удаляемого пользователя:

Доступ пользователя на чтение и запись, доступ группы на чтение и выполнение, доступ только на чтение для остальных
Абсолютный вид: chmod 00654 cp.sh
Символьный вид: chmod u=rw,g=rx,o=r cp.sh
Вопрос: Проверка введеных слов на русском. Не работает

Добрый день. Установил Linux Mint, практически все нравится, переход с Windows был безболезненный, отличии от перехода на Ubuntu. Но... Есть проблема, которая дико раздражает. Почему-то в русском языке мне подчеркивает все слова, мол они не правильны. И лазил в настройки языка, там ничего подобного нету. Ну, или я не нахожу.
Хочу заметить, что такое бывает не везде! Например, когда я пишу данную тему, все хорошо, но, возьмем, к примеру, фейсбук, там данная проблема сохраняется.

Можно или как-то отключить вообще проверку или пофиксить этот баг?
Помогите, пожалуйста.

P.S.: Еще в Yandex Browser, почему-то дергается мышка и вообще странно себя ведет. Такое бывает и в хроме, но уже реже.
Ответ: Про убунту точно не скажу, но еще может установлена глобальная проверка орфографии только на аглицком.
Попробуйте правой кнопкой мыши щелкнуть на значке раскладки клавиатуры и выбрать "параметры". Ну а там
разберетесь, если она вам нужна то добавте параметр и на проверку в кирилице.
Вопрос: Скрипт "Создание пользователей"

Добрый вечер! Помогите пожалуйста написать скрипт "создание пользователей". Использую систему ASP Linux с ядром
Linux 2.6.26.3-29.0.140asp.i686

Само задание:
Скрипт предлагает на выбор: создать группу, создать пользователя, удалить пользователя, выход. Группа - создается новая группа для пользователей, права и все необходимые параметры вводим. Пользователь - создает нового в выбранной из существующих (показать список) группе, права и все необходимое вводим по ходу создания. Удаление - удаляем пользователя.

Т.к. задание дали совсем не по программе, уже голову сломала как это описать( Уже сколько ломаю голову, даже не знаю с чего начать. Заранее большое спасибо!
Ответ: Вот что я сейчас написала на fedora23
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env bash
#filename admin.sh
echo "Wellcome to Rassia"
echo "What you want to do?"
select task in  ADDUSER ADDGROUP DELUSER EXIT
 
do
    case $task in
        ADDUSER)
            read -p "Введите имя нового пользователя: " user
            echo "Выберите основноую группу для нового пользователя: "
            awk -F: '$3 ~ /1[0-9][0-9][0-9]/ {print $1;}' /etc/group
            read -p "Введите выбранное имя группы для нового пользователя: " group
            useradd -N -g $group $user
            read -p "Задайте пароль пользователя $user: " pswd
            chpasswd <<< "$user:$pswd"
            [[ $? == 0 ]] && echo "Ползователь создан" && exit 0;;
        ADDGROUP)
            echo 'what?';;
        DELUSER)
            read -p "Введите имя пользователя: " user
            [[ $? == 0 ]] && echo "Пользователь успешно удален" && exit 0;;
        EXIT)
            echo 'by!'
            exit 0;;
        *)
            echo "What is this?";;
    esac
done
У меня скрипт работает, создание группы я пропустила, если что стучите.
Прошу учитывать что я далеко не эксперт. Удачи

Добавлено через 8 минут
После 21 строчки пропустила команду
Bash
1
userdel -r $user
Ну можно еще после 19 и 27
поставить exit 0
Вопрос: Как вывести список процессов bash, запущенных определённым пользователем?

Здравствуйте!

Люди, не могли бы мне помочь?

Вот задание:
"Реализовать командный файл, который при старте выводит информацию о системе, информацию о пользователе, запустившем данный командный файл, далее в цикле выводит список активных пользователей в системе – запрашивает имя пользователя и выводит список всех процессов bash запущенных данным пользователем."

Меня интересует только выделенная часть текста.

1. "список активных пользователей в системе" - здесь я записал команду who, но не уверен ее в правильности. Т.к. в литературе встречались разные описания: то список зарегистрированных пользователей, то список активных пользователей. Уточните мне, пожалуйста.



2. "список всех процессов bash запущенных данным пользователем" - здесь я вовсе не знаю какую команду писать. Есть предположение что ps, но я не нашел в справочниках как выдать только bash-процессы. Так как выдать этот список?
Ответ: Как будет выглядеть данное задание?
Написать командный файл подсчитывающий количество определенных процессов пользователя (Ввести имя пользователя и название процесса)
Вопрос: Debian при вводе su и пароля Сбой при проверке подлинности

Заходит по ssh ввожу логин пароль, все ок, хочу под суперадмином ввойти пароль ввожу правильный выдает Сбой при проверке подлинности что делать sudo выдает команда не найдена
Ответ: Что его вспоминать я только его и использовал, я захожу локально ввожу su -c "apt-get -y install sudo" ввожу пароль выдает Сбой при проверке подлинности
Вопрос: запрет подключения по ssh после добавления пользователя в группу www-data

Поясню ситуацию перед тем как сформулировать вопрос.
1) Есть vds Debian 7. Apache работает от пользователя www-data.
2) Работаю на сервере по ssh как username.
3) Добавил пользователя username в группу www-data командой
Bash
1
usermod -a -G www-data username
4) При попытке перелогиниться как username получаю сообщение
Bash
1
Connection to xx.yyy.zzz.zzz closed by remote host
5) Удаляю пользователя username из группы www-data и логинится нормально.

Опишу для чего это мне нужно.
1) Есть файлы сайта, которые принадлежат группе и пользователю www-data:www-data.
2) Часть файлов хочу разрешить редактировать пользователям группы www-data.
3) Поэтому и пытаюсь добавить пользователя username в группу www-data чтобы не редактировать все время как root пользователь.

Вопросы:
1) Как добавить себя в группу www-data и при этом нормально логиниться?
2) Стоит ли добавлять себя в группу www-data или искать другое решение задачи?
Ответ:
Сообщение от BlackSpace
1) Как добавить себя в группу www-data и при этом нормально логиниться?
Смотрите в настройки ssh сервера. Возможно, там перечислены пользователи или группы, которым разрешен доступ.
Сообщение от BlackSpace
2) Стоит ли добавлять себя в группу www-data или искать другое решение задачи?
В принципе - правильно. Я бы разрешил пользователям из ww-data (кроме себя) только sftp с chroot-ом в нужный каталог.
Вопрос: проверка на принадлежность множеству целых чисел

Доброго времени суток,
у меня есть файл, в нем есть строки (слова), целые числа и десятичные. Подскажите пожалуйста, как сделать проверку на принадлежность к целым числам, чтобы потом можно было работать только с ними. Пробовал через принадлежность множеству элементов и ещё проверял на равенство шаблону, но что-то не так делаю. Помогите пожалуйста.

Добавлено через 1 час 17 минут
Всё, разобрался, если кому интересно:
i - проверяемый элемент

expr $i : '-\?[0-9]\+$' && echo yea || echo not

только если мы проверяем 34,4 - не целое, а если проверяем 34.4 - он ругается, что выражение не правильное
такая же штука со строчками: "string" - не целое, но если на русском: "строка" - пишет ту же ошибку, что и 34.4
Ответ: Для проверки expr не самый лучший инструмент. Если это файл, я бы посоветовал grep:
Bash
1
grep -Po '(^|\s)\K-?[0-9]\b(?![,.]0*[1-9]+)' file
Добавлено через 8 минут
Если все слова|числа идут по 1 в строке — ещё проще
Bash
1
grep -Ex '\-?[0-9]+([.,]0+)?' file
Вопрос: Не могу добавить пользователя в openldap.

В общем-то, ldap пока нужен суперпростой - только пользователи и пароли. Даже группу можно одну. И никаких пока что апачей и самб.
У пользователей RHEL5.7.
Я для сервера взял CentOS 6.5. Поставил openldap-2.4.23-32.el6_4.1.

Хоть я и понял, что есть динамическая и статическая конфигурация, но не понял как сказать ldapу каким способом работать.
Поэтому пошёл сразу двумя путями, как братья Ульяновы:

Александр: настроил в /etc/openldap/ файлы slapd.conf и ldap.conf.

Владимир: подредактировал ldifы - {0}config, {1}monitor, {2}bdb и создал свой base.ldif:
_______________________________________
dn: dc=o64ldap,dc=geoad,dc=ru
objectClass: dcObject
objectClass: organization
dc: o64ldap

dn: ou=People,dc=o64ldap,dc=geoad,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=o64ldap,dc=geoad,dc=ru
objectClass: top
objectClass: organizationalUnit
ou: Groups
_______________________________________

#ldapadd -x -W -D "cn=dbroot,dc=o64ldap,dc=geoad.dc=ru" -f base.ldif
Был ответ, что всё хорошо, а вот дословно его слов не помню.

Проверяем:
# ldapsearch -x -D "cn=dbroot,dc=o64ldap,dc=geoad,dc=ru" -W
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <dc=geoad,dc=ru> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1

Честно скажу, своим дилетантским взглядом не вижу ошибок. Вижу, что не найдены какие-то объекты, но не понимаю критично это или нет?

Каждую ошибку, которая возникает, ищу через яндекс и гугл, но это не всегда помогает, поэтому и пришёл сюда.

Теперь создаю пользователя:
_______________________________________
dn: cn=oneuser,cn=People,dc=o64ldap,dc=geoad,dc=ru
objectClass: People
objectClass: shadowAccount
sn: oneuser
uid: oneuser
userPassword:{SSHA}ektfCMZ0Ygl0qYWcfHHcPMz4GpZ8YeiC
homeDirectory: /home/oneuser
loginShell: /bin/csh
uidNumber: 5072
gidNumber: 100
_______________________________________

#ldapadd -x -W -D "cn=dbroot,dc=o64ldap,dc=geoad,dc=ru" -f oneuser.ldif
Enter LDAP Password:
adding new entry "cn=oneuser,cn=People,dc=o64ldap,dc=geoad,dc=ru"
ldap_add: Invalid syntax (21)
additional info: objectClass: value #0 invalid per syntax

Понимаю, что ругается на objectClass: People, но ничего поделать не могу, потому что если убираю его, то:

#ldapadd -x -W -D "cn=dbroot,dc=o64ldap,dc=geoad,dc=ru" -f oneuser.ldif
Enter LDAP Password:
adding new entry "cn=oneuser,dc=o64ldap,dc=geoad,dc=ru"
ldap_add: Object class violation (65)
additional info: no structural object class provided

Писал вместо People - organizationalUnit, писал top.
Вместо objectClass писал ou.
Всё равно какие-нибудь ошибки.

Может я пошёл не тем путём?

Третий день лопачу интернеты, но продвигаюсь к цели очень медленно, хотя нормальные люди делают это за 10 минут.
Ответ: Ну что же вы, товарищи?
Будто бы никто никогда ldap не настраивал?
Уж если так неохота было выдавать тайны настройки ldap, то могли бы подсказать в таком стиле:
"Гражданин, зачем тебе ldap? Это не твоћ, сделай NIS с твоими-то облегчћнными запросами."

Сам догадался. Сам сделал.
Две недели имелся с openldapом, так и не смог настроить. Где-то затык и понять не могу где. Может и вижу ошибку, но не пойму что это она.
Забил.
Сделал NIS.

Но остались два вопроса, связанные как раз с заведением новых пользователей:
1. Каждый раз после завода нового пользователя на сервере с помощью adduser и passwd надо делать ypinit -m ? А как-то напрямую нельзя их сразу в NIS?
2. При первом логине нового пользователя на каком-нибудь компе файлы для дефаултного хоме берутся из локального /etc/skel, а не с сервера NIS, это можно победить?
Вопрос: SSH, Пользователям из группы www-data (кроме себя) только sftp с chroot в нужный каталог

Описание ситуации.
1) Имеется vds Debian 7.
2) В файле /etc/ssh/sshd_config пользователям группы www-data разрешен только sftp с chroot в нужный каталог.
Bash
1
2
3
4
5
Match Group www-data
        AllowTCPForwarding no
        X11Forwarding no
        ChrootDirectory %h/../../dir_name
        ForceCommand internal-sftp -u 0007
3) Есть необходимость добавить пользователя username в группу www-data для редактирования части файлов сайта, владельцем и группой которых является www-data:www-data. Добавление предполагается командой

Bash
1
usermod -a -G www-data username
Проблема.
Если добавить пользователя username в группу www-data, то будет запрещён доступ по ssh для username.

Вопрос - как разрешить пользователям из группы www-data (кроме себя) только sftp с chroot в нужный каталог? То есть для username оставить возможность подключения по ssh.

Предыдущая моя тема, связанная с данной -
Ответ: gng, способ с помощью sshd очень простой и он сработал. Это решило мою проблему, за что Вам большое спасибо.

Способ
Bash
1
su username
не устраивает по причине необходимости постоянно работать на сервере как root для редактирования файлов сайта. В моём понимании должно быть так - есть необходимость часто редактировать файлы в определённой директории - выдал соответствующие права группе пользователей и логиниться на сервере как пользователь данной группы.

Если нужно лишь иногда редактировать какие-то файлы, то можно и не заморачиваться а работать как root для данных задач.

Моё мнение исходит из рекомендаций в разных источниках на работать как root в системе, кроме случаев когда это действительно необходимо, например apt-get update или chmod и т.д.

Ваши советы, мнения и высказывания по данному вопросу охотно почитаю.