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

Здравствуйте!У меня случилась следующая проблема.Загружался в сингл моде, подмонтировал файловую систему, сделал passwd, а затем запустил fsck, вовремя чего машина перезагрузилась, и теперь при запуске ругается на отсутствие пользователей.подскажите, пожалуйста, их как-нибудь можно восстановить?
Ответ:

а почему машина перезагрузилась?
Вопрос: Отформатировать информацию из /etc/passwd, /etc/shadow, /etc/group заданным образом

Пропарсить файлы /etc/passwd, /etc/shadow, /etc/group так, чтоб в конечном файле можно было увидеть следующее (разделитель — Tab):

Код
Name Password(хеш) Group HOMEDIR SHELL 
User1 12 group1 /home/user1 /bin/bash 
User2 334 group2 /home/uesr2 /bin/sh 
Daemon * daemon /usr/sbin /bin/sh 
Sshd * nougroup /var/run/sshd /usr/sbin/nologin
Ответ: Andriy1218, Данный ресурс не является бесплатным справочником ответов. Что именно Вы делаете и что не получается?
Вопрос: Вывод имени последнего запущенного процесса

Добрый день, такое дело.
Выдали такое задание на Bash: "Если количество запущенных процессов чётное, добавить к файлу имя последнего запущенного процесса".
Узнать чётность процессов и добавить к названию файла имя я в принципе понимаю, как, а вот как достать имя последнего запущенного процесса у меня вызывает затруднение.
Ответ: Только заметил изменение своего предыдущего сообщения.
Кхм, прошу прощения.
Задание само, как оно было дано:
a. Создать 50 файлов. Имена файлов — числа фибоначчи.
b. Создание файла — bash
c. Подсчитывание — C программа.
nezabudka, спасибо конечно, но увы, мне нужно именно как комбинацию работающих вместе скрипта и программы на C, чисто на bash я бы и сам написал, эх. Но всё равно спасибо, пригодится когда-нибудь.
Вопрос: Передача вывода команды через конвейер

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

Помогите, пожалуйста, понять принцип передачи вывода\результата выполнения команды по конвейеру в bash. Вот, например:
Bash
1
2
3
[alexey@Satellite ~]$ echo '123' | tee new_file | > /dev/null
[alexey@Satellite ~]$ cat new_file 
[alexey@Satellite ~]$
Ход выполнения строки 1 я себе представляю так:
Вывод команды 'echo'(символы '123') поступает на вход команды 'tee', которая сначала направляет этот вывод в файл 'new_file', а затем передаёт его дальше по конвейеру(в /dev/null). Но почему же в 'new_file' ничего не записалось? Ведь, по-идее, вывод команды 'echo' должен быть направлен в битоприёмник только после записи в 'new_file'.

Добавлено через 31 минуту

До меня тут вдруг дошло, что написать надо было так:
Bash
1
echo '123' | tee new_file > /dev/null
Но я всё равно не понял, почему в первом случае в 'new_file' ничего не записалось.
Ответ: Alexey104, Небольшая поправка, я перечитала ваше сообщение с первой строчкой
кода и есть что добавить.
Команда tee читает поток из пайпа и синхронно раздваивает его в файл и на стандартный вывод.
Когда вы ставите дальше конвеер то перенаправляете один вывод команды tee со стандартного
выходного потока а конвеер, а второй поток остается направленным в файл, но так как после очередного
конвеера нет команды способной принять информацию то tee работая синхронно с двумя потоками
не передает информацию и в файл тоже.
Вот, думаю понятно и правильно обрисовала работу вашей первой строчки кода. В этом смысл
работы пайпа.

Добавлено через 3 часа 14 минут
volodin661, Создала в заметках памятку, буду исправляться. Спасибо
Вопрос: Отмена перенаправления вывода

Bash
1
2
3
exec >> log 2>&1
echo "вывод в log"
echo "вывод в терминал" >&1
Как заставить второй echo вывести на экран не отменяя общий вывод в лог?
Ответ:
Сообщение от modman
... вывести на экран не отменяя общий вывод в лог?
Bash
1
man tee
Чем-то похож.
Вопрос: Как проверить что поступает в проверку if код возврата или вывод программы

Доброго времени суток форумчане ! Хотел пройти курс в степике , уже второй день не могу решить.....

Мы рассказали, что можно проверить код возврата внешней программы прямо в конструкции if при помощи if `program options arguments` (действия внутри if выполнятся, если программа закончилась с кодом 0). Однако это не всегда правда! Если запуск внешней программы выводит что-то в stdout, то в проверку if поступит именно этот вывод, а не код возврата! Вы можете убедиться в этом, написав простой bash-скрипт с использованием, например, if `pwd`.

