Created
October 7, 2018 18:47
-
-
Save Eduard-gan/38d808fe6c67efb6f70a0b47a1a66509 to your computer and use it in GitHub Desktop.
Наследие
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
5288 Python: Экранирование строк от спецсимволов регулярных выражений: | |
Бывает так что из конфига или от пользователя нужно собрать строку, которая потом идёт в регулярное выражение. | |
Для того чтобы эффективно и быстро заэскейпить все спецссимволы регулярок в этой сроке используется re.escape(контент) - она возвращает заэкранированный контент. | |
т.е. реально можно использовать вот так: | |
re.search(re.escape(resource['mask'])+'.*'+re.escape(resource['format']),object.filename) | |
5289: Python: Отправка файла по SMB | |
def send_file(filename): | |
from smb.SMBConnection import SMBConnection | |
user='gan' | |
password='texa$is4re@son' | |
client_machine_name='Zabbix' | |
conn = SMBConnection(user, password, client_machine_name, 'beta', use_ntlm_v2 = True) | |
assert conn.connect('192.168.0.251', 139) | |
with open(filename, 'rb') as opened_file: | |
a = conn.storeFile('Backup', 'schedule_states.txt', opened_file, timeout=30) | |
conn.close() | |
5295: Python: Запрос к MSSQL | |
apt-get install freetds-dev freetds-bin python-dev | |
pip install pymssql | |
import pymssql | |
conn = pymssql.connect(server='yourserver.database.windows.net', user='yourusername@yourserver', password='yourpassword', database='AdventureWorks') | |
cursor = conn.cursor() | |
cursor.execute('SELECT c.CustomerID, c.CompanyName,COUNT(soh.SalesOrderID) AS OrderCount FROM SalesLT.Customer AS c LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh ON c.CustomerID = soh.CustomerID GROUP BY c.CustomerID, c.CompanyName ORDER BY OrderCount DESC;') | |
row = cursor.fetchone() | |
while row: | |
print str(row[0]) + " " + str(row[1]) + " " + str(row[2]) | |
row = cursor.fetchone() | |
5297: PowerShell: Удалённая активация WinRM | |
WinRM - это служба отвечающая за удалённый вызов команд PowerShell. | |
Активируется она из командной строки(которую штатно получаем с помощью PsExec): | |
winrm quickconfig | |
Это автоматически запустит службу и добавит нужные исключения а фаерволл. | |
5298: Windows: Удалённая активация RDP-подключений | |
Подключение: | |
psexec \\hostname -u domain\admin_user -e cmd | |
Активация: | |
reg add "hklm\system\currentcontrolset\control\terminal server" /f /v fDenyTSConnections /t REG_DWORD /d 0 | |
Обезвреживание фаерволла: | |
netsh firewall set service remoteadmin enable | |
netsh firewall set service remotedesktop enable | |
То же но с Powershell: | |
get-ItemProperty -Path "HKLM:\system\currentcontrolset\control\terminal server" -Name fDenyTSConnections | |
Set-ItemProperty -Path "HKLM:\system\currentcontrolset\control\terminal server" -Name fDenyTSConnections -Value 0 | |
в Windows 7 нет командлета для работы с фаерволом так что на PS в этом случае можно забить... | |
5299: Python: Выполнение с Linux-хоста произвольного PowerShell-кода на удалённой машине в домене. | Это сложно. | |
* Нужно настроить WinRM на машине-цели и проверить его: | |
winrm quickconfig | |
winrm set winrm/config/service '@{AllowUnencrypted="true"}' | |
Просмотр параметров WinRM: | |
winrm get winrm/config/service | |
* Нужно установить все необходимые пакеты для работы Kerberos на Linux-машину: | |
apt-get install python3-dev libkrb5-dev krb5-user | |
* Настроить и проверить Kerberos: | |
При установке пакета KRB5 будет задан вопрос о дефолтном домене. Пишется полное имя домена заглавными буквами - SOUZ.LOCAL | |
конфигурационный файл /etc/krb5.conf будет включать следующее: | |
[libdefaults] | |
default_realm = SOUZ.LOCAL | |
... | |
[realms] | |
MYDOMAIN.LOCAL = { | |
kdc = dc0.mydomain.local | |
kdc = dc2.mydomain.local | |
} | |
Проверка: | |
kinit gan - будет запрошен пароль. Нужно проследить что пароль запрашивается для правильной учётки и правильного домена. | |
kilst - удостовериться что билет получен. | |
kdestroy - удалить билет если это необходимо. Нам перед запуском кода нужно будет УЖЕ иметь билет. Автоматически он не получится. | |
* Для безопасного получения билетов без указания пароля в явном виде можно использовать безопасное хранилище учётных данных kerberos: | |
Для создания нужного хранилища используется утилита ktutil у неё интерактивный режим работы - вот схема работы в нём: | |
ktutil | |
add_entry -password -p [email protected] -k 1 -e aes128-cts-hmac-sha1-96 | |
add_entry -password -p [email protected] -k 1 -e rc4-hmac | |
add_entry -password -p [email protected] -k 1 -e des-cbc-crc | |
add_entry -password -p [email protected] -k 1 -e des-cbc-md5 | |
wkt /etc/krb5.keytab | |
quit | |
Проверка. Теперь билеты могут получаться не интерактивно и безопасно с помощью | |
kinit -k gan | |
* Установить нужные модули для Python3: | |
pip3 install requests-kerberos==0.10.0 | |
pip3 install pywinrm[kerberos] | |
* Не забыть получить билет и протестировать код: | |
import winrm | |
session = winrm.Session('192.168.0.217', auth=('[email protected]', 'doesNotMatterBecauseYouAreUsingAKerbTicket'), transport='kerberos') | |
cmd = session.run_cmd('ipconfig', ['/all']) #Выполнение CMD-кода | |
ps = session.run_ps('get-host') #Выполнение PS-кода | |
print(cmd.std_out.decode('cp866')) # Выход приходит как байтстринг. нужен декод с соответствующей кодировкой. У Windows это cp866 или cp1251. | |
print(ps.std_out.decode('cp866')) | |
print(ps.std_err.decode('cp866')) | |
print(ps.status_code) | |
5665: Python: нахождение диапазонов чисел с помощью регулярных выражений | |
Общий метод - создание составного диапазона из более мелких, объединяя их с помощью ИЛИ ( "|" ) + крайние значения: | |
Например: | |
от 0 до 180: "0{0,2}[0-9]|0?[1-9][0-9]|1[0-7][0-9]|180" | |
более 25: "[2][5-9]|[3-9]\d)|\d{3,6}" | |
Если нужно только совпадение в конкретном месте строки - можно добавлять контекст. В данном случае это "WAS: " и возможный "-". | |
"WAS: -?[2][5-9]|WAS: -?[3-9]\d|WAS: -?\d{3,6}" | |
5968: Просмотр даты создания файла в Linux | |
Довольно интересно что на уровне ОС данный функционал пока не реализован в готовом виде так что получить эти данные через программы ls и stat пока невозможно. | |
Однако на уровне файловой системы EXT4 эта информация есть и чтобы её получить "умные люди советуют":http://moiseevigor.github.io/software/2015/01/30/get-file-creation-time-on-linux-with-ext4/ воспользоваться дебаггером файловой системы: | |
debugfs -R 'stat <filename>' </dev/sdXX - partition name> | |
Например: | |
debugfs -R 'stat /var/log/check_schedule_last_run.log' /dev/mapper/Zabbix--vg-root | |
Для завершения просмотра можно нажать "q". | |
Python: Выполнение локальной команды Powershell и получение объекта обратно | |
май 21, 2017, 22:12 | |
<div>Python 3.6 / Windows management framework 5.1 | |
import subprocess | |
import json | |
output = subprocess.check_output(["powershell.exe", "Get-Process -Name smss | ConvertTo-Json"], shell=True) | |
print (output) | |
print (type(output)) | |
decoded = output.decode('ascii') | |
print(type(decoded)) | |
imported = json.loads(decoded) | |
print(imported) | |
print(type(imported)) | |
print(imported['StartInfo']['Environment'][4][16:-1]) | |
Tags: windows, #print, python, powershell | |
15 июля 2016 | |
Django: Начало | |
#Минимальная базовая установка Djano + uWSGI + nginx: | |
# Начальная установка | |
apt-get update | |
apt-get install python3 python3-pip | |
#Возможно потребуется установить python3-dev | |
pip3 install Django | |
pip3 install uwsgi | |
apt-get install nginx-full | |
#Проверка работы веб-сервера uWSGI на простом скрипте python: | |
nano test.py: | |
def application(env, start_response): | |
start_response('200 OK', [('Content-Type','text/html')]) | |
return [b"Hello World"] | |
# Большая часть этй функции стандартизирована, здесь ничего нелья убрать или сократить. Это чистый стандарт. | |
uwsgi --http 0.0.0.0:8000 --wsgi-file test.py | |
# Это запустит uwsgi с прослушиванием внешнего порта на действующем ip-адресе(не 127.0.0.1) причём наружу uwsgi будет отдавать и принимать данные по протоколу HTTP. С внутренней стороны разумеется протокол uwsgi который практически реализует стандарт WSGI. | |
# Создание проекта Django | |
cd /var/www | |
django-admin startproject TEST | |
cd TEST | |
./manage.py migrate | |
nano TEST/settings.py: | |
STATIC_ROOT = os.path.join(BASE_DIR, 'static') | |
STATIC_URL = '/static/' | |
mkdir /var/www/TEST/static | |
./manage.py collectstatic | |
# Тест проекта с встроенным сервером разработки | |
./manage.py runserver 0.0.0.0:8080(тестируем с реальным внешним адресом, а не локально на 127.0.0.1) | |
# Тестовый запуск проекта с uWSGI | |
# Для расшифровки опций uWSGI очень хороша uwsgi --help | |
uwsgi --chdir=/var/www/TEST --module=TEST.wsgi:application --env DJANGO_SETTINGS_MODULE=TEST.settings --master --http=0.0.0.0:80 --vacuum | |
# Запускаем на реальном адресе uWSGI. Потом для проксирования через nginx мы запустим на лупбэке и в режиме --socket а не --http. | |
# Запуск uWSGI для обслуживания динамических и статических запросов | |
uwsgi --chdir=/var/www/TEST --module=TEST.wsgi:application --env DJANGO_SETTINGS_MODULE=TEST.settings --master --http=0.0.0.0:8000 --vacuum --static-check /var/www/TEST/ | |
# Запуск для проксирования через nginx(используем лупбэк, но лучше перейти на unix-сокет) | |
mkdir /var/log/uwsgi | |
uwsgi --chdir=/var/www/TEST --module=TEST.wsgi:application --env DJANGO_SETTINGS_MODULE=TEST.settings --master --socket=127.0.0.1:8000 --vacuum --daemonize=/var/log/uwsgi/TEST.log | |
# Запуск nginx для обработки статики и трансляции динамических(Python) запросов на uWSGI-сервер | |
nano /etc/nginx/sites-available/TEST: | |
upstream my_uWSGI_server { | |
server 127.0.0.1:8000; | |
} | |
server { | |
listen 80; | |
server_name your_hostname; | |
charset utf-8; | |
location /static { | |
alias /var/www/TEST/static; | |
} | |
location / { | |
uwsgi_pass my_uWSGI_server; | |
include /var/www/TEST/uwsgi_params; | |
} | |
} | |
nano /var/www/TEST/uwsgi_params: | |
uwsgi_param QUERY_STRING $query_string; | |
uwsgi_param REQUEST_METHOD $request_method; | |
uwsgi_param CONTENT_TYPE $content_type; | |
uwsgi_param CONTENT_LENGTH $content_length; | |
uwsgi_param REQUEST_URI $request_uri; | |
uwsgi_param PATH_INFO $document_uri; | |
uwsgi_param DOCUMENT_ROOT $document_root; | |
uwsgi_param SERVER_PROTOCOL $server_protocol; | |
uwsgi_param REQUEST_SCHEME $scheme; | |
uwsgi_param HTTPS $https if_not_empty; | |
uwsgi_param REMOTE_ADDR $remote_addr; | |
uwsgi_param REMOTE_PORT $remote_port; | |
uwsgi_param SERVER_PORT $server_port; | |
uwsgi_param SERVER_NAME $server_name; | |
ln -s /etc/nginx/sites-available/TEST /etc/nginx/sites-enabled/TEST | |
/etc/init.d/nginx restart | |
Настроение хз- | |
Метки (редактировать) django, nginx, python, uwsgi | |
Python: Получение данных со стандартного ввода (echo "hey" | script.py) | |
echo -e "Hello Holly.\n This is HEY@" | python3 -c "import sys; print(sys.stdin.readlines())" | |
Как видно модуль sys даёт возможность поработать с стандартным вводом. У него много методов. | |
-e Включает escape-последовательности в echo. | |
-с Позволяет выполнить произвольный код прямо из команды. Не сильно произвольный т.к. многие конструкции зависят от правальных отступов. | |
";"(разделитель команд) - оказывается очень полезен в этом режиме. | |
При попытке использовать циклы возникают проблемы, лучше заменять их list comperhension'ом. | |
Метки: python | |
2 июня 2016 | |
Linux: Создание и отправка зашифрованных файловых архивов по SFTP | |
1) Для работы в неинтерактивном режиме понадобится установка ключей ssh: | |
На сервере с которого мы хотим неинтерактивно заходить на другой сервер: | |
- ssh-keygen -t rsa (Генерируем ключи в стандартную папку и без пароля) | |
- копируем ключ ~./ssh/id_rsa.pub в папку пользователя от имени которого будем подключаться в ~.ssh/authorized_keys | |
2) Сам алгоритм работы: | |
mysqldump -u root --single-transaction postfix > /root/backup_somedatabase.sql (бэкапится какая-то SQL-база) | |
cp -r /usr/local/etc/someprogramm /root/someprogramm_conf_backup (бэкапятся какие-то файлы) | |
tar -cvf - /root/backup_somedatabase.sql /root/someprogramm_conf_backup/ | openssl enc -aes-256-cbc -salt -k PASS -e > /home/sysadmin/backup.tar.enc (создаётся зашифрованный архив свя фишка в - которое означает что выхлоп tar идёт на stdout) | |
printf "cd /mnt/vl1\nput /home/sysadmin/backup.tar.enc" | sftp myserver (Складываем бэкап на удалённый сервер по SFTP) | |
3) Использование бэкапа: | |
DECRYPT: | |
openssl enc -aes-256-cbc -d -in /mnt/vl1/backup.tar.enc -out /mnt/vl1/backup.tar -k PASS | |
EXTRACT: | |
tar -xvf /mnt/vl1/backup.tar | |
Метки (редактировать) bash, linux, openssl, ssh, tar | |
25 мая 2016 | |
Python: Памятка по цветному выводу в Linux-консоли | |
1print '\033[1;30mGray like Ghost\033[1;m' | |
2print '\033[1;31mRed like Radish\033[1;m' | |
3print '\033[1;32mGreen like Grass\033[1;m' | |
4print '\033[1;33mYellow like Yolk\033[1;m' | |
5print '\033[1;34mBlue like Blood\033[1;m' | |
6print '\033[1;35mMagenta like Mimosa\033[1;m' | |
7print '\033[1;36mCyan like Caribbean\033[1;m' | |
8print '\033[1;37mWhite like Whipped Cream\033[1;m' | |
9print '\033[1;38mCrimson like Chianti\033[1;m' | |
10print '\033[1;41mHighlighted Red like Radish\033[1;m' | |
11print '\033[1;42mHighlighted Green like Grass\033[1;m' | |
12print '\033[1;43mHighlighted Brown like Bear\033[1;m' | |
13print '\033[1;44mHighlighted Blue like Blood\033[1;m' | |
14print '\033[1;45mHighlighted Magenta like Mimosa\033[1;m' | |
15print '\033[1;46mHighlighted Cyan like Caribbean\033[1;m' | |
16print '\033[1;47mHighlighted Gray like Ghost\033[1;m' | |
17print '\033[1;48mHighlighted Crimson like Chianti\033[1;m' | |
5 мая 2016 | |
VirtualBox: Смена UUID диска | |
PS C:\Windows\system32> &"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands sethduuid "E:\virtual\IPyt | |
hon\debian.vhd" | |
UUID changed to: f0b1163d-9ff8-4c38-a4dd-de318dfe059b | |
PS C:\Windows\system32> | |
Метки (редактировать) powershell, virtualbox | |
4 мая 2016 | |
MySQL: Рутина | |
Создание пользователя с указанием хоста(чтобы разрешить существующему пользователю доступ а конкретного хоста, придётся создать такого же пользователя с таим же пролем но с другим хостом.): | |
grant all privileges on *.* to 'newuser'@'192.168.10.1' identified by 'password' WITH GRANT OPTION; | |
* GRANT - даёт права REVOKE - отбирает | |
* ALL - тип привилегий, есть ещё: | |
Table 6.2 Permissible Privileges for GRANT and REVOKE | |
Privilege Column Context | |
CREATE Create_priv databases, tables, or indexes | |
DROP Drop_priv databases, tables, or views | |
GRANT OPTION Grant_priv databases, tables, or stored routines | |
LOCK TABLES Lock_tables_priv databases | |
REFERENCES References_priv databases or tables | |
EVENT Event_priv databases | |
ALTER Alter_priv tables | |
DELETE Delete_priv tables | |
INDEX Index_priv tables | |
INSERT Insert_priv tables or columns | |
SELECT Select_priv tables or columns | |
UPDATE Update_priv tables or columns | |
CREATE TEMPORARY TABLES Create_tmp_table_priv tables | |
TRIGGER Trigger_priv tables | |
CREATE VIEW Create_view_priv views | |
SHOW VIEW Show_view_priv views | |
ALTER ROUTINE Alter_routine_priv stored routines | |
CREATE ROUTINE Create_routine_priv stored routines | |
EXECUTE Execute_priv stored routines | |
FILE File_priv file access on server host | |
CREATE TABLESPACE Create_tablespace_priv server administration | |
CREATE USER Create_user_priv server administration | |
PROCESS Process_priv server administration | |
PROXY see proxies_priv table server administration | |
RELOAD Reload_priv server administration | |
REPLICATION CLIENTRepl_client_priv server administration | |
REPLICATION SLAVE Repl_slave_priv server administration | |
SHOW DATABASES Show_db_priv server administration | |
SHUTDOWN Shutdown_priv server administration | |
SUPER Super_priv server administration | |
ALL [PRIVILEGES] server administration | |
USAGE server administration | |
* on *.* - на любую таблицу и базу. А вообще - база.таблица | |
* to 'newuser'@'192.168.10.1' - имя и хост с которого имя будет заходит. Для любого хоста используется '%' | |
* identified by 'password' - пароль | |
* WITH GRANT OPTION - даёт право раздавать пользователю свои привелегии другим пользователям, но не большие чем он обладает сам. | |
Смена пароля для пользователя: | |
use mysql; | |
SET PASSWORD FOR 'tom'@'localhost' = PASSWORD('foobar'); | |
Создание резервной копии без блокировки БД: | |
mysqldump -u root -p --single-transaction zabbix > /root/zabbix_backup_db.sql | |
Восстановление резервной копии БД: | |
mysqldump -u root -p zabbix < zabbix_backup_db.sql | |
28 апреля 2016 | |
PowerShell: Альтернативный способ запуска приложений | |
powershell -command "& {&'some-command' someParam}" | |
Also, here is a neat way to do multiple commands: | |
powershell -command "& {&'some-command' someParam}"; "& {&'some-command' -SpecificArg someParam}" | |
For example, this is how I ran my 2 commands: | |
powershell -command "& {&'Import-Module' AppLocker}"; "& {&'Set-AppLockerPolicy' -XmlPolicy myXmlFilePath.xml}" | |
powershell -command "& {&'Dismount-DiskImage' -ImagePath '\\server\someshare\backup\content.vhd'}" | |
Метки (редактировать) powershell | |
25 апреля 2016 | |
tcpdump: Просмотр и одновременная запись пакетов в файл | |
tcpdump -w - | tee somefile | tcpdump -r - | |
Метки (редактировать) tcpdump | |
8 апреля 2016 | |
Linux: Просмотр статистики I/O | |
Для этого можно использовать программу sysstat | |
Настройка простая: | |
Step 1. Install sysstat | |
sudo apt-get install sysstat | |
Step 2. Enable stat collection | |
sudo vi /etc/default/sysstat | |
change ENABLED=”false” to ENABLED=”true” | |
save the file | |
Step 3. Change the collection interval from every 10 minutes to every 2 minutes. | |
sudo vi /etc/cron.d/sysstat | |
Change | |
5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1 | |
To | |
*/2 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1 | |
save the file | |
Step 4. Restart sysstat | |
sudo service sysstat restart | |
Step 5. If you want to see all statistics you can type: | |
sar -A | |
Step 6. If you want to save the statistics for further analysis to a file use: | |
sudo sar -A > $(date +`hostname`-%d-%m-%y-%H%M.log) | |
References | |
man sysstat | |
man sar | |
For disk I/O trending there are a few options. My personal favorite is the sar command from sysstat. By default, it gives output like this: | |
09:25:01 AM CPU %user %nice %system %iowait %steal %idle | |
09:35:01 AM all 0.11 0.00 0.01 0.00 0.00 99.88 | |
09:45:01 AM all 0.12 0.00 0.01 0.00 0.00 99.86 | |
09:55:01 AM all 0.09 0.00 0.01 0.00 0.00 99.90 | |
10:05:01 AM all 0.10 0.00 0.01 0.02 0.01 99.86 | |
Average: all 0.19 0.00 0.02 0.00 0.01 99.78 | |
The %iowait is the time spent waiting on I/O. Using the Debian package, you must enable the stat collector via the /etc/default/sysstat config file after package installation. | |
To see current utilization broken out by device, you can use the iostat command, also from the sysstat package: | |
$ iostat -x 1 | |
Linux 3.5.2-x86_64-linode26 (linode) 11/08/2012 _x86_64_ (4 CPU) | |
avg-cpu: %user %nice %system %iowait %steal %idle | |
0.84 0.00 0.08 1.22 0.07 97.80 | |
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util | |
xvda 0.09 1.02 2.58 0.49 112.79 12.11 40.74 0.15 48.56 3.88 1.19 | |
xvdb 1.39 0.43 4.03 1.82 43.33 18.43 10.56 0.66 112.73 1.93 1.13 | |
Some other options that can show disk usage in trending graphs is munin and cacti. | |
10 марта 2016 | |
Hyper-V: Права на файлы виртуальных машин. | |
В одну историю слиты и Hyper-V и Руссификация Windows. | |
Как выразился один блоггер, когда вы увидите разрешения на файлы Hyper-V у вас взорвётся мозг и вам будет проще съесть свои носки, чем исправить проблему с незапускающейся из-за недостаточности прав виртуальной машиной. | |
Суть в том, что Hyper-V создаёт "специальные" системные группы безопасности(Service SIDs). Специальность их заключается в том, что манипулировать ими, как и остальными группами из графического интерфейча не получится, узнать о них сложно. Группы например называются NT Virtual Machines. Или 2DDE62F7-509D-438A-BB6C-838ABD8E4C0E, например. | |
Сразу поясню, что: | |
- Группа 2DDE62F7-509D-438A-BB6C-838ABD8E4C0E - это группа созданная автоматически при создании виртуальной машины и называется она ровно так же как ID виртуальной машины. | |
- Группа NT Virtual Machines - это группа в которую входят все группы предыдущего вида. Группы предыдущего вида указываются в "особом" формате: | |
NT Virtual Machines\2DDE62F7-509D-438A-BB6C-838ABD8E4C0E | |
Это взрыв. | |
Теперь про любимую руссификацию: Название группы "NT Virtual Machines" руссифицировано. Т.е. если вы попробуете к ней или её членам обратиться с помощью icacl, то получите: | |
Сопоставление между именами пользователей и идентификаторами безопасности не было произведено. | |
Успешно обработано 0 файлов; не удалось обработать 1 файлов | |
Руссифицированные названия групп выглядят так: | |
ВИРТУАЛЬНАЯ МАШИНА NT | |
ВИРТУАЛЬНАЯ МАШИНА NT\Виртуальные машины | |
ВИРТУАЛЬНАЯ МАШИНА NT\2DDE62F7-509D-438A-BB6C-838ABD8E4C0E. | |
Слава Богу, что не руссифицировали ID. | |
Теперь носки. | |
Для начала нужно разобраться на что какие разрешения дать. Вот здесь чувак довольно дельно разложил на части стандартный сетап прав Hyper-V. | |
Тут тоже много разложено по полочкам. | |
А вообще манипуляции ведутся с помощью icacls. | |
Краткий хинт: | |
Посмотреть пермишны: icacls "E:\my_vms" | |
Отключить наследование: icacls "E:\my_vms" /inheritance:r | |
Удалить ACL: icacls "E:\my_vms" /remove "souz\gan"(или "система" или "Пользователи") | |
Добавить носочный ACL: icacls "E:\my_vms" /grant "ВИРТУАЛЬНАЯ МАШИНА NT\Виртуальные машины":F | |
Что куда давать: | |
Как правило даётся доступ группе "ВИРТУАЛЬНАЯ МАШИНА NT\Виртуальные машины" на общую папку с файлом настроек вирт.машины, дисками и снапшотами. На сам диск VHD, даётся полный доступ для "ВИРТУАЛЬНАЯ МАШИНА NT\2DDE62F7-509D-438A-BB6C-838ABD8E4C0E" (ID виртуальной машины естественно заменить на нужный, а нужный можно узнать по названию файла конфигурации вм) | |
Метки (редактировать) hyper-v, permissions | |
1 марта 2016 | |
AD: Назначение гранулярных прав доменным учётным записям | |
В АД это устроено через GPO. | |
Если стоит например задача дать доменной учётке право типа SeServiceLogonRight на конкретном компьютере, то один из вариантов реализации это применить к подразделению(OU) в котором находится учётная запись компьютера политику гарантирующую права данному пользователю. | |
Это можно делать и в дефолтной доменной политике если изменения сильно глобально, но можно и создать отдельную политику повесив её на нужный OU дополнительно ограничив поле её применения учётной записью нужного ПК в фильтрах безопасности политики. | |
Конкретно право внутри политики выдаётся следующим способом: | |
Конфигурация компьютера -> Политики -> Параметры безопасности -> Локальные политики -> Назначение прав пользователя. | |
Метки (редактировать) ad, gpo, windows | |
15 февраля 2016 | |
PowerShell: добавляем историю введённых команд | |
Проверяем верситю PS: | |
$PSVersionTable.PSVersion (Если меньше 3 то ставим её отсюда и перезагружаем ПК) | |
Разрешаем выполнение скриптов: | |
set-executionpolicy remotesigned | |
Устанавливаем PsGet(типа apt-get для PS): | |
(new-object Net.WebClient).DownloadString("http://psget.net/GetPsGet.ps1") | iex | |
import-module PsGet | |
Устанавливаем какие-то лунные модули: | |
install-module PsUrl | |
install-module PSReadline | |
Открываем Notepad++ в режиме суперпользователя и набиваем такой скрипт: | |
$HistoryFilePath = Join-Path ([Environment]::GetFolderPath('UserProfile')) .ps_history | |
Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Clixml $HistoryFilePath } | out-null | |
if (Test-path $HistoryFilePath) { Import-Clixml $HistoryFilePath | Add-History } | |
# if you don't already have this configured... | |
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward | |
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward | |
и сохраняем по пути C:\Users\\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 | |
Перезапускаем PS и тестируем. | |
Метки (редактировать) powershell, windows | |
11 февраля 2016 | |
Получение SID по username и обратно | |
wmic useraccount where name='username' get sid | |
wmic useraccount where sid='S-1-5-21-2572202928-53892503-2622909331-1366' get name | |
Метки (редактировать) sid, windows | |
26 января 2016 | |
MSSQL: Выгрузка баз на удалённую систему. | |
При создании простого задания бэкапа с автоматическим именем файла зависящим от времени, типа такого: | |
DECLARE @backup_full_path varchar(1000) | |
SELECT @backup_full_path = (SELECT '\\beta\backup\sql_backup\MyDB_' + REPLACE(REPLACE(convert(varchar(500),GetDate(),120) , ':', '') , '-', '') + '.bak') | |
BACKUP DATABASE [upp2013_time] TO DISK = @backup_full_path WITH NOFORMAT, NOINIT, NAME = N'upp2013_time_full', SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10 | |
Если владелец задания доменная учётка, то оно не запускается, а если владелец sa, то запускается но не может получить доступ на шару. ответ в этом случае просто. Выяснить от какого пользователя работает служба MSSQLSERVR и соответственно это и есть тот самый пользователь который будет проситься на шару. А случае работы SQL-сервера от локального админа - это соответственно будет локальный админ на удалённой системе. Просто даём соответствующие права. | |
Если всё равно не понятно от кого SQL-сервер пытается работать на шаре - хорошо помогают логи безопасности удалённой системы. там фиксируются входы в систему учётных записей. | |
Метки (редактировать) backup, sql | |
20 января 2016 | |
VirtualBox: Сжатие динамического VDI | |
http://superuser.com/questions/529149/how-to-compact-virtualboxs-vdi-file-size | |
You have to do the following steps: | |
Run defrag in the guest (Windows only) | |
Nullify free space: | |
With a Linux Guest run this: | |
sudo dd if=/dev/zero of=/bigemptyfile bs=4096k | |
sudo rm -rf /bigemptyfile | |
Or: | |
telinit 1 | |
mount -o remount,ro /dev/sda1 | |
zerofree -v /dev/sda1 | |
With a Windows Guest, download SDelete from Sysinternals and run this: | |
sdelete –z | |
Shutdown the guest VM | |
Now run VBoxManage's modifyhd command with the --compact option: | |
With a Linux Host run this: | |
vboxmanage modifyhd /path/to/thedisk.vdi --compact | |
With a Windows Host run this: | |
VBoxManage.exe modifyhd c:\path\to\thedisk.vdi --compact | |
Метки (редактировать) virtualbox | |
16 декабря 2015 | |
Hyper-V: Уменьшение размера динамически-расширяемых образов (VHD) | |
При использовании динамически-расширающихся файлов-жестких дисков в Hyper-V происходит их рост, но не сокращение. Т.е. размер всегда растёт но никогда не сокращается, даже в том случае если данные в виртуальной машине были уже удалены. | |
По сути ситуация решается следующим принципом: | |
1) Дефрагментация дисков самой виртуальной машиной (желательно) | |
2) Заполнение неиспользуемых секторов нулями. | |
3) Использоывание средств сжатия файла-жесткого диска. (различные методы для NTFS-контента и Non-NTFS-контента) | |
Подробнее: | |
1) Для гостевых систем Windows и остальных, например, Linux-based используются свои индивидуальные способы и программы для дефрагментации. Этот шаг желателен но не обязателен. | |
2) Так же используются различные инструменты. Для Windows это могут быть нестандартные дефрагментаторы с опцией "заполнения нулями" или утилита от Русиновича Sdelete. Для Linux-based есть специально для этого написанная утилита zerofree, чуть подробнее о том как ей воспользоваться на практике: | |
А) Для рабты утилиты файловая система должна быть смонтирована в режиме "только для чтения", соотвественно перезагружаемся в безопасном режиме или уходим туда без перезагрузки ( telinit 1 ). | |
B) В этом режиме монтируем корневую систему в ro: mount -o remount,ro /dev/sda1 | |
Если это не проходит и система кем-то занята, смотрим кем: fuser -v -m / (ищем программы помеченные в атрибутах буквой F или f и завершаем их) | |
У меня это были dhclient и systemd-udevd: pkill dhclient, кильнуть юдев нельзя так что завершаем его service sysdtmd-udevd stop | |
C) После того как всё же смонтировали ФС в ro используем zerofree -v /dev/sda1 | |
D) Выключаем виртуальную машину | |
E) Проводим конверсию файла-образа из одного формата в другой (например из VHD в VHDX или обратно) Но учитываем что VHDX как правило намного больше по размерам сам по себе. Если другой формат не устраивает конвертируем обратно. Размер будет уменьшен относительно начала процесса. | |
FIXIT - найти не такой уёбищный способ compacting'а образов non-NTFS контента в Hyper-V | |
A1) Для Windows процедура и средства иные. Используется Sdelete | |
B1) Выключается машина. | |
C1) Файл-диск монтируется в оснастке "Управление дисками" | |
D1) В Hyper-V выбирается изменение диска, выбирается этот смонтированный файл. | |
E1) Выбирается действия дефрагментация(compact) | |
F1) По завершении всё отмонтируется и включается виртуальная машина. | |
В помощь: | |
http://serverfault.com/questions/165070/how-to-zero-fill-a-virtual-disks-free-space-on-windows-for-better-compression | |
http://serverfault.com/questions/633044/compacting-vhd-disk-images-when-they-are-dynamic | |
http://blogs.technet.com/b/askcore/archive/2012/09/20/compacting-a-dynamically-expanding-virtual-hard-disk-in-windows-server-2012.aspx | |
http://www.pwrusr.com/tips-and-tricks/2-ways-to-compact-your-dynamically-expanding-vhds | |
Метки (редактировать) hyper-v, linux, windows | |
11 ноября 2015 | |
SMBCLIENT: SMB-браузинг из командной строки *nix | |
1) Для начала можно поставить пакет с клиентом Kerberos - krb5-user. При установке спросят дефолтный домен - указываем. Я указал заглавными буквами - работает. Проверяем рабостоспособность: | |
kinit gan | |
klist | |
если билет получен - замечательно. | |
2) Браузинг сети: | |
smbtree -S -k | |
3) Браузинг ПК: | |
smbclient -L //computer -k | |
4) Пользование ресурсом: | |
smbclient //computer -k | |
Метки (редактировать) samba | |
8 ноября 2015 | |
Debian: Live HDD copy | |
Миграция с одного физического винта на другой. | |
1) Подключаем новый диск | |
2) Копируем MBR на новый диск - dd if=старый диск(sda) of=новый диск(sdb) bs=512 count=1 | |
3) Сверяем идентичность таблиц размещения разделов с помощью fdisk. В моём случае пришлось создать раздел под своп и дать ему правильную метку(82). | |
4) Создаём и монтируем новую корневую ФС. mkfs.ext4 /dev/sdb1 ; mount /dev/sdb1 /mnt | |
5) Создаём файловую систему подкачки - mkswap /deb/sdb5 -U оригинальный UUID от старой файловой системы (посмотреть можно с помощью blkid) | |
6) Копируем содержимое корневой системы на новую - rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* /path/to/backup/folder | |
Здесь важно понимать что это не снапшот. Система должна быть максимально пассивной в момент копирования, все важные и сложные программы и базы данных нужно останавливать иначе есть шанс кривого восстановления этих самых программ. | |
7) Назначаем новой корневой системе UUID старой - tune2fs /dev/sda1 -U оригинальный UUID от старой файловой системы (посмотреть можно с помощью blkid) | |
8) Останавливаем систему. | |
9) Изымаем старый диск. | |
10) Загружаемся и проверяем. | |
Метки (редактировать) debian, rsync | |
7 ноября 2015 | |
Debian: Полное удаление ПО | |
Для полного удаления ВСЕГО чо связано с ПО и его конфигурациями можно воспользоваться следующим способом: | |
Пример MySQL | |
apt-get remove --purge mysql\* | |
apt-get clean | |
updatedb | |
MySQL хранит дефолтную БД по адресу /var/lib/mysql, соответственно | |
rm -r /var/lib/mysql | |
Так же всегда помогает | |
find / -name *bareos* например. | |
Метки (редактировать) debian | |
6 сентября 2015 | |
Прокси за 5 минут. | |
apt-get update ; apt-get install squid | |
#Конфигурационный файл представляет из себя мини-энциклопедию по Squid, работать с ним неудобно, хотя и чиать его надо, там много полезного, поэтому: | |
cp /etc/squid/squid.conf /etc/squid/squid.conf.backup | |
nano /etc/squid/squid.conf: | |
Настройки по-умолчанию выставлены разумными и требуется только лёгкая корректировка под условия базового запуска, в моём случае мне удобно считаь базовым - базовую аутентификацию всех пользователей со всех сетей: | |
Для этого нужны всего три шага: | |
1) Раскомментируем и дополняем следующим образом директиву описывающую механизм аутентификации: | |
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwordfile | |
2) Раскомментируем ACL для дальнейшего использования в теле файла: | |
acl password proxy_auth REQUIRED | |
3) Перед финальной дирекивой запрета доступа всем - http_access deny all, указываем что пропускаем любого, у кого есть пароль :) | |
http_access allow password | |
Далее содаём файл пользователей/паролей с помощью утилиты из комплекта Apache2: | |
apt-get install apache2-utils | |
htpasswd -c -d /etc/squid/passwordfile user | |
Опция -d отвечает за использование в создании файла хэш-функци crypt которая абсолютно необходима воркеру ncsa_auth, он другой не поймёт и аутентификация всегда будет завершаться ошибкой. | |
Опция -с отвечает за автоматическое создание файла, если его нет по пути. | |
/etc/init.d/squid restart | |
Метки (редактировать) squid | |
6 сентября 2015 | |
Почта за 5 минут | |
apt-get update ; apt-get instal postfix | |
cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf | |
nano /etc/postfix/main.cf: | |
#Большую часть нужно просто раскомментировать | |
mail_owner = postfix | |
myhostname = mail.xcvx.tk | |
mydomain = xcvx.tk | |
myorigin = $mydomain | |
inet_interfaces = all | |
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain | |
#Настройка ящиков по UNIX-аккаунтам системы | |
local_recipient_maps = unix:passwd.byname $alias_maps | |
mynetworks = 127.0.0.0/8, если есь LAN её надо указать, через запятую, если нет - игнорируем. | |
alias_maps = hash:/etc/aliases | |
alias_database = hash:/etc/aliases | |
home_mailbox = Maildir/ | |
sendmail_path = /usr/sbin/postfix | |
newaliases_path = /usr/bin/newaliases | |
mailq_path = /usr/bin/mailq | |
setgid_group = postdrop | |
#Комментируем всё это, т.к. это украшительства. | |
#html_directory = | |
#manpage_directory = | |
#sample_directory = | |
#readme_directory = | |
newaliases | |
/etc/init.d/postfix start | |
Базовая настройка и доведение сервера до функционаьного состояния закончены. | |
Почтовые ящики UNIX-пользователей внутри их домашних каталогов, в папке Maildir. | |
Впереди работы по защите от спама, который обязательно хлынет. | |
Метки (редактировать) postfix | |
6 сентября 2015 | |
FTP за 1 минуту. | |
1) apt-get update ; apt-get install vsftpd | |
2) nano /etc/vsftpd.conf: | |
write_enable=YES # Разрешение команд записи | |
3) /etc/init.d/vsftpd restart | |
Комментарий: | |
Даная конфигурация обеспечивает локальным пользователям доступ ко всему содержимому сервера согласно их правам на уровне файловой системы. | |
Если пользователя нет, то напомню, что его можно быстро создать командой: | |
adduser username | |
Метки (редактировать) debian, ftp, vsftpd | |
22 августа 2015 | |
Windows 7 + samba: Быстрый обмен файлами. | |
Быстрый шаринг происходит так: | |
Устанавливаем пакет samba. В моём случае это уже samba 3. В дефолтном конфиге сверяемрабочую группу, она должны быть такой же как у вин-машинки и добавляем конфиг шары в конец файла: | |
[public] | |
browsable = yes | |
path = /data/pub указываем свой путь, не зажатый сильно пермишшенами. | |
public = yes | |
writable = yes | |
guest ok = yes | |
Подключаемся из виндузов. Шара точно работает. | |
Метки (редактировать) samba, windows | |
8 августа 2015 | |
Работа с соединениями в Linux | |
Для просмотра соединений подходит netstat. У неё много параметров я упомяну самы еполезные: | |
-a Просмотр в том числе и открытых сокетов (LISTENING) | |
-4 Просмотр информации по IPv4 (без unix-сокетов) | |
-t Просмотр информации по TCP-соединениям | |
-u Просмотр информации по UDP-датаграммам | |
Для сброса соединений хорошо подходит несколько средств: | |
Единичное воздействие - conntrack -D -s адрес (возможна большая детализация, для справки набрать conntrack) | |
Перманентное воздействие ip r a blackhole адрес. (быстро написать, легко запомнить, делает маршрут до хоста несуществующим соответственно ни удалённый хост ни локальный не смогут отправить друг другу пакетов) | |
Перманентное воздействие iptables -A INPUT -s адрес -j DROP (Более чстная и точная подстройка с указанием всего что только возможно, надо знать iptables для реализации всего потенциала, наиболее адекватный вариант) | |
Данные перманентные решения в случае если результатом их работы стала катастрофа(потеря доступа к серверу :) ) - лечатся перезагрузкой. Но ноужно иметь доступ к перезагрузке :) Большинство нормальных VPS эту возможность дают. Т.е. резетнуть сервер легко. | |
Метки (редактировать) ip, linux | |
8 августа 2015 | |
Linux: conntrack Манипуляции с соединениями | |
В Debian есть пакет conntrack который содержит юзерспэйсовую улититу conntrack для операций с подсистемой отслеживания состояний соединений Linux. | |
С помощью неё можно делать очень многое, например разрывать конкретное TCP-соединение. | |
Для работы утилиты требуется установить пкет conntrack. | |
Проверить были ли указаны ли необходимые опиции ядра при его компиляции: | |
Вывод спика параметров: | |
cat /boot/config-`uname -r` | |
На данный момент необходимыми являются: | |
СONFIG_NF_CONNTRACK=m | |
CONFIG_NF_CONNTRACK_IPV4=m | |
CONFIG_NF_CONNTRACK_IPV6=m (if your setup supports IPv6) | |
CONFIG_NETFILTER_NETLINK=m | |
ONFIG_NF_CT_NETLINK=m | |
CONFIG_NF_CONNTRACK_EVENTS=y | |
Проверить загружены ли нужные модули ядра: | |
nf_conntrack | |
nf_conntrack_ipv4 | |
nf_conntrack_netlink | |
Вывести список загруженных модулей: | |
lsmod | |
Если какой-то модуль отсутствует(у меня небыл загружен nf_conntrack_ipv4) его можно загрузить: | |
modprobe nf_conntrack_ipv4 | |
Если программу планируется использовать постоянно, нужно внести модуль в список автоматической загрузки: | |
nano /etc/modules | |
# /etc/modules: kernel modules to load at boot time. | |
# | |
# This file contains the names of kernel modules that should be loaded | |
# at boot time, one per line. Lines beginning with "#" are ignored. | |
nf_conntrack_ipv4 | |
Метки (редактировать) ip, linux | |
7 августа 2015 | |
debian: systemd, ошибка при закгрузке без съёмного диска | |
Такая ошибка может возникать если прописать автомонтирование в fstab с дефолтными настройками. | |
Лечится указанием опций nofail и nobootwait | |
21 июля 2015 | |
Разделение файлов на части | |
Чтобы разделить файл удобно воспользоваться программой split | |
split -b размер_кусков -a разрядность_имён имя_разделяемого_файла | |
Это удобно для создания большого количества файлов в тестовых целях, а так же для отправки файлов по частям через Интернет/Почту. | |
Собрать файл обратно можно командой | |
cat x* > _желаемое_имя_конечного_файла | |
Метки (редактировать) linux | |
15 июля 2015 | |
debian как задать время на сервере | |
date -s "2 OCT 2006 18:00:00" | |
Метки (редактировать) date, debian | |
14 июля 2015 | |
Hyper-V Debian 8 и framebuffer | |
Дефолтные настро фрэймбуфера могут оказаться настолько неоптимальными что вы просто не будете видеть часть консоли и придётся скроллить её. | |
Так не пойдёт. | |
изменить ситуацию может опция для ядра, передаваемая ему загрузчиком, к делу: | |
nano /etc/default/grub | |
GRUB_CMDLINE_LINUX_DEFAULT="quiet hyperv_fb:1024x768" | |
update-grub | |
reboot | |
Метки (редактировать) framebuffer, hyper-v, linux | |
18 июня 2015 | |
Sparse file (Разреженный файл) | |
# dd if=/dev/zero of=/home/apollo.img bs=1 count=0 seek=10G | |
# yes | mkfs.ext3 /home/apollo.img | |
This will create a sparse, zero filled file, meaning it will be 0bytes on disk and allocate space, up to 10G, as data is stored to it. | |
Метки (редактировать) dd file | |
17 июня 2015 | |
Aptitude установка без рекомендованных пакетов | |
Создаём или прафим файл: /etc/apt/apt.conf | |
// Recommends are as of now still abused in many packages | |
APT::Install-Recommends "0"; | |
APT::Install-Suggests "0"; | |
Метки (редактировать) aptitude | |
17 июня 2015 | |
EXT4 интересные опции | |
data=journal - указывает сначала записывать метаданные и только затем сами данные. Упрощает восстановление по журналу после прерывания операций. Повышает надежность работы ФС. | |
error=continue - указывает что файловая система должна игнорировать ошибки. опасно тем, что повышает риски ухудшения ситуации и потери данных. Должен испорльзоваться только при обеспечении способности оперативно реагировать на ошибки. В конечном счёте повышает стабильность работы системы даже при возникновении исправимых аппаратных ошибк - например временное отключение AoE-нода из LVM на котором базируется EXT4. | |
https://www.kernel.org/doc/Documentation/filesystems/ext4.txt | |
информация о состоянии файловой системы tune2fs -l /dev/имя_устройства-носителя_файловой_системы | |
Метки (редактировать) ext4 | |
15 июня 2015 | |
AoE (VBLADE) Низкая скорость передачи | |
Если таргет vblade запускать без ключа -b 16384 (указание максимального размера буфера для сборки данных из фрэймов), то производительность будет в 4, а-то и более раз меньше, чем возможная. | |
Без этого параметра AoE на Virtualbox c локальной скоростью записи ~50МБ/с показывал передачу в 7МБ/с. | |
С ней 48.7 МБ/с. | |
А так же серия очень важных, ключевых советов по повышению производительности и скорости работы AoE: | |
There are a few things you can do to help: | |
1. Make sure you are using a good switch. Cisco, HP, I hear Juniper is good | |
too. Anything else is likely to be crap. Netgear, Linksys, Dell are all right | |
out. | |
1. Make sure you use hardware flow control on the switch. | |
2. Double check that you really have mtu 9000 on both ends. | |
3. I always run vblade with the -b 16384 option as without it performance was | |
significantly less. | |
4. Adding these to /etc/sysctl.conf helps a bit too: | |
# Optimizations to increase speed for AoE | |
net.core.rmem_default = 278528 | |
net.core.rmem_max = 278528 | |
net.core.wmem_default = 278528 | |
net.core.wmem_max = 278528 | |
net.core.netdev_max_backlog=10000 | |
P.S. | |
The only time you should not use flow | |
control is if you are using one of either VLAN tagging or bonding, I forget | |
which and why. | |
upd | |
Протестировано что отключение MTU=9000 даёт четырёхкратное снижение производительности при прочих равных. | |
Метки (редактировать) aoe, san | |
19 апреля 2015 | |
NTP-клиент: Автоматическая синхронизация при загрузке | |
Резактируется /etc/ntp.conf | |
server 192.168.0.254 | |
server 192.168.0.250 | |
Метки (редактировать) ntp | |
19 апреля 2015 | |
KERBEROS: Простейшая конфигурация | |
Устанавливается пакет krb5-user - aptitude install krb5-user | |
Редактируется /etc/krb5.conf: | |
[libdefaults] | |
default_realm = DOMAINNAME.LOCAL | |
[realms] | |
DOMAINNAME.LOCAL = { | |
kdc = primarydc.domainname.local | |
kdc = secondarydc.domainname.local | |
} | |
ОБЯЗАТЕЛЬНО нужно проконтролировать, что большие буквы в разделе [libdefaults] ссылаются на такие же большие буквы в [realms] | |
kdc = secondarydc.domainname.local - опционально для владельцев вторичных контроллеов домена. | |
Метки (редактировать) kerberos | |
17 апреля 2015 | |
SAMBA: Простейшая конфигурация | |
[global] | |
realm = DOMAINNAME.LOCAL | |
workgroup = DOMAINNAME | |
security = ads | |
dns proxy = no (самба не пытается использовать DNS если не получилось разрешить NetBIOS-имя) | |
domain master = no (самба не становится PDC) | |
local master = no (самба не становится мастер-браузером) | |
os level = 0 (самба не выигрывает выборы) | |
idmap config * : range = 10000 - 20000 | |
idmap config * : backend = tdb | |
winbind enum groups = yes | |
winbind enum users = yes | |
template shell = /bin/bash | |
winbind refresh tickets = yes | |
winbind use default domain = yes | |
нюансы: | |
1- По умолчанию любая шара ro. директива writeable/writable - забагованная, используется read only = no. | |
2- не имеет значения какие права выставлены на точку монтирования до самого монтирования. После произведения монтирования хозяином точки станет root с разрешениями 700. Соответственно будет невозможно работать внутри у любого пользователя не будет ни на что прав. нужно менять права на точку монтирования после произведения монтирования. | |
3 - Группа с правами менять разрешения admin users = "@имя группы хоть на русском и хоть с пробелами" | |
4 - такие параметы как admin users и readonly полностью перекрывают любые права на каталоги. Вообще параметры декларируемые в настройках шары как правило приорететнее разрешений файловой системы. | |
Для того чтобы самба эфективно форсила группу родительской папки новым папкам и файлам к группе родительской папки стоит добавить set gid бит. chmod g+s /mnt/folder | |
Метки (редактировать) samba | |
18 апреля 2015 | |
DEBIAN: Установка поддержки русского языка в консоли | |
1 - Установка русской локали: | |
dpkg-reconfigure locale | |
Выбирается ru_RU.UTF-8 | |
Для применения изменений достаточно перелогиниться. Но делать этого не стоит. Оформление системы сменится на русское с невозможностью на данном этапе отображать русские символы. | |
2 - Установка пакета руссификации консоли. То, что делает возможным отображение русских символов в консоли: | |
aptitude install console-cyrillic | |
Для повторонй настройки: | |
dpkg-reconfigure console-cyrillyc | |
Важен выбор шрифта. Если шрифт не поддерживает русские символы, то результат от установки пакета будет нулевым. Ничего не изменится. Шрифт, гарантированно поддерживающий русские символы - Unicyr. | |
Для применения изменений /etc/init.d/console-cyrillic start | |
Настройки хранятся в файле /etc/console-cyrillic | |
Метки (редактировать) localization | |
| |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment