Редакция август, 2021
Аннотация
apt-get
и её графическая оболочка synaptic позволяют пользователям легко обновлять свои системы и быть в курсе актуальных новостей мира свободных программ.
Содержание
SCDWriter.exe
;
Предупреждение
.exe
;
Предупреждение
где <файл-образа.iso> — образ диска ISO, аdd
oflag=direct if=<файл-образа.iso> of=/dev/sdX bs=1M status=progresssync
/dev/sdX
— устройство, соответствующее flash-диску.
где <файл-образа.iso> — образ диска ISO, аpv
<файл-образа.iso> | dd oflag=direct of=/dev/sdX bs=1M;sync
/dev/sdX
— устройство, соответствующее flash-диску.
lsblk
или (если такой команды нет): blkid
.
$ lsblk | grep disk
sda 8:0 0 931,5G 0 disk
sdb 8:16 0 931,5G 0 disk
sdc 8:32 1 7,4G 0 disk
flash-диск имеет имя устройства sdc.
# dd oflag=direct if=/home/iso/alt-server-9.2-x86_64.iso of=/dev/sdc bs=1M status=progress; sync
# pv /home/iso/alt-server-9.2-x86_64.iso | dd oflag=direct of=/dev/sdc bs=1M;sync
dd: warning: partial read (524288 bytes); suggest iflag=fullblock
3GiB 0:10:28 [4,61MiB/s] [===================================> ] 72% ETA 0:04:07
Предупреждение
Предупреждение
Предупреждение
eject /dev/sdX
и дождаться ее успешного завершения.
sudo dd if=
alt-server-9.2-x86_64.iso
of=/dev/diskX bs=1Msync
alt-server-9.2-x86_64.iso
— образ диска ISO, а /dev/diskX — flash-диск.
diskutil list
Предупреждение
Предупреждение
$ du -b alt-server-9.2-x86_64.iso | cut -f1
3506438144
$ md5sum alt-server-9.2-x86_64.iso
cf0024eceae6d290be95672adc9290ef alt-server-9.2-x86_64.iso
# head -c 3506438144 /dev/sdd | md5sum
cf0024eceae6d290be95672adc9290ef
где размер после -c — вывод в п.1, а /dev/sdd — устройство DVD или USB Flash, на которое производилась запись.
/pub/netinstall/
. В данном каталоге на сервере должны находиться:
altinst
;
Metadata
;
ALTLinux
с подкаталогами RPMS.секция
, содержащими rpm-пакеты.
/pub/netinstall
.
automatic=method:disk,disk:hdb,partition:hdbX,directory:<путь_к_каталогу_с_дистрибутивом>В данной команде «путь_к_каталогу_с_дистрибутивом» — полный путь к образу дистрибутива, например,
/home/test/alt-server.iso
, или путь к каталогу с содержимым образа дистрибутива (распакованный образ диска), например, /home/test/alt-server-dir
.
Предупреждение
Примечание
[root@localhost /]#;
Примечание
nomodeset
— не использовать modeset-драйверы для видеокарты;
vga=normal
— отключить графический экран загрузки установщика;
xdriver=vesa
— явно использовать видеодрайвер vesa. Данным параметром можно явно указать нужный вариант драйвера;
acpi=off noapic
— отключение ACPI (управление питанием), если система не поддерживает ACPI полностью.
Примечание
Примечание
Примечание
Примечание
Предупреждение
/home
) или с другими операционными системами. С другой стороны, отформатировать можно любой раздел, который вы хотите «очистить» (удалить все данные).
Предупреждение
Примечание
Примечание
Важно
Предупреждение
Важно
https://localhost/wiki/
. Администратор: WikiSysop, пароль: пароль пользователя root.
https://localhost/nextcloud/
. Администратор: root, пароль: пароль пользователя root.
/etc/fstab
).
Примечание
Важно
Примечание
Важно
Примечание
/home
, то во время загрузки системы будет необходимо ввести пароль для этого раздела, иначе вы не сможете получить доступ в систему под своим именем пользователя.
Примечание
/boot/efi
, в которую нужно смонтировать vfat раздел с загрузочными записями. Если такого раздела нет, то его надо создать вручную. При разбивке жёсткого диска в автоматическом режиме такой раздел создаёт сам установщик;
/boot/efi
);
#apt-get update
#apt-get dist-upgrade
#update-kernel
#apt-get clean
#reboot
Примечание
$ su -
или зарегистрировавшись в системе (например, на второй консоли Ctrl+Alt+F2) под именем root. Про режим суперпользователя можно почитать в главе Режим суперпользователя.
Примечание
Важно
xdriver
— графический установщик предпринимает попытку автоматического подбора драйвера видеокарты, но иногда это ему не удаётся. Данным параметром можно отключить «искусственный интеллект» и явно указать нужный вариант драйвера;
instdebug
— если будет присутствовать этот параметр, то перед запуском и после завершения работы графического установщика будет запущена оболочка shell. Это очень полезное средство для выявления причин отсутствия запуска графической части программы установки. Последовательность работы внутренних сценариев следующая: install2
→ xinit
→ alterator-install2
→ alterator-wizard
. При необходимости можно вручную загрузить Xorg (команда xinit
) и в открывшемся окне терминала запустить alterator-install2
(или alterator-wizard
) вручную.
[root@localhost /]#
. Начиная с этого момента, система готова к вводу команд.
fixmbr
без параметров. Программа попытается переустановить загрузчик в автоматическом режиме.
Важно
/home
, то для того, чтобы войти в систему под своим именем пользователя, вам потребуется ввести пароль этого раздела и затем нажать Enter.
Важно
Важно
Содержание
Примечание
Предупреждение
/home/<имя пользователя>
. В этой папке по умолчанию хранятся пользовательские файлы (например, аудиозаписи, видеозаписи, документы). У каждого пользователя свой «Домашний» каталог. Каждый пользователь имеет доступ только в свой «Домашний» каталог.
Примечание
Примечание
Примечание
Содержание
acc
.
https://ip-адрес:8080/
.
192.168.0.122
. В таком случае:
https://192.168.0.122:8080/
;
https://192.168.0.122/
.
Примечание
$
ip
addr
inet
:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 60:eb:69:6c:ef:47 brd ff:ff:ff:ff:ff:ff inet 192.168.0.122/24 brd 192.168.0.255 scope global enp0s3
192.168.0.122
.
Примечание
startx
, предварительно войдя в консоль сервера, используя имя и пароль созданного при установке непривилегированного пользователя.
Предупреждение
Примечание
Примечание
Предупреждение
Важно
Примечание
apt-get dist-upgrade
.
Примечание
Важно
Примечание
$ su -
/etc/group
, локальная база LDAP, другой сервер LDAP или Samba ActiveDirectory.
Примечание
/etc/group
).
Важно
Содержание
/etc/net/ifaces/<интерфейс>
. Настройки сети могут изменяться либо в ЦУС в данном модуле, либо напрямую через редактирование файлов /etc/net/ifaces/<интерфейс>
.
/etc/net/ifaces/<интерфейс>
. В этом режиме можно просмотреть настройки сети, например полученный по DHCP IP-адрес, через графический интерфейс NetworkManager.
/etc/NetworkManager/system-connections
. Этот режим особенно актуален для задач настройки сети на клиенте, когда IP-адрес необходимо получать динамически с помощью DHCP, а DNS-сервер указать явно. Через ЦУС так настроить невозможно, так как при включении DHCP отключаются настройки, которые можно задавать вручную.
Примечание
Примечание
Примечание
Примечание
vncviewer -listen
.
Предупреждение
Примечание
openvpn-server.csr
. Необходимо сохранить этот файл на диске.
openvpn-server.csr
и загрузить запрос:
output.pem
(подписанный сертификат).
output.pem
и нажать кнопку :
ca-root.pem
и нажать кнопку :
ip addr
должно появиться новое соединение tun1. При обычных настройках это может выглядеть так:
tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100 link/[none] inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0
Примечание
Примечание
/etc/bacula
.
/etc/bacula/bacula-dir.conf
должен соответствовать паролю ресурса Director файла /etc/bacula/bacula-sd.conf
.
<имя узла>-fd.bin
на локальном компьютере;
/etc/bacula/bacula-fd.conf
;
Примечание
/dev
, /.fsck
, /.journal
, /media
, /mnt
, /opt
, /proc
, /srv
, /sys
, и /tmp
.
update-kernel
. Данный модуль предоставляет возможность:
Примечание
Примечание
Примечание
Важно
SRPMS *-debuginfo-*Шаблоны указываются по одному в отдельной строке. Символ «*» используется для подстановки любого количества символов.
Примечание
/srv/public/mirror
. Для того чтобы зеркалирование происходило в другую папку, необходимо эту папку примонтировать в папку /srv/public/mirror
. Для этого в файл /etc/fstab
следует вписать строку:
/media/disk/localrepo /srv/public/mirror none rw,bind,auto 0 0где
/media/disk/localrepo
— папка-хранилище локального репозитория.
# apt-get install nginx
/etc/nginx/sites-available.d/repo.conf
:
server { listen 80; server_name localhost .local <ваш ip>; access_log /var/log/nginx/repo-access.log; error_log /var/log/nginx/repo-error.log; location /mirror { root /srv/public; autoindex on; } }
/etc/nginx/sites-enabled.d/
:
# ln -s /etc/nginx/sites-available.d/repo.conf /etc/nginx/sites-enabled.d/repo.conf
# systemctl enable --now nginx
#Проверить правильность настройки репозиториев:apt-repo rm all
#apt-repo add http://<ip сервера>/mirror/p9/branch
# apt-repo
rpm http://192.168.0.185/mirror p9/branch/x86_64 classic
rpm http://192.168.0.185/mirror p9/branch/noarch classic
# apt-get install vsftpd lftp
/etc/xinetd.d/vsftpd
:
# default: off # description: The vsftpd FTP server. service ftp { disable = no # включает службу socket_type = stream protocol = tcp wait = no user = root nice = 10 rlimit_as = 200M server = /usr/sbin/vsftpd only_from = 0/0 # предоставить доступ для всех IP }
# systemctl restart xinetd
/etc/vsftpd/conf
:
local_enable=YES
/var/ftp/mirror
:
# mkdir -p /var/ftp/mirror
Примонтировать каталог /srv/public/mirror
в /var/ftp/mirror
с опцией --bind
:
# mount --bind /srv/public/mirror /var/ftp/mirror
Примечание
/srv/public/mirror
при загрузке системы необходимо добавить следующую строку в файл /etc/fstab
:
/srv/public/mirror /var/ftp/mirror none defaults,bind 0 0
#apt-repo rm all
#apt-repo add ftp://<ip сервера>/mirror/p9/branch
#apt-repo
rpm ftp://192.168.0.185/mirror p9/branch/x86_64 classic rpm ftp://192.168.0.185/mirror p9/branch/noarch classic
usrquota
, grpquota
. Для этого следует выбрать нужный раздел в списке Файловая система и установить отметку в поле Включено:
Примечание
# apt-get install state-change-notify-postfix
Tue Jun 16 11:46:59 EET 2020: The server.test.alt is about to start.При выключении:
Tue Jun 16 12:27:02 EET 2020: The server.test.alt is about to shutdown.
rpm -qa | grep alterator*
Прочие пакеты для ЦУС можно найти, выполнив команду:
apt-cache search alterator*
#apt-get install alterator-net-openvpn
#apt-get remove alterator-net-openvpn
Содержание
Предупреждение
Предупреждение
# apt-get install task-samba-dc
# for service in smb nmb krb5kdc slapd bind; do chkconfig $service off; service $service stop; done
#rm -f /etc/samba/smb.conf
#rm -rf /var/lib/samba
#rm -rf /var/cache/samba
#mkdir -p /var/lib/samba/sysvol
Предупреждение
/etc/samba/smb.conf
перед созданием домена: rm -f
/etc/samba/smb.conf
/etc/sysconfig/network
# hostnamectl set-hostname dc.test.alt
# domainname test.alt
Предупреждение
Примечание
# samba-tool domain provision --realm=test.alt --domain test --adminpass='Pa$$word' --dns-backend=SAMBA_INTERNAL --server-role=dc
где
Примечание
--use-rfc2307
--use-xattrs=yes
позволяют поддерживать расширенные атрибуты типа UID и GID в схеме LDAP и ACL на файловой системе Linux.
# samba-tool domain provision
Realm [TEST.ALT]:
Domain [TEST]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]:
Administrator password:
Retype password:
Looking up IPv4 addresses
More than one IPv4 address found. Using 192.168.0.122
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=test,DC=alt
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=test,DC=alt
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: dc
NetBIOS Domain: TEST
DNS Domain: test.alt
DOMAIN SID: S-1-5-21-80639820-2350372464-3293631772
Примечание
#chkconfig samba on
#service samba start
/etc/krb5.conf
. Следует раскомментировать строку default_realm и содержимое разделов realms и domain_realm и указать название домена (обратите внимание на регистр символов):
includedir /etc/krb5.conf.d/ [logging] # default = FILE:/var/log/krb5libs.log # kdc = FILE:/var/log/krb5kdc.log # admin_server = FILE:/var/log/kadmind.log [libdefaults] dns_lookup_kdc = true dns_lookup_realm = true ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false default_realm = TEST.ALT default_ccache_name = KEYRING:persistent:%{uid} [realms] TEST.ALT = { default_domain = test.alt } [domain_realm] dc = TEST.ALT
Примечание
krb5.conf
для домена в каталоге /var/lib/samba/private/
. Можно просто заменить этим файлом файл, находящийся в каталоге /etc/
:
# cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
# samba-tool domain info 127.0.0.1
Forest : test.alt
Domain : test.alt
Netbios domain : TEST
DC name : dc.test.alt
DC netbios name : DC
Server site : Default-First-Site-Name
Client site : Default-First-Site-Name
# smbclient -L localhost -Uadministrator
Enter TEST\administrator's password:
Sharename Type Comment
--------- ---- -------
sysvol Disk
netlogon Disk
IPC$ IPC IPC Service (Samba 4.14.6)
SMB1 disabled -- no workgroup available
Общие ресурсы netlogon и sysvol создаваемые по умолчанию нужны для функционирования сервера AD и создаются в smb.conf
в процессе развертывания/модернизации.
/etc/resolv.conf
:
# host test.alt
test.alt has address 192.168.0.122
test.alt has IPv6 address fd47:d11e:43c1:0:a00:27ff:fece:2424
#Если имена не находятся, проверьте выключение службы named.host -t SRV _kerberos._udp.test.alt.
_kerberos._udp.test.alt has SRV record 0 100 88 dc.test.alt. #host -t SRV _ldap._tcp.test.alt.
_ldap._tcp.test.alt has SRV record 0 100 389 dc.test.alt. #host -t A dc.test.alt.
dc.test.alt has address 192.168.0.122
# kinit administrator@TEST.ALT
Password for administrator@TEST.ALT:
Просмотр полученного билета:
# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: administrator@TEST.ALT
Valid starting Expires Service principal
03.06.2021 12:48:48 03.06.2021 22:48:48 krbtgt/TEST.ALT@TEST.ALT
renew until 10.06.2021 12:48:44
samba-tool user create имя пользователя
samba-tool user setexpiry имя пользователя
samba-tool user delete имя пользователя
samba-tool user disable имя пользователя
samba-tool user enable имя пользователя
samba-tool user setpassword имя пользователя
# samba-tool user list
#samba-tool user create ivanov --given-name='Иван Иванов' --mail-address='ivanov@test.alt'
#samba-tool user setexpiry ivanov --noexpiry
Предупреждение
pdbedit -x -m имя
Предупреждение
# samba-tool dns add 192.168.0.122 test.alt DC2 A 192.168.0.106 -Uadministrator
/etc/krb5.conf
):
[libdefaults] default_realm = TEST.ALT dns_lookup_realm = true dns_lookup_kdc = true
Примечание
Предупреждение
# kinit administrator@TEST.ALT
Password for administrator@TEST.ALT:
# klist
Ticket cache: KEYRING:persistent:0:0
Default principal: administrator@TEST.ALT
Valid starting Expires Service principal
03.06.2021 12:48:48 03.06.2021 22:48:48 krbtgt/TEST.ALT@TEST.ALT
renew until 10.06.2021 12:48:44
# samba-tool domain join test.alt DC -Uadministrator --realm=test.alt
Если всё нормально, в конце будет выведена информация о присоединении к домену:
Joined domain TEST (SID S-1-5-21-80639820-2350372464-3293631772) as a DCДля получения дополнительной информации можно воспользоваться командой:
# samba-tool domain join --help
# chkconfig samba on
Если подключались к DC под управлением Windows, необходимо запустить службу samba:
# service samba start
Предупреждение
Предупреждение
# samba-tool drs replicate dc2.test.alt dc.test.alt dc=test,dc=alt -Uadministrator
Сначала указывается приемник, затем источник, после этого реплицируемая ветка в LDAP.
# samba-tool drs replicate dc.test.alt dc2.test.alt dc=test,dc=alt -Uadministrator
Сначала указывается приемник, затем источник, после этого реплицируемая ветка в LDAP.
Примечание
# samba-tool drs showrepl
Примечание
# apt-get install task-auth-ad-sssd
# hostnamectl set-hostname host-15.test.alt
/etc/net/ifaces/enp0s3/resolv.conf
со следующим содержимым:
nameserver 192.168.0.122где 192.168.0.122 — IP-адрес DNS-сервера домена.
/etc/resolvconf.conf
добавить/отредактировать следующие параметры:
interface_order='lo lo[0-9]* lo.* enp0s3' search_domains=test.altгде enp0s3 — интерфейс на котором доступен контроллер домена, test.alt — домен.
# resolvconf -u
Примечание
/etc/resolv.conf
должны появиться строки:
search test.alt nameserver 192.168.0.122
# system-auth write ad test.alt host-15 test 'administrator' 'Pa$$word'
Joined 'HOST-15' to dns domain 'test.alt'
Важно
# apt-get install admx-basealt admx-samba admx-chromium admx-firefox admx-msi-setup
# admx-msi-setup
Примечание
admx-msi-setup
устанавливает последнюю версию ADMX от Microsoft (сейчас это Microsoft Group Policy — Windows 10 October 2020 Update (20H2)). С помощью параметров, можно указать другой источник:
# admx-msi-setup -h
admx-msi-setup - download msi files and extract them in <destination-directory> default value is /usr/share/PolicyDefinitions/.
Usage: admx-msi-setup [-d <destination-directory>] [-s <admx-msi-source>]
Removing admx-msi-setup temporary files...
/usr/share/PolicyDefinitions
. Скопировать локальные ADMX-файлы в сетевой каталог sysvol (/var/lib/samba/sysvol/<DOMAIN>/Policies/
):
# samba-tool gpo admxload
Примечание
# apt-get install alterator-gpupdate
Примечание
Примечание
Примечание
\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\PolicyDefinitions
.
ping
только суперпользователю (root). Для создания новой политики, необходимо выполнить следующие действия:
ping
сможет только администратор:
$ping localhost
bash: ping: команда не найдена $/usr/bin/ping localhost
bash: /usr/bin/ping: Отказано в доступе #control ping
restricted
Важно
# gpoa --loglevel 0
В выводе команды будут фигурировать полученные групповые объекты. В частности, соответствующий уникальный код (GUID) объекта.
smb.conf
/etc/samba/smb.conf
для работы Samba в режиме файлового сервера с двумя открытыми для общего доступа ресурсами и принтером (закомментированные параметры действуют по умолчанию):
workgroup = workgroup server string = Samba Server Version %v map to guest = Bad User ; idmap config * : backend = tdb guest ok = yes cups options = raw security = user ; encrypt passwords = yes ; guest account = nobody [printers] comment = All Printers path = /var/spool/samba browseable = no ; guest ok = no ; writable = No printable = yes # A publicly accessible directory, but read only, except for people in # the "staff" group [public] comment = Public Stuff path = /home/samba public = yes writable = yes ; printable = no write list = +staff ; browseable = yes [Free] path = /mnt/win/Free read only = no ; browseable = yes guest ok = yes
/etc/fstab
/etc/samba/sambacreds
(например, командой mcedit /etc/samba/sambacreds
), с содержимым:
username=имя_пользователя password=пароль
/etc/fstab
необходимо прописать:
//server/public /mnt/server_public cifs users,credentials=/etc/samba/sambacreds 0 0
/etc/samba/sambacreds
, надо установить так, чтобы файл был доступен только владельцу:
# chmod 600 /etc/samba/sambacreds
и принадлежать root:
# chown root: /etc/samba/sambacreds
Предупреждение
# apt-get install task-sogo
# /etc/init.d/postgresql initdb
# service postgresql start
#su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole sogo'
#su - postgres -s /bin/sh -c 'createdb -O sogo sogo'
#service postgresql restart
#samba-tool user create sogo
#samba-tool user setexpiry --noexpiry sogo
/etc/sogo/sogo.conf
:
{ SOGoProfileURL = "postgresql://sogo@/sogo/sogo_user_profile"; OCSFolderInfoURL = "postgresql://sogo@/sogo/sogo_folder_info"; OCSSessionsFolderURL = "postgresql://sogo@/sogo/sogo_sessions_folder"; OCSEMailAlarmsFolderURL = "postgresql://sogo@/sogo/sogo_alarms_folder"; SOGoEnableEMailAlarms = YES; SOGoDraftsFolderName = Drafts; SOGoSentFolderName = Sent; SOGoTrashFolderName = Trash; SOGoIMAPServer = "imaps://localhost:993/?tlsVerifyMode=allowInsecureLocalhost"; SOGoMailingMechanism = sendmail; SOGoForceExternalLoginWithEmail = NO; NGImap4ConnectionStringSeparator = "/"; SOGoUserSources = ( { id = sambaLogin; displayName = "SambaLogin"; canAuthenticate = YES; type = ldap; CNFieldName = cn; IDFieldName = cn; UIDFieldName = sAMAccountName; hostname = "ldaps://127.0.0.1"; baseDN = "CN=Users,DC=test,DC=alt"; bindDN = "CN=sogo,CN=Users,DC=test,DC=alt"; bindPassword = "Pa$$word"; bindFields = (sAMAccountName); }, { id = sambaShared; displayName = "Shared Addressbook"; canAuthenticate = NO; isAddressBook = YES; type = ldap; CNFieldName = cn; IDFieldName = mail; UIDFieldName = mail; hostname = "ldaps://127.0.0.1"; baseDN = "CN=Users,DC=test,DC=alt"; bindDN = "CN=sogo,CN=Users,DC=test,DC=alt"; bindPassword = "Pa$$word"; filter = "((NOT isCriticalSystemObject='TRUE') AND (mail='*') AND (NOT objectClass=contact))"; }, { id = sambaContacts; displayName = "Shared Contacts"; canAuthenticate = NO; isAddressBook = YES; type = ldap; CNFieldName = cn; IDFieldName = mail; UIDFieldName = mail; hostname = "ldaps://127.0.0.1"; baseDN = "CN=Users,DC=test,DC=alt"; bindDN = "CN=sogo,CN=Users,DC=test,DC=alt"; bindPassword = "Pa$$word"; filter = "((((objectClass=person) AND (objectClass=contact) AND ((uidNumber>=2000) OR (mail='*'))) AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE') AND (NOT uid=Guest)) OR (((objectClass=group) AND (gidNumber>=2000)) AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE')))"; mapping = { displayname = ("cn"); }; } ); SOGoSieveScriptsEnabled = YES; SOGoLanguage = Russian; SOGoTimeZone = Europe/Moscow; SOGoFirstDayOfWeek = 1; }
# for s in samba postgresql memcached sogo httpd2;do chkconfig $s on;service $s restart;done
/var/log/sogo/sogo.log
#a2enmod proxy
#a2enmod proxy_http
#a2enmod authn_core
#a2enmod authn_file
#a2enmod auth_basic
#a2enmod authz_user
#a2enmod env
#a2enmod dav
#a2enmod headers
#a2enmod rewrite
#a2enmod version
#a2enmod setenvif
#a2ensite SOGo
#service httpd2 restart
#service sogo restart
https://<адрес_сервера>/SOGo/
Примечание
/var/log/sogo/sogo.log
есть ошибки вида:
Jul 06 16:14:51 sogod [12257]: [ERROR] <0x0x5578db070b40[LDAPSource]> Could not bind to the LDAP server ldaps://127.0.0.1 (389) using the bind DN: CN=sogo,CN=Users,DC=test,DC=altСледует в файл
/etc/openldap/ldap.conf
добавить опцию
TLS_REQCERT allowи перезапустить службы samba и sogo:
#service samba restart
#service sogo restart
/var/mail/<имя_домена>/<имя_пользователя>
(формат maildir);
Предупреждение
/etc/samba/smb.conf
в секции [global]:
ldap server require strong auth = no
#samba-tool user create -W Users vmail
#samba-tool user setexpiry vmail --noexpiry
# apt-get install postfix-ldap
/etc/postfix
изменить файлы для домена test.alt:
main.cf
:
# Global Postfix configuration file. This file lists only a small subset # of all parameters. For the syntax, and for a complete parameter list, # see the postconf(5) manual page. For a commented and more complete # version of this file see /etc/postfix/main.cf.dist mailbox_command = /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT" inet_protocols = ipv4 # Mappings virtual_mailbox_base = /var/mail virtual_mailbox_domains = test.alt virtual_mailbox_maps = ldap:/etc/postfix/ad_local_recipients.cf virtual_alias_maps = ldap:/etc/postfix/ad_mail_groups.cf virtual_transport = dovecot local_transport = virtual local_recipient_maps = $virtual_mailbox_maps # SSL/TLS smtpd_use_tls = yes smtpd_tls_security_level = encrypt #smtpd_tls_security_level = may smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = test.alt smtpd_sasl_path = private/auth smtpd_sasl_type = dovecot smtpd_sender_login_maps = ldap:/etc/postfix/ad_sender_login.cf smtpd_tls_auth_only = yes smtpd_tls_cert_file = /var/lib/ssl/certs/dovecot.cert smtpd_tls_key_file = /var/lib/ssl/private/dovecot.key smtpd_tls_CAfile = /var/lib/ssl/certs/dovecot.pem smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, per-mit_sasl_authenticated, reject smtpd_sender_restrictions = reject_authenticated_sender_login_mismatch
/etc/postfix/mydestination
должен быть пустым;
master.cf
необходимо добавить строки:
dovecot unix - n n - - pipe flags=DRhu user=mail:mail argv=/usr/libexec/dovecot/deliver -d ${recipient} smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
ad_local_recipients.cf
:
version = 3 server_host = test.alt:389 search_base = dc=test,dc=alt scope = sub query_filter = (&(|(mail=%s)(otherMailbox=%u@%d))(sAMAccountType=805306368)) result_filter = %s result_attribute = mail special_result_attribute = member bind = yes bind_dn = cn=vmail,cn=users,dc=test,dc=alt bind_pw = Pa$$word
ad_mail_groups.cf
:
version = 3 server_host = test.alt:389 search_base = dc=test,dc=alt timeout = 3 scope = sub query_filter = (&(mail=%s)(sAMAccountType=268435456)) result_filter = %s result_attribute = mail special_result_attribute = member bind = yes bind_dn = cn=vmail,cn=users,dc=test,dc=alt bind_pw = Pa$$word
ad_sender_login.cf
:
version = 3 server_host = test.alt:389 search_base = dc=test,dc=alt scope = sub query_filter = (&(objectClass=user)(|(sAMAccountName=%s)(mail=%s))) result_attribute = mail bind = yes bind_dn = cn=vmail,cn=users,dc=test,dc=alt bind_pw = Pa$$word
# service postfix restart
# postconf >/dev/null
# postmap -q petrov@test.alt ldap:/etc/postfix/ad_local_recipients.cf
petrov@test.alt
Проверка входа:
# postmap -q petrov@test.alt ldap:/etc/postfix/ad_sender_login.cf
petrov@test.alt
Проверка общего адреса e-mail:
#samba-tool group add --mail-address=sales@test.alt Sales
Added group Sales #samba-tool group addmembers Sales ivanov,petrov
Added members to group Sales #postmap -q sales@test.alt ldap:/etc/postfix/ad_mail_groups.cf
sales@test.alt,ivanov@test.alt,petrov@test.alt
# apt-get install dovecot
/etc/dovecot/dovecot-ldap.conf.ext
:
hosts = test.alt:3268 ldap_version = 3 auth_bind = yes dn = cn=vmail,cn=Users,dc=test,dc=alt dnpass = Pa$$word base = cn=Users,dc=test,dc=alt scope = subtree deref = never user_filter = (&(objectClass=user)(|(mail=%Lu)(sAMAccountName=%Lu))) user_attrs = =uid=8,gid=12,mail=user pass_filter = (&(objectClass=user)(|(mail=%Lu)(sAMAccountName=%Lu))) pass_attrs = mail=user
/etc/dovecot/conf.d/10-auth.conf
:
#auth_username_format = %Lu #auth_gssapi_hostname = "$ALL" #auth_krb5_keytab = /etc/dovecot/dovecot.keytab #auth_use_winbind = no #auth_winbind_helper_path = /usr/bin/ntlm_auth #auth_failure_delay = 2 secs auth_mechanisms = plain !include auth-ldap.conf.ext
/etc/dovecot/conf.d/10-mail.conf
:
mail_location = maildir:/var/mail/%d/%n:UTF-8:INBOX=/var/mail/%d/%n/Inbox mail_uid = mail mail_gid = mail first_valid_uid = 5 first_valid_gid = 5
/etc/dovecot/conf.d/10-master.conf
:
service imap-login { inet_listener imap { port = 0 } inet_listener imaps { } } service pop3-login { inet_listener pop3 { port = 0 } inet_listener pop3s { port = 0 } } service lmtp { unix_listener lmtp { } } service imap { } service pop3 { } service auth { unix_listener auth-userdb { } unix_listener /var/spool/postfix/private/auth { mode = 0600 user = postfix group = postfix } } service auth-worker { } service dict { unix_listener dict { } }
/etc/dovecot/conf.d/15-lda.conf
:
protocol lda { hostname = test.alt postmaster_address = administrator@test.alt }
/etc/dovecot/conf.d/15-mailboxes.conf
:
namespace inbox { inbox = yes mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Trash { auto = subscribe special_use = \Trash } mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } }
# service dovecot restart
# doveconf >/dev/null
#chown dovecot:root /etc/dovecot/dovecot-ldap.conf.ext
#chmod 0640 /etc/dovecot/dovecot-ldap.conf.ext
#chown root:postfix /etc/postfix/ad_local_recipients.cf /etc/postfix/ad_mail_groups.cf /etc/postfix/ad_sender_login.cf
#chmod 0640 /etc/postfix/ad_local_recipients.cf /etc/postfix/ad_mail_groups.cf /etc/postfix/ad_sender_login.cf
#service dovecot restart
#service postfix restart
#date | mail -s test petrov@test.alt
#mailq
Mail queue is empty
# openssl s_client -crlf -connect test.alt:993
...
tag login petrov@test.alt Pa$$word
tag OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE
IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT
MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS
LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES
WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE] Logged in
#service ahttpd stop
#a2dissite 000-default_https
#a2disport https
#service httpd2 condreload
# apt-get install freeipa-server freeipa-server-dns
# hostnamectl set-hostname ipa.example.test
# ipa-server-install -U --hostname=$(hostname) -r EXAMPLE.TEST -n example.test -p 12345678 -a 12345678 --setup-dns --no-forwarders --no-reverse
Предупреждение
--mkhomedir
):
# ipa-server-install -U --hostname=$(hostname) -r EXAMPLE.TEST -n example.test -p 12345678 -a 12345678 --setup-dns --no-forwarders --no-reverse --mkhomedir
# ipa-server-install
Предупреждение
Do you want to configure integrated DNS (BIND)? [no]: yesостальные вопросы необходимо выбрать по умолчанию (можно просто нажать Enter). Так же при установке необходимо ввести пароль администратора системы и пароль администратора каталогов.
# kinit admin
# ipa dnsrecord-add example.test _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=ipa.example.test.
# ntpdate -q localhost
server 127.0.0.1, stratum 3, offset 0.000018, delay 0.02568
27 Nov 10:27:00 ntpdate[29854]: adjust time server 127.0.0.1 offset 0.000018 sec
https://ipa.example.test/ipa/ui/
.
https://ipa.example.test/ipa/ui/
и ввести данные администратора для входа в систему.
# apt-get install freeipa-client libsss_sudo krb5-kinit bind-utils libbind zip task-auth-freeipa
Примечание
# hostnamectl set-hostname comp01.example.test
/etc/net/ifaces/eth0/resolv.conf
со следующим содержимым:
nameserver 192.168.0.113где 192.168.0.113 — IP-адрес FreeIPA сервера.
/etc/resolvconf.conf
добавить/отредактировать следующие параметры:
interface_order='lo lo[0-9]* lo.* eth0' search_domains=example.testгде eth0 — интерфейс на котором доступен FreeIPA сервер, example.test — домен.
# resolvconf -u
/etc/resolv.conf
должны появиться строки:
search example.test nameserver 192.168.0.113
# ipa-client-install -U -p admin -w 12345678
или интерактивно:
# ipa-client-install
'''Discovery was successful!''' Client hostname: comp01.example.test Realm: EXAMPLE.TEST DNS Domain: example.test IPA Server: ipa.example.test BaseDN: dc=example,dc=test Continue to configure the system with these values? [no]:Необходимо ответить
yes
, ввести имя пользователя, имеющего право вводить машины в домен, и его пароль.
Предупреждение
Hostname (comp01.example.test) does not have A/AAAA record. Failed to update DNS records.Необходимо проверить IP-адрес доменного DNS сервера в файле
/etc/resolv.conf
.
# ipa-client-install -U --uninstall
# control sudo public
Предупреждение
#systemctl stop sssd
#rm -f /var/lib/sss/db/*
#rm -f /var/lib/sss/mc/*
#systemctl start sssd
# apt-get install freeipa-client freeipa-server-dns
# hostnamectl set-hostname ipabackup.example.test
# ipa-client-install -d --domain=example.test --server=ipa.example.test --realm=EXAMPLE.TEST --principal=admin --password=12345678 --enable-dns-updates -U
# ipa-replica-install
#kinit admin
#ipa dnsrecord-add example.test _ntp._udp --srv-priority=0 --srv-weight=100 --srv-port=123 --srv-target=ipabackup.example.test.
# ipa-dns-install
# ipa-ca-install
# apt-get install libvirt virt-install
# systemctl enable --now libvirtd.service
# virsh net-list --all
Имя Статус Автозапуск Persistent
----------------------------------------------
default активен yes yes
Примечание
# virsh net-define /usr/share/libvirt/networks/default.xml
# virsh net-autostart default
# virsh net-start default
Примечание
# control sshd-permit-root-login enabled
и перезагрузить ssh-сервер:
# systemctl restart sshd.service
После того как ключ будет скопирован, рекомендуется отключить парольную аутентификацию:
#control sshd-permit-root-login disabled
#systemctl restart sshd.service
# virt-install
--name alt9.2 \
--ram 4096 --cpu kvm64 --vcpus 2 \
--disk pool=default,size=20,bus=virtio,format=qcow2 \
--network network=default --graphics spice,listen=127.0.0.1,password=test \
--cdrom /var/lib/libvirt/images/alt-workstation-9.2-x86_64.iso
$ virt-viewer --connect qemu+ssh://user@192.168.0.190/system
# apt-get install fleet-commander-logger
Примечание
--mkhomedir
).
# apt-get install freeipa-desktop-profile
...
Perform the IPA upgrade. This may take a while.
The IPA upgrade was successful.
Завершено.
Примечание
#kinit admin
Password for admin@EXAMPLE.TEST: #ipa deskprofileconfig-show
Priority of profile application: 1
Примечание
ipa deskprofileconfig-show
появляется ошибка:
ipa: ERROR: неизвестная команда "deskprofileconfig-show"необходимо почистить кэш текущему пользователю и повторить команду:
#rm -rf ~/.cache/ipa
#ipa deskprofileconfig-show
Priority of profile application: 1
# apt-get install fleet-commander-admin
Примечание
# systemctl enable --now cockpit.socket
https://адрес-сервера:9090/
:
Вход осуществляется по логину указанному при установке FreeIPA сервера.
Примечание
User-Group-Host-Hostgroup
.
.ssh/authorized_keys
для соответствующего пользователя на libvirt-хосте. Это можно сделать, нажав кнопку ( ), при этом будет необходимо ввести пароль пользователя. Пароль используется только для установки ключа и нигде не хранится.
Примечание
# apt-get install fleet-commander-client
https://адрес-сервера:9090/fleet-commander-admin
и запустить live-сессию ( → ). Появится окно со списком доступных ВМ, которые можно использовать в качестве шаблона для загрузки в live-сессии:
Предупреждение
log_level = debug
в /etc/xdg/fleet-commander-admin.conf
. Возникшие ошибки можно отследить, используя journalctl
.
fping
:
# apt-get install postgresql12-server zabbix-server-pgsql fping
Примечание
# /etc/init.d/postgresql initdb
#chkconfig postgresql on
#service postgresql start
#su - postgres -s /bin/sh -c 'createuser --no-superuser --no-createdb --no-createrole --encrypted --pwprompt zabbix'
#su - postgres -s /bin/sh -c 'createdb -O zabbix zabbix'
#service postgresql restart
#su - postgres -s /bin/sh -c 'psql -U zabbix -f /usr/share/doc/zabbix-common-database-pgsql-*/schema.sql zabbix'
# если вы создаете базу данных для Zabbix прокси, следующие команды выполнять не нужно #su - postgres -s /bin/sh -c 'psql -U zabbix -f /usr/share/doc/zabbix-common-database-pgsql-*/images.sql zabbix'
#su - postgres -s /bin/sh -c 'psql -U zabbix -f /usr/share/doc/zabbix-common-database-pgsql-*/data.sql zabbix'
# apt-get install apache2 apache2-mod_php7
#chkconfig httpd2 on
#service httpd2 start
# apt-get install php7-mbstring php7-sockets php7-gd2 php7-xmlreader php7-pgsql php7-ldap
/etc/php/7.3/apache2-mod_php/php.ini
(версия PHP может быть другой):
memory_limit = 256M post_max_size = 32M max_execution_time = 600 max_input_time = 600 date.timezone = Europe/Moscow always_populate_raw_post_data = -1
# service httpd2 restart
/etc/zabbix/zabbix_server.conf
:
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=Пароль от базы
#chkconfig zabbix_pgsql on
#service zabbix_pgsql start
# apt-get install zabbix-phpfrontend-apache2-mod_php7
# ln -s /etc/httpd2/conf/addon.d/A.zabbix.conf /etc/httpd2/conf/extra-enabled/
# service httpd2 restart
# chown apache2:apache2 /var/www/webapps/zabbix/ui/conf
Примечание
# chown apache2:apache2 /var/www/webapps/zabbix/frontends/php/conf
http://<ip-сервера>/zabbix
Примечание
/etc/httpd2/conf/sites-available/default.conf
в секцию <Directory> добавить запись:
Require all grantedи перезапустить apache2:
# service httpd2 restart
Примечание
Логин: Admin Пароль: zabbix
Примечание
# apt-get install zabbix-agent
/etc/zabbix/zabbix_agentd.conf
нужно задать следующие параметры:
Server=<ip-сервера> ServerActive=<ip-сервера> Hostname=freeipa.example.testfreeipa.example.test — имя узла мониторинга, которое будет указано на сервере Zabbix.
Примечание
# systemctl enable --now zabbix_agentd.service
Примечание
/etc/zabbix/zabbix_agentd.conf
) в поле Hostname.
Примечание
Hostname
— уникальное имя;
ServerActive
— IP-адрес сервера;
HostMetadata
— значение, которое было указано в настройках сервера (HostMetadata=alt.autoreg).
Примечание
# apt-get install prosody jitsi-meet-prosody jitsi-meet-web jitsi-meet-web-config jicofo jitsi-videobridge
Примечание
Примечание
# hostnamectl set-hostname jitsi2
/etc/hosts
строку:
127.0.0.1 jitsi2.test.alt jitsi2
Примечание
#hostname
jitsi2 #hostname -f
jitsi2.test.alt $ping "$(hostname)"
PING jitsi2.test.alt (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.053 ms [...]
/etc/prosody/conf.d
для хранения пользовательских конфигураций:
# mkdir -p /etc/prosody/conf.d
/etc/prosody/prosody.cfg.lua
дописать строку:
Include "conf.d/*.cfg.lua"
/etc/prosody/conf.d/jitsi2.test.alt.cfg.lua
) со следующим содержимым:
plugin_paths = { "/usr/share/jitsi-meet/prosody-plugins/" } -- domain mapper options, must at least have domain base set to use the mapper muc_mapper_domain_base = "jitsi2.test.alt"; cross_domain_bosh = false; consider_bosh_secure = true; ----------- Virtual hosts ----------- VirtualHost "jitsi2.test.alt" authentication = "anonymous" ssl = { key = "/var/lib/prosody/jitsi2.test.alt.key"; certificate = "/var/lib/prosody/jitsi2.test.alt.crt"; } speakerstats_component = "speakerstats.jitsi2.test.alt" conference_duration_component = "conferenceduration.jitsi2.test.alt" -- we need bosh modules_enabled = { "bosh"; "pubsub"; "ping"; -- Enable mod_ping "speakerstats"; "turncredentials"; "conference_duration"; } c2s_require_encryption = false Component "conference.jitsi2.test.alt" "muc" storage = "memory" modules_enabled = { "muc_meeting_id"; "muc_domain_mapper"; -- "token_verification"; } admins = { "focus@auth.jitsi2.test.alt" } muc_room_locking = false muc_room_default_public_jids = true VirtualHost "auth.jitsi2.test.alt" ssl = { key = "/var/lib/prosody/auth.jitsi2.test.alt.key"; certificate = "/var/lib/prosody/auth.jitsi2.test.alt.crt"; } authentication = "internal_plain" -- internal muc component, meant to enable pools of jibri and jigasi clients Component "internal.auth.jitsi2.test.alt" "muc" storage = "memory" modules_enabled = { "ping"; } admins = { "focus@auth.jitsi2.test.alt", "jvb@auth.jitsi2.test.alt" } muc_room_locking = false muc_room_default_public_jids = true Component "focus.jitsi2.test.alt" component_secret = "secret1" -- достаточно длинный пароль, он же JICOFO_SECRET Component "speakerstats.jitsi2.test.alt" "speakerstats_component" muc_component = "conference.jitsi2.test.alt" Component "conferenceduration.jitsi2.test.alt" "conference_duration_component" muc_component = "conference.jitsi2.test.alt"
#prosodyctl cert generate jitsi2.test.alt
#prosodyctl cert generate auth.jitsi2.test.alt
#ln -s /var/lib/prosody/jitsi2.test.alt.crt /etc/pki/ca-trust/source/anchors/
#ln -s /var/lib/prosody/auth.jitsi2.test.alt.crt /etc/pki/ca-trust/source/anchors/
#update-ca-trust
# prosodyctl register focus auth.jitsi2.test.alt secret2
где secret2 — достаточно длинный пароль.
# prosodyctl start
/etc/jitsi/jicofo/config
следует указать:
# Jitsi Conference Focus settings # sets the host name of the XMPP server JICOFO_HOST=localhost # sets the XMPP domain (default: none) JICOFO_HOSTNAME=jitsi2.test.alt # sets the secret used to authenticate as an XMPP component JICOFO_SECRET=secret1 # overrides the prefix for the XMPP component domain. Default: "focus" #JICOFO_FOCUS_SUBDOMAIN=focus # sets the port to use for the XMPP component connection JICOFO_PORT=5347 # sets the XMPP domain name to use for XMPP user logins JICOFO_AUTH_DOMAIN=auth.jitsi2.test.alt # sets the username to use for XMPP user logins JICOFO_AUTH_USER=focus # sets the password to use for XMPP user logins JICOFO_AUTH_PASSWORD=secret2 # extra options to pass to the jicofo daemon JICOFO_OPTS="${JICOFO_FOCUS_SUBDOMAIN:+ --subdomain=$JICOFO_FOCUS_SUBDOMAIN}" # adds java system props that are passed to jicofo (default are for home and logging config file) JAVA_SYS_PROPS="-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=jicofo -Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi -Djava.util.logging.config.file=/etc/jitsi/jicofo/logging.properties"
Важно
JICOFO_SECRET=secret1должен быть указан пароль, установленный в файле
/etc/prosody/conf.d/jitsi2.test.alt.cfg.lua
.
JICOFO_AUTH_PASSWORD=secret2должен быть указан пароль пользователя focus.
/etc/jitsi/jicofo/sip-communicator.properties
следует указать:
org.jitsi.jicofo.health.ENABLE_HEALTH_CHECKS=true org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.jitsi2.test.alt
# systemctl start jicofo
# curl -i localhost:8888/about/health
HTTP/1.1 500 Internal Server Error
Date: Fri, 26 Jun 2020 11:55:02 GMT
Content-Type: application/json
Content-Length: 56
Server: Jetty(9.4.15.v20190215)
No operational bridges available (total bridge count: 0)
Так как пока ни одного Jitsi Videobridge к серверу не подключено, jicofo ответит кодом ответа 500 и сообщением No operational bridges available. Если в ответе сообщение об ошибке иного рода — следует проверить настройки и связь между prosody и jicofo.
# prosodyctl register jvb auth.jitsi2.test.alt secret3
/etc/jitsi/videobridge/config
на следующее:
# Jitsi Videobridge settings # extra options to pass to the JVB daemon JVB_OPTS="--apis=," # adds java system props that are passed to jvb (default are for home and logging config file) JAVA_SYS_PROPS="-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=videobridge -Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi -Djava.util.logging.config.file=/etc/jitsi/videobridge/logging.properties -Dconfig.file=/etc/jitsi/videobridge/application.conf"
/etc/jitsi/videobridge/application.conf
и /etc/jitsi/videobridge/sip-communicator.properties
.
/etc/jitsi/videobridge/application.conf
необходимо указать:
videobridge { stats { enabled = true transports = [ { type = "muc" } ] } apis { xmpp-client { configs { shard { hostname = "localhost" domain = "auth.jitsi2.test.alt" username = "jvb" password = "secret3" muc_jids = "JvbBrewery@internal.auth.jitsi2.test.alt" # The muc_nickname must be unique across all instances muc_nickname = "jvb-mid-123" } } } } }
Важно
password = "secret3"должен быть указан пароль пользователя jvb.
/etc/jitsi/videobridge/sip-communicator.properties
:
org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443 org.jitsi.videobridge.ENABLE_STATISTICS=true org.jitsi.videobridge.STATISTICS_TRANSPORT=muc org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=localhost org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.jitsi2.test.alt org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb org.jitsi.videobridge.xmpp.user.shard.PASSWORD=secret3 org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.jitsi2.test.alt org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=6d8b40cb-fe32-49f5-a5f6-13d2c3f95bba
Примечание
# systemctl start jitsi-videobridge
# curl -i localhost:8888/about/health
HTTP/1.1 200 OK
Date: Fri, 26 Jun 2020 13:04:15 GMT
Content-Length: 0
Server: Jetty(9.4.15.v20190215)
Если всё сделано правильно, jicofo на healthcheck-запрос будет отдавать HTTP-код 200.
Примечание
# openssl genrsa -out rootCA.key 2048
# openssl req -x509 -new -key rootCA.key -days 10000 -out rootCA.crt -subj "/C=RU/ST=Russia/L=Moscow/CN=SuperPlat CA Root"
# openssl genrsa -out jitsi2.test.alt.key 2048
# openssl req -new -key jitsi2.test.alt.key -out jitsi2.test.alt.csr -subj "/C=RU/L=Moscow/CN=jitsi2.test.alt"
# openssl x509 -req -in jitsi2.test.alt.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out jitsi2.test.alt.crt -days 5000
Signature ok
subject=C = RU, CN = jitsi2.test.alt
Getting CA Private Key
/etc/jitsi/meet/
:
#cp jitsi2.test.alt.crt /etc/jitsi/meet/
#cp jitsi2.test.alt.key /etc/jitsi/meet/
/etc/jitsi/meet/jitsi2.test.alt-config.js
на основе /usr/share/jitsi-meet-web-config/config.js
:
# cp /usr/share/jitsi-meet-web-config/config.js /etc/jitsi/meet/jitsi2.test.alt-config.js
Внести изменения в файл /etc/jitsi/meet/jitsi2.test.alt-config.js
в соответствии с настройками серверной части:
var config = { // Connection // hosts: { // XMPP domain. domain: 'jitsi2.test.alt', muc: 'conference.jitsi2.test.alt' }, // BOSH URL. FIXME: use XEP-0156 to discover it. bosh: '//jitsi2.test.alt/http-bind', // Websocket URL // websocket: 'wss://jitsi-meet.example.com/xmpp-websocket', // The name of client node advertised in XEP-0115 'c' stanza clientNode: 'http://jitsi.org/jitsimeet', [...] }
/usr/share/doc/jitsi-meet-web-config-4109/jitsi-meet/jitsi-meet.example-apache
/etc/httpd2/conf/sites-available/jitsi2.test.alt.conf
на основе /usr/share/doc/jitsi-meet-web-config-4109/jitsi-meet/jitsi-meet.example-apache
:
# cp /usr/share/doc/jitsi-meet-web-config-4109/jitsi-meet/jitsi-meet.example-apache /etc/httpd2/conf/sites-available/jitsi2.test.alt.conf
/etc/httpd2/conf/sites-available/jitsi2.test.alt.conf
(изменить имя, указать сертификат):
<VirtualHost *:80> ServerName jitsi2.test.alt Redirect permanent / https://jitsi2.test.alt/ RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </VirtualHost> <VirtualHost *:443> ServerName jitsi2.test.alt SSLProtocol TLSv1 TLSv1.1 TLSv1.2 SSLEngine on SSLProxyEngine on SSLCertificateFile /etc/jitsi/meet/jitsi2.test.alt.crt SSLCertificateKeyFile /etc/jitsi/meet/jitsi2.test.alt.key SSLCipherSuite "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED" SSLHonorCipherOrder on Header set Strict-Transport-Security "max-age=31536000"' DocumentRoot "/usr/share/jitsi-meet" <Directory "/usr/share/jitsi-meet"> Options Indexes MultiViews Includes FollowSymLinks AddOutputFilter Includes html AllowOverride All Order allow,deny Allow from all </Directory> ErrorDocument 404 /static/404.html Alias "/config.js" "/etc/jitsi/meet/jitsi2.test.alt-config.js" <Location /config.js> Require all granted </Location> Alias "/external_api.js" "/usr/share/jitsi-meet/libs/external_api.min.js" <Location /external_api.js> Require all granted </Location> ProxyPreserveHost on ProxyPass /http-bind http://localhost:5280/http-bind/ ProxyPassReverse /http-bind http://localhost:5280/http-bind/ RewriteEngine on RewriteRule ^/([a-zA-Z0-9]+)$ /index.html </VirtualHost>
# apt-get install apache2-mod_ssl
#a2enmod rewrite
#a2enmod ssl
#a2enmod headers
#a2enmod proxy
#a2enmod proxy_http
#a2enport https
# a2ensite jitsi2.test.alt
#systemctl start httpd2
#systemctl enable httpd2
https://jitsi2.test.alt
:
Примечание
Примечание
/etc/prosody/conf.d/jitsi2.test.alt.cfg.lua
, изменив в нем запись:
VirtualHost "jitsi2.test.alt" authentication = "anonymous"на:
VirtualHost "jitsi2.test.alt" authentication = "internal_hashed"
/etc/prosody/conf.d/jitsi2.test.alt.cfg.lua
строки:
VirtualHost "guest.jitsi2.test.alt" authentication = "anonymous" c2s_require_encryption = falseЭти настройки позволят анонимным пользователям присоединяться к конференциям, созданным пользователем, прошедшим аутентификацию. При этом у гостя должен иметься уникальный адрес и пароль конференции (если этот пароль задан);
/etc/jitsi/meet/jitsi2.test.alt-config.js
указать параметры анонимного домена:
domain: 'jitsi2.test.alt', anonymousdomain: 'guest.jitsi2.test.alt',
/etc/jitsi/jicofo/sip-communicator.properties
добавить строку:
org.jitsi.jicofo.auth.URL=XMPP:jitsi2.test.alt
#prosodyctlt restart
#systemctl restart jicofo
#systemctl restart jitsi-videobridge
prosodyctl register <ПОЛЬЗОВАТЕЛЬ> jitsi2.test.alt <ПАРОЛЬ>
Изменить пароль пользователя:
prosodyctl passwd <ПОЛЬЗОВАТЕЛЬ>
Удалить пользователя:
prosodyctl deluser <ПОЛЬЗОВАТЕЛЬ>
# prosodyctl register admin jitsi2.test.alt secret4
Примечание
Примечание
hostnamctl
:
# hostnamectl set-hostname node01
/etc/hosts
на каждом узле:
#Проверка правильности разрешения имён:echo "192.168.0.113 node01" >> /etc/hosts
#echo "192.168.0.145 node02" >> /etc/hosts
#echo "192.168.0.132 node03" >> /etc/hosts
#ping node01
PING node01 (192.168.0.113) 56(84) bytes of data. 64 bytes from node01 (192.168.0.113): icmp_seq=1 ttl=64 time=0.352 ms #ping node02
PING node02 (192.168.0.145) 56(84) bytes of data. 64 bytes from node02 (192.168.0.145): icmp_seq=1 ttl=64 time=0.635 ms
/etc/openssh/sshd_config
для строк:
PermitRootLogin without-password PubkeyAuthentication yes AuthorizedKeysFile /etc/openssh/authorized_keys/%u /etc/openssh/authorized_keys2/%u .ssh/authorized_keys .ssh/authorized_keys2 PasswordAuthentication yes
/etc/openssh/sshd_config
директиву:
AllowGroups sshusersсоздать группу sshusers:
# groupadd sshusers
и добавить туда пользователей, которым разрешено подключаться по ssh:
# gpasswd -a <username> sshusers
-N
):
# ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""
Важно
#В результате получаем возможность работы с домашними каталогами пользователя user удалённого узла — копировать к себе и от себя, удалять, редактировать и т.д.ssh-copy-id -i ~/.ssh/id_ed25519.pub user@node02
#ssh-copy-id -i ~/.ssh/id_ed25519.pub user@node03
#ssh user@node02
user@node02 $su -
node02 #cat /home/user/.ssh/authorized_keys >> /root/.ssh/authorized_keys
node02 #exit
user@node02 $exit
Важно
/root/.ssh
при этом должен существовать.
# ssh node02 -- uname -n
node02
pcs
или crm
(пакет crmsh).
# apt-get install corosync resource-agents pacemaker pcs
Примечание
Примечание
$ apt-cache search resource-agents*
pcs
, а также для доступа в веб-интерфейс нужно задать пароль пользователю hacluster (одинаковый на всех узлах):
# passwd hacluster
# systemctl enable --now pcsd
# pcs host auth node01 node02 node03 -u hacluster
Password:
node02: Authorized
node01: Authorized
node03: Authorized
# pcs cluster setup newcluster node01 node02 node03
Destroying cluster on hosts: 'node01', 'node02', 'node03'...
node03: Successfully destroyed cluster
node01: Successfully destroyed cluster
node02: Successfully destroyed cluster
Requesting remove 'pcsd settings' from 'node01', 'node02', 'node03'
node01: successful removal of the file 'pcsd settings'
node03: successful removal of the file 'pcsd settings'
node02: successful removal of the file 'pcsd settings'
Sending 'corosync authkey', 'pacemaker authkey' to 'node01', 'node02', 'node03'
node01: successful distribution of the file 'corosync authkey'
node01: successful distribution of the file 'pacemaker authkey'
node03: successful distribution of the file 'corosync authkey'
node03: successful distribution of the file 'pacemaker authkey'
node02: successful distribution of the file 'corosync authkey'
node02: successful distribution of the file 'pacemaker authkey'
Sending 'corosync.conf' to 'node01', 'node02', 'node03'
node01: successful distribution of the file 'corosync.conf'
node02: successful distribution of the file 'corosync.conf'
node03: successful distribution of the file 'corosync.conf'
Cluster has been successfully set up.
# pcs cluster start --all
node02: Starting Cluster...
node03: Starting Cluster...
node01: Starting Cluster...
# pcs cluster enable --all
node01: Cluster Enabled
node02: Cluster Enabled
node03: Cluster Enabled
# pcs status cluster
Cluster Status:
Cluster Summary:
* Stack: corosync
* Current DC: node02 (version 2.0.3-alt2-4b1f869f0) - partition with quorum
* Last updated: Thu Jan 28 13:26:38 2021
* Last change: Thu Jan 28 13:27:05 2021 by hacluster via crmd on node02
* 3 nodes configured
* 0 resource instances configured
Node List:
* Online: [ node01 node02 node03 ]
PCSD Status:
node01: Online
node02: Online
node03: Online
# corosync-cmapctl | grep members
runtime.members.1.config_version (u64) = 0
runtime.members.1.ip (str) = r(0) ip(192.168.0.113)
runtime.members.1.join_count (u32) = 1
runtime.members.1.status (str) = joined
runtime.members.2.config_version (u64) = 0
runtime.members.2.ip (str) = r(0) ip(192.168.0.145)
runtime.members.2.join_count (u32) = 1
runtime.members.2.status (str) = joined
runtime.members.3.config_version (u64) = 0
runtime.members.3.ip (str) = r(0) ip(192.168.0.132)
runtime.members.3.join_count (u32) = 1
runtime.members.3.status (str) = joined
https://<имя-компьютера>:2224
(в качестве имени компьютера можно использовать имя или IP-адрес одного из узлов в кластере). Потребуется пройти аутентификацию (логин и пароль учётной записи hacluster):
Примечание
# pcs property
Cluster Properties:
cluster-infrastructure: corosync
cluster-name: newcluster
dc-version: 2.0.3-alt2-4b1f869f0
have-watchdog: false
stonith-enabled: false
# pcs property set no-quorum-policy=ignore
# pcs property set stonith-enabled=false
Важно
# pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=192.168.0.251 cidr_netmask=24 op monitor interval=20s
Примечание
# pcs resource standards
lsb
ocf
service
systemd
Список доступных поставщиков сценариев ресурсов OCF:
# pcs resource providers
heartbeat
pacemaker
redhat
Список всех агентов ресурсов, доступных для определённого поставщика OCF:
# pcs resource agents ocf:heartbeat
aliyun-vpc-move-ip
anything
AoEtarget
apache
asterisk
…
Xinetd
zabbixserver
ZFS
# pcs status
Cluster name: newcluster
Cluster Summary:
* Stack: corosync
* Current DC: node02 (version 2.0.3-alt2-4b1f869f0) - partition with quorum
* Last updated: Thu Jan 28 13:47:39 2021
* Last change: Thu Jan 28 13:47:22 2021 by root via cibadmin on node01
* 3 nodes configured
* 1 resource instance configured
Node List:
* Online: [ node01 node02 node03 ]
Full List of Resources:
* ClusterIP (ocf::heartbeat:IPaddr2): Started node01
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
# pcs cluster stop node01
node01: Stopping Cluster (pacemaker)...
node01: Stopping Cluster (corosync)...
ClusterIP начнёт работать на node02 (переключение произойдёт автоматически). Проверка статуса на узле node02:
# pcs status
Cluster Summary:
* Stack: corosync
* Current DC: node02 (version 2.0.3-alt2-4b1f869f0) - partition with quorum
* Last updated: Thu Jan 28 15:02:02 2021
* Last change: Thu Jan 28 13:48:12 2021 by root via cibadmin on node01
* 3 nodes configured
* 1 resource instance configured
Node List:
* Online: [ node02 node03 ]
* OFFLINE: [ node01 ]
Full List of Resources:
* ClusterIP (ocf::heartbeat:IPaddr2): Started node02
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
# apt-get install mariadb
Запустить сервер mariadb и добавить его в автозагрузку:
# systemctl enable --now mariadb.service
Задать пароль root для mysql и настройки безопасности:
# mysql_secure_installation
$mysql -u root -p
Enter password: MariaDB>CREATE DATABASE dbuds CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB>CREATE USER 'dbuds'@'%' IDENTIFIED BY 'password'
MariaDB>GRANT ALL PRIVILEGES ON dbuds.* TO 'dbuds'@'%';
MariaDB>FLUSH PRIVILEGES;
MariaDB>exit;
Примечание
# apt-get install openuds-server-nginx
/etc/openuds/settings.py
, указав корректные данные для подключения к SQL серверу:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'isolation_level': 'read committed', }, 'NAME': 'dbuds', 'USER': 'dbuds', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '3306', } }
#su -s /bin/bash - openuds
$cd /usr/share/openuds
$python3 manage.py migrate
# systemctl enable --now openuds-web.service
#ln -s ../sites-available.d/openuds.conf /etc/nginx/sites-enabled.d/openuds.conf
#systemctl enable --now nginx.service
# systemctl enable --now openuds-taskmanager.service
Примечание
Примечание
Примечание
Примечание
Примечание
Примечание
Важно
Примечание
Примечание
Примечание
# apt-get install openuds-actor
# systemctl enable udsactor.service
$ /usr/sbin/UDSActorConfig-pkexec
# apt-get install xrdp
#systemctl enable --now xrdp
#systemctl enable --now xrdp-sesman
# gpasswd -a user tsusers
# apt-get install x2goserver
# systemctl enable --now x2goserver
# apt-get install openuds-client
Чтобы иметь возможность подключаться к виртуальному рабочему столу, должны быть установлены клиенты каждого используемого протокола удаленного доступа (xfreerdp, x2goclient).
Примечание
Примечание
Содержание
apt-get
. Она автоматически определяет зависимости между пакетами и строго следит за её соблюдением при выполнении любой из следующих операций: установка, удаление или обновление пакетов.
Важно
/etc/apt/sources.list
, либо в любой файл .list
(например, mysources.list
) в каталоге /etc/apt/sources.list.d/
. Описания репозиториев заносятся в эти файлы в следующем виде:
rpm [подпись] метод:путь база название rpm-src [подпись] метод:путь база названиеЗдесь:
/etc/apt/vendor.list
;
/etc/apt/sources.list.d/*.list
обычно указывается интернет-репозиторий, совместимый с установленным дистрибутивом.
sources.list
, необходимо обновить локальную базу данных APT о доступных пакетах. Это делается командой apt-get update
.
sources.list
присутствует репозиторий, содержимое которого может изменяться (например, постоянно разрабатываемый репозиторий или репозиторий обновлений по безопасности), то прежде чем работать с APT, необходимо синхронизировать локальную базу данных с удалённым сервером командой apt-get update
. Локальная база данных создаётся заново при каждом изменении в репозитории: добавлении, удалении или переименовании пакета.
/etc/apt/sources.list
, относящиеся к ресурсам в сети Интернет.
Примечание
apt-repo
:
apt-repo
apt-repo add репозиторий
apt-repo rm репозиторий
apt-repo update
apt-repo
:
man apt-repo
или
apt-repo --help
Примечание
#apt-repo
#rm all
apt-repo
add p9
sources.list
репозитория на компакт-диске в APT предусмотрена специальная утилита — apt-cdrom
. Чтобы добавить запись о репозитории на компакт-диске, достаточно вставить диск в привод и выполнить команду apt-cdrom add
. После этого в sources.list
появится запись о подключённом диске примерно такого вида:
rpm cdrom:[ALT Server x86_64]/ ALTLinux main
Важно
apt-cdrom add
, вы получаете ошибку:
Не найдена точка монтирования /media/ALTLinux/ дискаНеобходимо:
/etc/fstab
добавить строку:
/dev/sr0 /media/ALTLinux udf,iso9660 ro,noauto,user,utf8,nofail,comment=x-gvfs-show 0 0
# mkdir /media/ALTLinux
# apt-cdrom add
/etc/apt/sources.list.d/
.
Примечание
alt.list
может содержаться такая информация:
# ftp.altlinux.org (ALT Linux, Moscow) # ALT Linux Platform 9 #rpm [p9] ftp://ftp.altlinux.org/pub/distributions/ALTLinux/p9/branch x86_64 classic #rpm [p9] ftp://ftp.altlinux.org/pub/distributions/ALTLinux/p9/branch x86_64-i586 classic #rpm [p9] ftp://ftp.altlinux.org/pub/distributions/ALTLinux/p9/branch noarch classic rpm [p9] http://ftp.altlinux.org/pub/distributions/ALTLinux/p9/branch x86_64 classic rpm [p9] http://ftp.altlinux.org/pub/distributions/ALTLinux/p9/branch x86_64-i586 classic rpm [p9] http://ftp.altlinux.org/pub/distributions/ALTLinux/p9/branch noarch classic
apt-get update
или apt-repo update
).
apt-cache
. Данная утилита позволяет искать пакет не только по имени, но и по его описанию.
apt-cache search подстрока
позволяет найти все пакеты, в именах или описании которых присутствует указанная подстрока. Например:
$ apt-cache search dictionary
stardict-wn - GCIDE - The Collaborative International Dictionary of English
firefox-ru - Russian (RU) Language Pack for Firefox
gnome-dictionary-applet - GNOME panel applet for gnome-dictionary
gnome-utils - Utilities for the GNOME 2.0 desktop
libgdict - GNOME Dictionary Library.
stardict-mueller7 - V.K. Mueller English-Russian Dictionary, 7 Edition: stardict format
stardict-slovnyk_be-en - Dictionary: Slovnyk Belarusian-English
stardict-slovnyk_be-ru - Dictionary: Slovnyk Belarusian-Russian
stardict-slovnyk_be-uk - Dictionary: Slovnyk Belarusian-Ukrainian
stardict-slovnyk_cs-ru - Dictionary: Slovnyk Czech-Russian
stardict-slovnyk_en-be - Dictionary: Slovnyk English-Belarusian
stardict-slovnyk_en-ru - Dictionary: Slovnyk English-Russian
stardict-slovnyk_en-uk - Dictionary: Slovnyk English-Ukrainian
stardict-slovnyk_es-ru - Dictionary: Slovnyk Spanish-Russian
stardict-slovnyk_ru-be - Dictionary: Slovnyk Russian-Belarusian
stardict-slovnyk_ru-cs - Dictionary: Slovnyk Russian-Czech
stardict-slovnyk_ru-en - Dictionary: Slovnyk Russian-English
stardict-slovnyk_ru-es - Dictionary: Slovnyk Russian-Spanish
stardict-slovnyk_ru-uk - Dictionary: Slovnyk Russian-Ukrainian
stardict-slovnyk_uk-be - Dictionary: Slovnyk Ukrainian-Belarusian
stardict-slovnyk_uk-en - Dictionary: Slovnyk Ukrainian-English
stardict-slovnyk_uk-ru - Dictionary: Slovnyk Ukrainian-Russian
words - A dictionary of English words for the /usr/share/dict directory
apt-cache show
:
$ apt-cache show stardict-mueller7
Package: stardict-mueller7
Section: Text tools
Installed Size: 3095255
Maintainer: Anton V. Boyarshinov <boyarsh@altlinux.ru>
Version: 1.0-alt7
Pre-Depends: rpmlib(PayloadIsLzma)
Depends: stardict (>= 2.4.2)
Provides: stardict-mueller7 (= 1.0-alt7)
Architecture: noarch
Size: 3135276
MD5Sum: ea95c67ca323350b454fbc26533c3548
Filename: stardict-mueller7-1.0-alt7.noarch.rpm
Description: V.K. Mueller English-Russian Dictionary, 7 Edition: stardict format
Electronic version of V.K. Mueller English-Russian Dictionary, 7 Edition
in stardict format. You can use it with stardict client.
apt-cache
можно использовать русскую подстроку. В этом случае будут найдены пакеты, имеющие описание на русском языке. К сожалению, описание на русском языке в настоящее время есть не у всех пакетов, но наиболее актуальные описания переведены.
Важно
apt-get install имя_пакета
.
Важно
# apt-get update
apt-get
позволяет устанавливать в систему пакеты, требующие для работы наличие других, пока ещё не установленных пакетов. В этом случае он определяет, какие пакеты необходимо установить. apt-get
устанавливает их, пользуясь всеми доступными репозиториями.
apt-get install stardict-mueller7
приведёт к следующему диалогу с APT (если пакет еще не установлен):
# apt-get install stardict-mueller7
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие НОВЫЕ пакеты будут установлены:
stardict-mueller7
0 будет обновлено, 1 новых установлено, 0 пакетов будет удалено и 0 не будет обновлено.
Необходимо получить 0B/3135kB архивов.
После распаковки потребуется дополнительно 3095kB дискового пространства.
Совершаем изменения...
Preparing... ####################### [100%]
1: stardict-mueller7 ####################### [100%]
Running /usr/lib/rpm/posttrans-filetriggers
Завершено.
apt-get install имя_пакета
используется также и для обновления уже установленного пакета или группы пакетов. В этом случае apt-get
дополнительно проверяет, есть ли обновлённая, в сравнении с установленной в системе, версия пакета в репозитории.
apt-get install stardict-mueller7
будет таким:
# apt-get install stardict-mueller7
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Последняя версия stardict-mueller7 уже установлена.
0 будет обновлено, 0 новых установлено, 0 пакетов будет удалено и 2262 не будет обновлено.
# apt-get install /путь/к/файлу.rpm
При этом APT проведёт стандартную процедуру проверки зависимостей и конфликтов с уже установленными пакетами.
apt-get
отказывается выполнять операции установки, удаления или обновления. В этом случае необходимо повторить операцию, задав опцию -f
, заставляющую apt-get
исправить нарушенные зависимости, удалить или заменить конфликтующие пакеты. В этом случае необходимо внимательно следить за сообщениями, выводимыми apt-get
. Любые действия в этом режиме обязательно требуют подтверждения со стороны пользователя.
apt-get remove имя_пакета
. Для того чтобы не нарушать целостность системы, будут удалены и все пакеты, зависящие от удаляемого. В случае удаления пакета, который относится к базовым компонентам системы, apt-get
потребует дополнительное подтверждение с целью предотвращения возможной случайной ошибки.
Важно
apt-get
удалить базовый компонент системы, вы увидите следующий запрос на подтверждение операции:
# apt-get remove filesystem
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие пакеты будут УДАЛЕНЫ:
...
ВНИМАНИЕ: Будут удалены важные для работы системы пакеты
Обычно этого делать не следует. Вы должны точно понимать возможные последствия!
...
0 будет обновлено, 0 новых установлено, 2648 пакетов будет удалено и 0 не будет обновлено.
Необходимо получить 0B архивов.
После распаковки будет освобождено 8994MB дискового пространства.
Вы делаете нечто потенциально опасное!
Введите фразу 'Yes, do as I say!' чтобы продолжить.
#apt-get
&&update
apt-get
dist-upgrade
apt-get update
) обновит индексы пакетов. Вторая команда (apt-get dist-upgrade
) позволяет обновить только те установленные пакеты, для которых в репозиториях, перечисленных в /etc/apt/sources.list
, имеются новые версии.
Примечание
apt-get upgrade
существует, использовать её следует осторожно, либо не использовать вовсе.
/etc/apt/sources.list
, имеются новые версии.
apt-get upgrade
, в результате чего происходит нарушение целостности системы: появляются неудовлетворённые зависимости. Для разрешения этой проблемы существует режим обновления в масштабе дистрибутива — apt-get dist-upgrade
.
apt-get
, которым APT предварит само обновление.
Примечание
apt-get dist-upgrade
обновит систему, но ядро ОС не будет обновлено.
# update-kernel
Примечание
update-kernel
необходимо выполнить команду apt-get update
.
update-kernel
обновляет и модули ядра, если в репозитории обновилось что-то из модулей без обновления ядра.
# remove-old-kernels
epm
упрощает процедуру управления пакетами, может использоваться в скриптах и установщиках, сервисных программах, в повседневном администрировании различных систем. В epm
добавлены типовые операции, которые в случае использования apt, потребовали бы ввода более одной команды.
Примечание
epm
, если она еще не установлена, выполняется командой:
# apt-get install eepm
epm
и её опциях можно получить, выполнив команду:
$ epm --help
Ниже описаны лишь некоторые возможности утилиты epm
.
epm install <имя_пакета>
Важно
epm install
не будут выполнены установочные скрипты из пакета. Это предохраняет систему от повреждения, но может привести к тому, что пакет не заработает. Вернуть стандартное поведение можно добавлением --scripts
:
epm install --scripts <имя_пакета>
epm play <имя_программы>
Список программ, которые можно установить данной командой, можно просмотреть, выполнив команду:
$ epm play
Run with a name of a play script to run:
anydesk - Install AnyDesk from the official site
assistant - Install Assistant (Ассистент) from the official site
…
yandex-browser - Install Yandex browser from the official site
yandex-disk - Install Yandex Disk from the official site
zoom - Install Zoom client from the official site
Команда epm play
требует наличия доступа в сеть Интернет.
Примечание
epm install --repack <имя_пакета>
Для deb-пакетов ключ --repack
применяется автоматически.
epm remove <имя_пакета>
epm search <текст>
$ epm list
# epm autoremove
# epm full-upgrade
Примечание
yum
(должен быть установлен пакет eepm-yum), позволяет имитировать работу менеджера пакетов yum, например:
$ yum search docs-alt-kworkstation
$ apt-cache search -- docs-alt-kworkstation | egrep -i --color -- "(docs-alt-kworkstation)"
docs-alt-kworkstation - ALT KWorkstation documentation
Содержание
/
.
/media/cdrom
(путь в дистрибутиве обозначается с использованием /, а не \, как в DOS/Windows).
/
:
/bin
— командные оболочки (shell), основные утилиты;
/boot
— содержит ядро системы;
/dev
— псевдофайлы устройств, позволяющие работать с устройствами напрямую. Файлы в /dev
создаются сервисом udev
/etc
— общесистемные конфигурационные файлы для большинства программ в системе;
/etc/rc?.d
, /etc/init.d
, /etc/rc.boot
, /etc/rc.d
— каталоги, где расположены командные файлы, выполняемые при запуске системы или при смене её режима работы;
/etc/passwd
— база данных пользователей, в которой содержится информация об имени пользователя, его настоящем имени, личном каталоге, его зашифрованный пароль и другие данные;
/etc/shadow
— теневая база данных пользователей. При этом информация из файла /etc/passwd
перемещается в /etc/shadow
, который недоступен для чтения всем, кроме пользователя root. В случае использования альтернативной схемы управления теневыми паролями (TCB), все теневые пароли для каждого пользователя располагаются в каталоге /etc/tcb/имя пользователя/shadow
;
/home
— домашние каталоги пользователей;
/lib
— содержит файлы динамических библиотек, необходимых для работы большей части приложений, и подгружаемые модули ядра;
/lost+found
— восстановленные файлы;
/media
— подключаемые носители (каталоги для монтирования файловых систем сменных устройств);
/mnt
— точки временного монтирования;
/opt
— вспомогательные пакеты;
/proc
— виртуальная файловая система, хранящаяся в памяти компьютера при загруженной ОС. В данном каталоге расположены самые свежие сведения обо всех процессах, запущенных на компьютере.
/root
— домашний каталог администратора системы;
/run
— файлы состояния приложений;
/sbin
— набор программ для административной работы с системой (системные утилиты);
/selinux
— виртуальная файловая система SELinux;
/srv
— виртуальные данные сервисных служб;
/sys
— файловая система, содержащая информацию о текущем состоянии системы;
/tmp
— временные файлы.
/usr
— пользовательские двоичные файлы и данные, используемые только для чтения (программы и библиотеки);
/var
— файлы для хранения изменяющихся данных (рабочие файлы программ, очереди, журналы).
/usr
:
/usr/bin
— дополнительные программы для всех учетных записей;
/usr/sbin
— команды, используемые при администрировании системы и не предназначенные для размещения в файловой системе root;
/usr/local
— место, где рекомендуется размещать файлы, установленные без использования пакетных менеджеров, внутренняя организация каталогов практически такая же, как и корневого каталога;
/usr/man
— каталог, где хранятся файлы справочного руководства man;
/usr/share
— каталог для размещения общедоступных файлов большей части приложений.
/var
:
/var/log
— место, где хранятся файлы аудита работы системы и приложений;
/var/spool
— каталог для хранения файлов, находящихся в очереди на обработку для того или иного процесса (очереди печати, непрочитанные или не отправленные письма, задачи cron т.д.).
/dev
файловой системы дистрибутива (об этом — ниже). Диски (в том числе IDE/SATA/SCSI/SAS жёсткие диски, USB-диски) имеют имена:
/dev/sda
— первый диск;
/dev/sdb
— второй диск;
/dev/sdX
, где X — a, b, c, d, e, … в зависимости от порядкового номера диска на шине.
/dev/sdb4
— четвертый раздел второго диска.
/
) и раздел подкачки (swap). Размер последнего, как правило, составляет от однократной до двукратной величины оперативной памяти компьютера. Если на диске много свободного места, то можно создать отдельные разделы для каталогов /usr
, /home
, /var
.
command.com
в DOS, но несравненно мощнее. При помощи командных интерпретаторов можно писать небольшие программы — сценарии (скрипты). В Linux доступны следующие командные оболочки:
bash
— самая распространенная оболочка под linux. Она ведет историю команд и предоставляет возможность их редактирования;
pdksh
— клон korn shell, хорошо известной оболочки в UNIX™ системах.
$ echo
$SHELL
history
. Команды, присутствующие в истории, отображаются в списке пронумерованными. Чтобы запустить конкретную команду необходимо набрать:
!номер команды
!!запустится последняя из набранных команд.
gunzip
, можно набрать следующую команду:
gu
$
guguile
gunzip
gupnp-binding-tool
gunzip
— это единственное имя, третьей буквой которого является «n»), а затем нажать клавишу Tab, то оболочка самостоятельно дополнит имя. Чтобы запустить команду нужно нажать Enter.
$PATH
. По умолчанию в этот перечень каталогов не входит текущий каталог, обозначаемый ./
(точка слеш) (если только не выбран один из двух самых слабых уровней защиты). Поэтому, для запуска программы из текущего каталога, необходимо использовать команду (в примере запускается команда prog
):
./prog
cal
, выводящая календарь на текущий месяц.
$
cal
Май 2021 Пн Вт Ср Чт Пт Сб Вс 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
Команда$
cal
1 2022
Январь 2022 Пн Вт Ср Чт Пт Сб Вс 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
cal 1 2022
состоит из двух частей — собственно команды cal
и «остального». То, что следует за командой называется параметрами (или аргументами) и они вводятся для изменения поведения команды. В большинстве случаев, первое слово считается именем команды, а остальные — её параметрами.
date
, только для работы по Гринвичу ей нужен дополнительный параметр -u
(он же --universal
).
$date
Ср мая 5 11:57:57 EET 2021
$date
-u
Ср мая 5 09:58:04 UTC 2021
--help
. К примеру, получить подсказку о том, что делает команда rm
, можно, набрав в терминале rm
--help
.
man
. Пример:
$man
ls
Примечание
ls
-l
-F
можно ввести команду ls
-lF
Учетные записи пользователей
su
su
позволяет изменить «владельца» текущего сеанса (сессии) без необходимости завершать сеанс и открывать новый.
su
[ОПЦИИ...] [ПОЛЬЗОВАТЕЛЬ]
su -
, будет запрошен пароль суперпользователя (root), и, в случае ввода корректного пароля, пользователь получит права администратора. Чтобы вернуться к правам пользователя, необходимо ввести команду:
exit
id
id
выводит информацию о пользователе и группах, в которых он состоит для заданного пользователя или о текущем пользователе (если ничего не указано).
id
[ОПЦИИ...] [ПОЛЬЗОВАТЕЛЬ]
passwd
passwd
меняет (или устанавливает) пароль, связанный с входным_именем пользователя.
Основные операции с файлами и каталогами
ls
ls
(list) печатает в стандартный вывод содержимое каталогов.
ls
[ОПЦИИ...] [ФАЙЛ...]
-a
— просмотр всех файлов, включая скрытые;
-l
— отображение более подробной информации;
-R
— выводить рекурсивно информацию о подкаталогах.
cd
cd
предназначена для смены каталога. Команда работает как с абсолютными, так и с относительными путями. Если каталог не указан, используется значение переменной окружения $HOME
(домашний каталог пользователя). Если каталог задан полным маршрутным именем, он становится текущим. По отношению к новому каталогу нужно иметь право на выполнение, которое в данном случае трактуется как разрешение на поиск.
cd
[-L|-P] [КАТАЛОГ]
$OLDPWD
. Если переход был осуществлен по переменной окружения $CDPATH
или в качестве аргумента был задан «-» и смена каталога была успешной, то абсолютный путь нового рабочего каталога будет выведен на стандартный вывод.
docs/
(относительный путь):
cd
docs/
Сделать текущим каталог /usr/bin
(абсолютный путь):
cd
/usr/bin/
Сделать текущим родительский каталог:
cd
..
Вернуться в предыдущий каталог:
cd
-
Сделать текущим домашний каталог:
cd
pwd
pwd
выводит абсолютный путь текущего (рабочего) каталога.
pwd
[-L|-P]
-P
— не выводить символические ссылки;
-L
— выводить символические ссылки.
rm
rm
служит для удаления записей о файлах. Если заданное имя было последней ссылкой на файл, то файл уничтожается.
Предупреждение
rm
[ОПЦИИ...]
<ФАЙЛ>
-f
— никогда не запрашивать подтверждения;
-i
— всегда запрашивать подтверждение;
-r, -R
— рекурсивно удалять содержимое указанных каталогов.
html
в каталоге ~/html
:
rm
-i
~/html/*.html
mkdir
mkdir
— команда для создания новых каталогов.
mkdir
[-p] [-m права] <КАТАЛОГ...>
rmdir
rmdir
удаляет каталоги из файловой системы. Каталог должен быть пуст перед удалением.
rmdir
[ОПЦИИ] <КАТАЛОГ...>
-p
— удалить каталог и его потомки.
rmdir
часто заменяется командой rm -rf
, которая позволяет удалять каталоги, даже если они не пусты.
cp
cp
предназначена для копирования файлов из одного в другие каталоги.
cp
[-fip] [ИСХ_ФАЙЛ...] [ЦЕЛ_ФАЙЛ...]
cp
[-fip] [ИСХ_ФАЙЛ...] [КАТАЛОГ]
cp
[-R] [[-H] | [-L] | [-P]] [-fip] [ИСХ_ФАЙЛ...] [КАТАЛОГ]
-p
— сохранять по возможности времена изменения и доступа к файлу, владельца и группу, права доступа;
-i
— запрашивать подтверждение перед копированием в существующие файлы;
-r, -R
— рекурсивно копировать содержимое каталогов.
mv
mv
предназначена для перемещения файлов.
mv
[-fi] [ИСХ_ФАЙЛ...] [ЦЕЛ_ФАЙЛ...]
mv
[-fi] [ИСХ_ФАЙЛ...] [КАТАЛОГ]
mv
перемещает исх_файл в цел_файл (происходит переименование файла).
mv
перемещает исходные файлы в указанный каталог под именами, совпадающими с краткими именами исходных файлов.
-f
— не запрашивать подтверждения перезаписи существующих файлов;
-i
— запрашивать подтверждение перезаписи существующих файлов.
cat
cat
последовательно выводит содержимое файлов.
cat
[ОПЦИИ] [ФАЙЛ...]
-n, --number
— нумеровать все строки при выводе;
-E, --show-ends
— показывать $ в конце каждой строки.
head
head
выводит первые 10 строк каждого файла на стандартный вывод.
head
[ОПЦИИ] [ФАЙЛ...]
-n, --lines=[-]K
— вывести первые К строк каждого файла, а не первые 10;
-q, --quiet
— не печатать заголовки с именами файлов.
less
less
позволяет постранично просматривать текст (для выхода необходимо нажать q).
less
ФАЙЛ
grep
grep
имеет много опций и предоставляет возможности поиска символьной строки в файле.
grep
[шаблон_поиска] ФАЙЛ
chmod
chmod
предназначена для изменения прав доступа файлов и каталогов.
chmod
[ОПЦИИ] РЕЖИМ[,РЕЖИМ]... <ФАЙЛ>
chmod
[ОПЦИИ] --reference=ИФАЙЛ <ФАЙЛ>
-R
— рекурсивно изменять режим доступа к файлам, расположенным в указанных каталогах;
--reference=ИФАЙЛ
— использовать режим файла ИФАЙЛ.
chmod
изменяет права доступа каждого указанного файла в соответствии с правами доступа, указанными в параметре режим, который может быть представлен как в символьном виде, так и в виде восьмеричного, представляющего битовую маску новых прав доступа.
[ugoa...][[+-=][разрешения...]...]Здесь разрешения — это ноль или более букв из набора «rwxXst» или одна из букв из набора «ugo».
f2
:
chmod
+x f2
Запретить удаление файла f3
:
chmod
+t f3
chown
chown
изменяет владельца и/или группу для каждого заданного файла.
chown
[КЛЮЧ]…[ВЛАДЕЛЕЦ][:[ГРУППА]] <ФАЙЛ>
/u
на пользователя test:
chown
test /u
Поменять владельца и группу каталога /u
:
chown
test:staff /u
Поменять владельца каталога /u
и вложенных файлов на test:
chown
-hR test /u
Поиск файлов
find
find
предназначена для поиска всех файлов, начиная с корневого каталога. Поиск может осуществляться по имени, типу или владельцу файла.
find
[-H] [-L] [-P] [-Oуровень] [-D help|tree|search|stat|rates|opt|exec] [ПУТЬ…] [ВЫРАЖЕНИЕ]
-name
— поиск по имени файла;
-type
— поиск по типу f=файл, d=каталог, l=ссылка(lnk);
-user
— поиск по владельцу (имя или UID).
find
, можно выполнять различные действия над найденными файлами. Основные действия:
-exec команда \;
— выполнить команду. Запись команды должна заканчиваться экранированной точкой с запятой. Строка «{}» заменяется текущим маршрутным именем файла;
execdir команда \;
— то же самое что и -exec
, но команда вызывается из подкаталога, содержащего текущий файл;
-ok команда
— эквивалентно -exec
за исключением того, что перед выполнением команды запрашивается подтверждение (в виде сгенерированной командной строки со знаком вопроса в конце) и она выполняется только при ответе: y;
-print
— вывод имени файла на экран.
-print
.
find
. -type f -name "~*" -print
Найти в текущем каталоге файлы, измененные позже, чем файл file.bak
:
find
. -newer file.bak -type f -print
Удалить все файлы с именами a.out
или *.o
, доступ к которым не производился в течение недели:
find
/ \( -name a.out -o -name '*.o' \) \ -atime +7 -exec rm {} \;
Удалить из текущего каталога и его подкаталогов все файлы нулевого размера, запрашивая подтверждение:
find
. -size 0c -ok rm {} \;
whereis
whereis
сообщает путь к исполняемому файлу программы, ее исходным файлам (если есть) и соответствующим страницам справочного руководства.
whereis
[ОПЦИИ] <ИМЯ>
-b
— вывод информации только об исполняемых файлах;
-m
— вывод информации только о страницах справочного руководства;
-s
— вывод информации только об исходных файлах.
Мониторинг и управление процессами
ps
ps
отображает список текущих процессов.
ps
[ОПЦИИ]
-a
— вывести информацию о процессах, ассоциированных с терминалами;
-f
— вывести «полный» список;
-l
— вывести «длинный» список;
-p список
— вывести информацию о процессах с перечисленными в списке PID;
-u список
— вывести информацию о процессах с перечисленными идентификаторами или именами пользователей.
kill
kill
позволяет прекратить исполнение процесса или передать ему сигнал.
kill
[-s] [сигнал] [идентификатор] [...]
kill
[-l] [статус_завершения]
kill
[-номер_сигнала] [идентификатор] [...]
-l
— вывести список поддерживаемых сигналов;
-s сигнал, -сигнал
— послать сигнал с указанным именем.
kill
не дает желательного эффекта, необходимо использовать команду kill
с параметром -9
(kill
-9
PID_номер).
df
df
показывает количество доступного дискового пространства в файловой системе, в которой содержится файл, переданный как аргумент. Если ни один файл не указан, показывается доступное место на всех смонтированных файловых системах. Размеры по умолчанию указаны в блоках по 1КБ.
df
[ОПЦИИ] [ФАЙЛ...]
--total
— подсчитать общий объем в конце;
-h, --human-readable
— печатать размеры в удобочитаемом формате (например, 1K, 234M, 2G).
du
du
подсчитывает использование диска каждым файлом, для каталогов подсчет происходит рекурсивно.
du
[ОПЦИИ] [ФАЙЛ...]
-a, --all
— выводить общую сумму для каждого заданного файла, а не только для каталогов;
-c, --total
— подсчитать общий объем в конце. Может быть использовано для выяснения суммарного использования дискового пространства для всего списка заданных файлов;
-d, --max-depth=N
— выводить объем для каталога (или файлов, если указано --all
) только если она на N или менее уровней ниже аргументов командной строки;
-S, --separate-dirs
— выдавать отдельно размер каждого каталога, не включая размеры подкаталогов;
-s, --summarize
— отобразить только сумму для каждого аргумента.
which
which
отображает полный путь к указанным командам или сценариям.
which
[ОПЦИИ] <ФАЙЛ...>
-a, --all
— выводит все совпавшие исполняемые файлы по содержимому в переменной окружения $PATH
, а не только первый из них;
-c, --total
— подсчитать общий объем в конце. Может быть использовано для выяснения суммарного использования дискового пространства для всего списка заданных файлов;
-d, --max-depth=N
— выводить объем для каталога (или файлов, если указано --all
) только если она на N или менее уровней ниже аргументов командной строки;
-S, --separate-dirs
— выдавать отдельно размер каждого каталога, не включая размеры подкаталогов;
--skip-dot
— пропускает все каталоги из переменной окружения $PATH
, которые начинаются с точки.
Использование многозадачности
bg
bg
позволяет перевести задание на задний план.
bg
[ИДЕНТИФИКАТОР ...]
fg
fg
позволяет перевести задание на передний план.
fg
[ИДЕНТИФИКАТОР ...]
Сжатие и упаковка файлов
tar
tar
, которая преобразует файл или группу файлов в архив без сжатия (tarfile).
tar
-cf [имя создаваемого файла архива] [упаковываемые файлы и/или каталоги]
tar
-cf moi_dokumenti.tar Docs project.tex
tar
-xf [имя файла архива]
gzip
, bzip2
и 7z
.
cat
. По умолчанию команда cat
читает данные из всех файлов, которые указаны в командной строке, и посылает эту информацию непосредственно в стандартный вывод (stdout). Следовательно, команда:
cat
history-final masters-thesis
выведет на экран сначала содержимое файла history-final
, а затем — файла masters-thesis
.
cat
читает входные данные из stdin и возвращает их в stdout. Пример:
cat
Hello there.
Hello there.
Bye.
Bye.
Ctrl-D
cat
немедленно возвращает на экран. При вводе информации со стандартного ввода конец текста сигнализируется вводом специальной комбинации клавиш, как правило, Ctrl+D. Сокращённое название сигнала конца текста — EOT (end of text).
sort
является простым фильтром — она сортирует входные данные и посылает результат на стандартный вывод. Совсем простым фильтром является программа cat
— она ничего не делает с входными данными, а просто пересылает их на выход.
ls
на stdin команды sort
:
ls
|sort
-r notes masters-thesis history-final english-list
ls
/usr/bin |more
где командаls
|sort
-r |head
-1 notes
head -1
выводит на экран первую строку получаемого ей входного потока строк (в примере поток состоит из данных от команды ls
), отсортированных в обратном алфавитном порядке.
ls
> file-list
уничтожит содержимое файла file-list
, если этот файл ранее существовал, и создаст на его месте новый файл. Если вместо этого перенаправление будет сделано с помощью символов >>, то вывод будет приписан в конец указанного файла, при этом исходное содержимое файла не будет уничтожено.
Примечание
su
(shell of user), которая позволяет выполнить одну или несколько команд от лица другого пользователя. По умолчанию эта утилита выполняет команду sh
от пользователя root, то есть запускает командный интерпретатор. Отличие от предыдущего способа в том, что всегда известно, кто именно запускал su
, а значит, ясно, кто выполнил определённое административное действие.
su
, а утилиту sudo
, которая позволяет выполнять только заранее заданные команды.
Важно
su
и sudo
, необходимо быть членом группы wheel. Пользователь, созданный при установке системы, по умолчанию уже включён в эту группу.
control
доступна только для суперпользователя (root). Для того, чтобы посмотреть, что означает та или иная политика control
(разрешения выполнения конкретной команды, управляемой control
), надо запустить команду с ключом help:
# control su help
Запустив control
без параметров, можно увидеть полный список команд, управляемых командой (facilities) вместе с их текущим состоянием и набором допустимых состояний.
su -
.
su
без ключа, то происходит вызов командного интерпретатора с правами root. При этом значение переменных окружения, в частности $PATH
, остаётся таким же, как у пользователя: в переменной $PATH
не окажется каталогов /sbin
, /usr/sbin
, без указания полного имени будут недоступны команды route
, shutdown
, mkswap
и другие. Более того, переменная $HOME
будет указывать на каталог пользователя, все программы, запущенные в режиме суперпользователя, сохранят свои настройки с правами root в каталоге пользователя, что в дальнейшем может вызвать проблемы.
su -
. В этом режиме su
запустит командный интерпретатор в качестве login shell, и он будет вести себя в точности так, как если бы в системе зарегистрировался root.
id
, вывод её может быть примерно следующим:
uid=500(test) gid=500(test) группы=500(test),16(rpm)
Примечание
passwd
и утилит shadow
.
passwd [ОПЦИИ...]
[ИМЯ ПОЛЬЗОВАТЕЛЯ]
-d
--delete
— удалить пароль для указанной записи;
-f
, --force
— форсировать операцию;
-k
, --keep-tokens
— сохранить не устаревшие пароли;
-l
, --lock
— блокировать указанную запись;
--stdin
— прочитать новые пароли из стандартного ввода;
-S
, --status
— дать отчет о статусе пароля в указанной записи;
-u
, --unlock
— разблокировать указанную запись;
-?
, --help
— показать справку и выйти;
--usage
— дать короткую справку по использованию;
-V
, --version
— показать версию программы и выйти.
passwd
заканчивает работу с кодом выхода 0. Код выхода 1 означает, что произошла ошибка. Текстовое описание ошибки выводится на стандартный поток ошибок.
useradd
и passwd
:
#useradd
test1 #passwd
test1 passwd: updating all authentication tokens for user test1. You can now choose the new password or passphrase. A valid password should be a mix of upper and lower case letters, digits, and other characters. You can use an 8 character long password with characters from at least 3 of these 4 classes, or a 7 character long password containing characters from all the classes. An upper case letter that begins the password and a digit that ends it do not count towards the number of character classes used. A passphrase should be of at least 3 words, 11 to 40 characters long, and contain enough different characters. Alternatively, if no one else can see your terminal now, you can pick this as your password: "holder5dinghy-Arm". Enter new password:
passwd
— но если он попытается поставить слабый пароль, система откажет ему (в отличие от root) в изменении.
useradd
имеет множество параметров, которые позволяют менять её поведение по умолчанию. Например, можно принудительно указать, какой будет UID или какой группе будет принадлежать пользователь.
usermod
:
# usermod
-G audio,rpm,test1 test1
# usermod
-l test2 test1
usermod -L
test2
и usermod -U
test2
соответственно временно блокируют возможность входа в систему пользователю test2 и возвращают всё на свои места.
chpasswd
. На стандартный вход ей следует подавать список, каждая строка которого будет выглядеть как имя:пароль
.
userdel
.
userdel test2
удалит пользователя test2 из системы. Если будет дополнительно задан параметр -r
, то будет уничтожен и домашний каталог пользователя. Нельзя удалить пользователя, если в данный момент он еще работает в системе.
pstree
.
/etc/inittab
, откуда вызываются другие программы и скрипты на определенном этапе запуска.
service
и chkconfig
продолжат работать в мире systemd практически без изменений. Тем не менее, в этой таблице показано как выполнить те же действия с помощью встроенных утилит systemctl.
Таблица 65.1. Команды управления службами
Команды Sysvinit
|
Команды Systemd
|
Примечания
|
---|---|---|
service frobozz start
|
systemctl start frobozz.service
|
Используется для запуска службы (не перезагружает постоянные)
|
service frobozz stop
|
systemctl stop frobozz.service
|
Используется для остановки службы (не перезагружает постоянные)
|
service frobozz restart
|
systemctl restart frobozz.service
|
Используется для остановки и последующего запуска службы
|
service frobozz reload
|
systemctl reload frobozz.service
|
Если поддерживается, перезагружает файлы конфигурации без прерывания незаконченных операций
|
service frobozz condrestart
|
systemctl condrestart frobozz.service
|
Перезапускает службу, если она уже работает
|
service frobozz status
|
systemctl status frobozz.service
|
Сообщает, запущена ли уже служба
|
ls /etc/rc.d/init.d/
|
systemctl list-unit-files --type=service (preferred)
ls /lib/systemd/system/*.service /etc/systemd/system/*.service
|
Используется для отображения списка служб, которые можно запустить или остановить.
Используется для отображения списка всех служб.
|
chkconfig frobozz on
|
systemctl enable frobozz.service
|
Включает службу во время следующей перезагрузки, или любой другой триггер
|
chkconfig frobozz off
|
systemctl disable frobozz.service
|
Выключает службу во время следующей перезагрузки, или любой другой триггер
|
chkconfig frobozz
|
systemctl is-enabled frobozz.service
|
Используется для проверки, сконфигурирована ли служба для запуска в текущем окружении
|
chkconfig --list
|
systemctl list-unit-files --type=service(preferred)
ls /etc/systemd/system/*.wants/
|
Выводит таблицу служб. В ней видно, на каких уровнях загрузки они (не)запускаются
|
chkconfig frobozz --list
|
ls /etc/systemd/system/*.wants/frobozz.service
|
Используется, для отображения на каких уровнях служба (не)запускается
|
chkconfig frobozz --add
|
systemctl daemon-reload
|
Используется, когда вы создаете новую службу или модифицируете любую конфигурацию
|
journalctl
. По умолчанию, больше не требуется запуск службы syslog.
journalctl
с разными ключами:
journalctl
-b
— покажет сообщения только с текущей загрузки;
journalctl
-f
— покажет только последние сообщения.
journalctl
_PID
=1 — покажет сообщения первого процесса (init).
journalctl
. Для этого используйте команду man journalctl
.
man
(сокращение от manual). Каждая страница руководства посвящена одному объекту системы. Для того чтобы прочесть страницу руководства по программе, необходимо набрать man
название_программы. К примеру, если вы хотите узнать, какие опции есть у команды date
, вы можете ввести команду:
$
man
date
man
осуществляется командой apropos
. Если вы точно не знаете, как называется необходимая вам программа, то поиск осуществляется по ключевому слову, к примеру, apropos
date или при помощи ввода слова, обозначающего нужное действие, после команды man
-k
(например, man
-k
copy). Слово, характеризующее желаемое для вас действие, можно вводить и на русском языке. При наличии русского перевода страниц руководства man
результаты поиска будут выведены на запрашиваемом языке.
man
запускает программу постраничного просмотра текстов. Страницы перелистывают пробелом, для выхода из режима чтения описания команд man
необходимо нажать на клавиатуре q. Команда man
man
выдаёт справку по пользованию самой командой man
.
man
по умолчанию будет отображать их на русском языке.
info
info
. Команда info
, введённая без параметров, предлагает пользователю список всех документов info, установленных в системе.
/usr/share/doc
— место хранения разнообразной документации.
/usr/share/doc/имя_пакета
. Например, документация к пакету foo-1.0-alt1 находится в /usr/share/doc/foo-1.0-alt1
. Для получения полного списка файлов документации, относящихся к пакету, воспользуйтесь командой rpm
-qd
имя_установленного_пакета.
README
, FAQ
, TODO
, СhangeLog
и другие. В файле README
содержится основная информация о программе — имя и контактные данные авторов, назначение, полезные советы и пр. FAQ
содержит ответы на часто задаваемые вопросы; этот файл стоит прочитать в первую очередь, если у вас возникли проблемы или вопросы по использованию программы, поскольку большинство проблем и сложностей типичны, вполне вероятно, что в FAQ
вы тут же найдёте готовое решение. В файле TODO
записаны планы разработчиков на реализацию той или иной функциональности. В файле СhangeLog
записана история изменений в программе от версии к версии.
rpm
-qi
имя_установленного_пакета. В информационном заголовке соответствующего пакета, среди прочей информации, будет выведена искомая ссылка.
HOWTO
в формате HTML (от англ. how to — «как сделать») каталога /usr/share/doc/HOWTO/
(при условии их наличия в системе) содержат многообразную информацию о работе Linux-систем.