Однако как быть, если хочется всё-таки запустить программу program, которая пишет что-то в stdout и потом выполнить какие-то действия если ее код возврата равен 0? Выберите все верные утверждения или правильно работающие конструкции if.

Примечание: во всех вариантах ответов, где есть кавычка, используется именно косая кавычка (`), а не обычная (') или двойная (").
  • Ничего сделать нельзя
  • Сначала запустить program, затем if [[ $? -eq 0 ]]
  • if `program > some_file.txt`
  • Сначала var=`program`, затем if [[ $var -eq 0 ]]
  • if [[ `program` -eq 0 ]]
Ответ: А, поняла!
Вобщем не по тесту прохождения.
Вывод команды в stdin или stderr не влияет на выполнение условий
потому, что оно принимает только возвращаемое значение!
Вопрос: Proftpd не видит пользователей в файле ftpd.passwd

установил, все настроил.. вот конфиг

Код PHP
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
UseIPv6             off
IdentLookups            off
 
ServerName          "Mintrans DNR"
ServerType          standalone
DeferWelcome            off
 
MultilineRFC2228        on
DefaultServer           on
ShowSymlinks            on
 
TimeoutNoTransfer       600
TimeoutStalled          600
TimeoutIdle         1200
 
DisplayLogin                    welcome.msg
DisplayChdir                .message true
ListOptions                 "-l"
 
DenyFilter          \*.*/
 
DefaultRoot         ~
 
#RequireValidShell      off
 
Port                21
 
# PassivePorts                  49152 65534
# MasqueradeAddress     1.2.3.4
 
<IfModule mod_dynmasq.c>
    # DynMasqRefresh 28800
</IfModule>
 
MaxInstances            100
 
# Set the user and group that the server normally runs at.
User                proftpd
Group               nogroup
 
# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask               022  022
# Normally, we want files to be overwriteable.
AllowOverwrite          on
 
# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd      off
 
# This is required to use both PAM-based authentication and local passwords
AuthOrder           mod_auth_pam.c* mod_auth_unix.c
 
#AuthOrder          mod_auth_file.c
 
# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile           off
 
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log
 
# Logging onto /var/log/lastlog is enabled but set to off by default
#UseLastlog on
 
# In order to keep log file dates consistent after chroot, use timezone info
# from /etc/localtime.  If this is not set, and proftpd is configured to
# chroot (e.g. DefaultRoot or <Anonymous>), it will use the non-daylight
# savings timezone regardless of whether DST is in effect.
#SetEnv TZ :/etc/localtime
 
<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>
 
<IfModule mod_ratio.c>
Ratios off
</IfModule>
 
 
# Delay engine reduces impact of the so-called Timing Attack described in
# http://www.securityfocus.com/bid/11430/discuss
# It is on by default. 
 
<IfModule mod_delay.c>
    DelayEngine on
</IfModule>
 
<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>
 
<IfModule mod_ctrls_admin.c>
    AdminControlsEngine off
</IfModule>
 
#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
#Include /etc/proftpd/sql.conf
 
#
# This is used for FTPS connections
#
#Include /etc/proftpd/tls.conf
 
#
# Useful to keep VirtualHost/VirtualRoot directives separated
#
 
# Include /etc/proftpd/virtuals.conf
 
# A basic anonymous configuration, no upload directories.
 
 <Anonymous ~ftp>
   User                 ftp
   Group                nogroup
   # We want clients to be able to login with "anonymous" as well as "ftp"
   UserAlias            anonymous ftp
   # Cosmetic changes, all files belongs to ftp user
   DirFakeUser  on ftp
   DirFakeGroup on ftp
 
   RequireValidShell        off
 
   # Limit the maximum number of anonymous logins
   MaxClients           10
 
   # We want 'welcome.msg' displayed at login, and '.message' displayed
   # in each newly chdired directory.
   DisplayLogin         welcome.msg
   DisplayChdir     .message
 
   # Limit WRITE everywhere in the anonymous chroot
   <Directory *>
    AllowAll
  </Directory>
 
   # Uncomment this if you're brave.
   # <Directory incoming>
   #   # Umask 022 is a good standard umask to prevent new files and dirs
   #   # (second parm) from being group and world writable.
   #   Umask                022  022
   #            <Limit READ WRITE>
   #            DenyAll
   #            </Limit>
   #            <Limit STOR>
   #            AllowAll
   #            </Limit>
   # </Directory>
 
 </Anonymous>
 
# Include other custom configuration files
Include /etc/proftpd/conf.d/
 
<Global>
DefaultRoot /home/ftp
AuthUserFile    /etc/proftpd/ftpd.passwd
#AuthGroupFile  /etc/proftpd/ftpd.group
</Global>
 
<Directory /home/ftp/vasya>
<Limit WRITE>
DenyAll
</Limit>
<Limit READ>
AllowUser vasya
</Limit>
<Limit DELE>
AllowUser vasya
</Limit>
</Directory>
нормально запускается, доступен по сети, вроде все работает. анонимус может делать что угодно, но...

пробовал авторизоваться хоть через cmd хоть из терминала, хоть из винды - ни в какую. пробовал сменить пароль через ftpasswd - выдает, что в файле ftpd.passwd пользователя test нет, но он там есть, добавлял через ftpasswd и проверял - есть и файл и запись в нем имеется.. в общем я в тупике, помогите разобраться если есть такая возможность..

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

что бы заработало включи виртуальных пользователей а то будет ошибка /bin/false самое главное что ты не сделал это не включил авторизацию виртуальных юзеров )) #AuthOrder mod_auth_file.c
Вопрос: Solaris /etc/default/passwd

Везде в инете пишут, чтобы изменить парольную политику, нужно править этот файл.

Ну правлю я его. Например, кол-во символов в пароле увеличиваю до 7, а при смене пароля все равно 6 символов просит.

Там же правлю сроки действия пароля, но после создания пользователя в /etc/shadow у него все поля пустые.

Может надо еще что-то подправить?
Ответ: Все работает. Я тупил. Вместо знака "=" пробел указывал.
Вопрос: Решить задание по основам shell

  1. Создать командный файл, который обеспечивает распечатку содержимого подкаталогов данного каталога, а также справку о количестве файлов различных типови занимаемом ими пространстве.
  2. Создать командный файл, который обеспечивает вывод на экран информации о наличии одноименных файлов в разных подкаталогах данного каталога.
  3. Создать командный файл, выдающий на экран путь к самому длинному из всех файлов, принадлежащих студентам группы.
  4. Создать командный файл, обеспечивающий обнаружение файлов в указанном каталоге, имеющих размер больше заданного,вывод на экран информации о владельцах этих файлов.
  5. Создать меню пользователя:

    *создать текстовый файл;
    *склеить текстовые файлы;
    *найти файл, содержащий указанную строку.

Вся информация, необходимая для выполнения этих операций, запрашивается у пользователя.
Вот такое задание обнаружилось у меня в университете при изучении shell. Что забавно, я уже написал и контрольную и прочее, и даже получил максимальные баллы. А вот с обычным заданием справиться не могу. Даже не понимаю как.
Вернее, с его пунктами 2, 3 и 4. У меня даже идей не возникает как сделать это. Очень неприятно ощущать себя настолько тупым. Может вы мне объясните как?
Или, возможно, на форуме уже есть готовое решение, но я не нашёл его при помощи гугла? Тогда поделитесь, пожалуйста, ссылкой
Ответ: 2.
Code
1
find <каталог> -type f -printf '%f\n' | sort | uniq -d
3.
Code
1
ls -S <список_файлов> | tail -1
4.
Code
1
find <каталог> -type f -size +<размер> -printf '%u\n
Вопрос: Вывод сообщений об ошибках (stderr)

Здравствуйте, возник вопрос при выполнении задания. Каким образом можно вывести сообщение об ошибке? Текст задания представлен ниже.

Написать скрипт с использованием цикла for, выводящий на консоль размеры и права доступа для всех файлов в заданном каталоге и всех его подкаталогах (имя каталога задается пользователем в качестве первого аргумента командной строки). Проверить работу программы для каталога/usr.

Вывод сообщений об ошибках должен производиться в стандартный поток вывода сообщений об ошибках (stderr) в следующем виде:
имя_модуля: текст_сообщения.
Пример:
./1.exe :erroropenfile: 1.txt
имя модуля, имя файла берутся из аргументов командной строки

Добавлено через 3 минуты
Bash
1
2
3
4
5
6
7
8
#!/bin/bash
for i in $(find "$1" - type f)
do
    ls -lh "$i" | awk '{print $1, $5, $9}'
    if [-rname_file]
    then -exec printf "./lab1.sh: error open file: "; -exec basename {}; 
    fi
done
В 4 строке выводится информация о файлах. Но вывести информацию об ошибках не получается (строки 5-7). Помогите пожалуйста.
Спасибо.
Ответ: А man ls посмотреть самому не?
Сообщение от ls --help
HTML5
1
2
-h, --human-readable   c -l, печатать размеры в удобном для человека виде (например, 1K 234M 2G)
-l                     использовать широкий формат