Альт линукс общая папка

#Автоматизация #Технологии #Процессы #ИТ #Записки #Журнал #Блог #Форум

Подключение сетевого диска (расшареной папки) на Alt Linux

Артём Мамзиков Admin Сообщения: 761 Стаж: 4 года 4 месяца Откуда: Вологодская область Поблагодарили: 29 раз Контактная информация:

Подключение сетевого диска (расшареной папки) на Alt Linux

Сообщение Артём Мамзиков » Пн апр 19, 2021 22:05 #1

Подключение сетевого диска (расшареной папки) на Alt Linux
монтирование сетевого диска.

Подключение данным скриптом проверено на Alt Linux 8

05.06.2021 На некоторых ПК
выходила ошибка
mount error(121): Remote I/O error
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

Пришлось добавить в команды vers=2.1
PASSWD=»$p» mount «//$fs» «$mountdir» -o username=»$l»,vers=2.1,iocharset=utf8,file_mode=0666,dir_mode=0777
echo -e «//$fs $mountdir cifs vers=2.1,iocharset=utf8,file_mode=0666,dir_mode=0777,suid,credentials=$pwdfile 0 0\n» >> /etc/fstab

Что делает скрипт:
0. От монтирование старой папки (была под гостем) иначе будет ошибка
1. Определяет текущую сеть и поставляет ip файлового сервера с рашареной папкой. Пример 192.168.121.7/docs
2. Так как сrрипт запускается удалено под ssh root, нужно указать вывод графического интерфейса пользователю (это как vnc настройки)
3. Далее получаем переменные от пользователя (Логин Пароль для подключения сетевой папки с файлового через доменную учетку)
4. Проверяем что путь правильно сформировался
5. Создаем папку для монтирования /mnt/docs
6. Проверяем что директория создалась
7. Проверка что ведены логин пароль, а не пустые строки
8. Пробуем тестовое монтирование, что логин пароль и путь указанные верно
9. Бейкапим конфиг, удаляем старый логин пароль строку для гостя.
10. Шифруем пароль сохраняем в отдельный файл в шифрованном виде
11. Прописываем новую строку авторизации в файл /etc/fstab
12. Выводим результат об удачном монтировании, если где то ошибка начинаем сначала.

#!/bin/sh # Отмонтировать старую папку umount /mnt/docs # IP Хоста ip=`hostname -i` #Разбираем IP адрес по точкам, берем первые 3 блока и подставляем .7 SAVEIFS=$IFS IFS='.' read -a iparr .$.$.7 # Получаем IP путь след вида переменная fs="xxx.xxx.xxx.7/docs" fs="$fs/docs" # Выбираем экран для вывода графического запроса пользователю export DISPLAY=:0.0; export XAUTHORITY='/var/run/lightdm/root/:0'; while true; do # Запрашиваем Данные у пользователя и заносим их в переменные fsq=$(zenity --entry --title="Монтирование ФС" --text="Адрес подключения:" --entry-text="$fs") l=$(zenity --entry --title="Монтирование ФС" --text="Введите имя пользователя (логин почты Zimbra):") p=$(zenity --entry --title="Монтирование ФС" --text="Введите пароль (пароль почты Zimbra):" --hide-text) # Разбираем путь по слешу / подставляем второе значение docs SAVEIFS=$IFS IFS='/' read -a fsp # Проверяем что в строке не 0 символов, если 0 то ошибка , нет продолжаем if [ -z "$mountdir" ]; then zenity --error --title="Монтирование ФС" --text="1-Не удалось! Попробуйте снова." continue fi # Создаем каталог mkdir "/mnt/docs" mountdir="/mnt/$mountdir" mkdir "$mountdir" > /dev/null 2>&1 # Проверка существования дириктории if ! [ -d "$mountdir" ]; then zenity --error --title="Монтирование ФС" --text="2-Не удалось! Попробуйте снова." continue fi # Проверяем что в строках не 0 символов т.е. есть логин пароль if [[ -n "$l" && -n "$p" ]]; then # Путь на подключение fs="xxx.xxx.xxx.7/docs" fs="$fsq" # Пробуем монтируем папку, проверяем #mount "//$fs" "$mountdir" -o username="$l",password="$p",iocharset=utf8,file_mode=0666,dir_mode=0777 PASSWD="$p" mount "//$fs" "$mountdir" -o username="$l",vers=2.1,iocharset=utf8,file_mode=0666,dir_mode=0777 #PASSWD="$p" mount "//$fs" "$mountdir" -o dom="csvvo",username="$l",iocharset=utf8,file_mode=0666,dir_mode=0777 # Пример что должно выйти #mkdir "/mnt/docs" #mount "//xxx.xxx.xxx.7/docs" "/mnt/docs" -o username="Логин",password="Пароль",iocharset=utf8,file_mode=0666,dir_mode=0777 # Входная переменная с проверки, результат res=$? # Если результат монтирования 0=0 то сохраняем настройки, удалив предыдущие if [[ $res -eq "0" ]]; then # Делаем бэйкап файла с текущей датой, перед изменениями cp /etc/fstab /etc/fstab.$(date +%d%m%Y%H%M%S) #Если переменная содержит /mnt/docs и = /mnt/docs if [ "$" == "/mnt/docs" ]; then # Удалить строку содержащую /mnt/docs sed -i '/\/mnt\/docs/d' /etc/fstab fi #Передаем логин пароль в криптографические стойки генератора псевдослучайных чисел pwdfile=/root/.`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1`.pwd # Создаем шифрованный файл с логином паролем построчно в папке root и даем права echo -e "username=$l\npassword=$p" > $pwdfile && chmod 600 $pwdfile # удаляем символы перевода строки sed -i '/^$/d' /etc/fstab # Добавляем строку монтирования в файл fstab echo -e "//$fs $mountdir cifs vers=2.1,iocharset=utf8,file_mode=0666,dir_mode=0777,suid,credentials=$pwdfile 0 0\n" >> /etc/fstab zenity --info --title="Монтирование ФС" --text="Всё ГУД!" break else zenity --error --title="Монтирование ФС" --text="3-Не удалось! Попробуйте снова." fi fi done 

Резервный случай если отвалилась связь и сервер не загрузил с ldap учетные записи , никто зайти в общий ресурс не сможет
Так как есть Учетки Администраторов домена и они же Локальные временно до перезапуска хостов выполним вход от этой учетки.
Стоит учесть что данным способом для всех хостов пользователей применяются одинаковые права доступа!

Читайте также:  Смена ядра linux mint

#!/bin/bash
# Автор Мамзиков Артём Андреевич 2021.06.10
echo «Seti-shareconnect.sh»

# Получим текущую подсеть
IP=`ip address|sed ‘s/inet//’|grep -E ‘192.168.*.5|172.16.*.5’|tr -d ‘ ‘ |awk -F’.’ » OFS=’.’`

# Список IP которые пропускаем
skip=»$IP.1$\|$IP.3$\|$IP.5$\|$IP.7$\|$IP.10$\|$IP.15$\|$IP.75$\|$IP.253$»

# Выберем доступные хосты где есть пинг
IPHOST=`nmap -sn «$».0/24|grep -E «Nmap scan report for «|sed ‘s/Nmap scan report for //’|sed ‘s/[()]//g’|grep -E -o «(253|215|[01]?95?)\.(253|248|[01]?84?)\.(252|244|[01]?79?)\.(253|233|[01]?82?)»|sed -e «s/$skip//g»|sed -e ‘/^$/d’`

# Переменные логина пароля для подключения к хосту
USER=root
PASS=Пароль

# Логин пароль для подключения к общей папке
DOCSLOGIN=MamzikovAA
DOCSPASS=Пароль

# Переменные IP для перебора подсетей
for IPH in $IPHOST
do

/usr/bin/expect # spawn — вызов программы
# expect — ожидание вывода запущенной программой строки (дословно: ожидаем, что скажет выполняемая программа);
# send — передача данных или команд в вызванную программу (выполняется так, как будто вы сами набираете команды в консоли)
# close — завершение сценария

# Время ожидания
set timeout 7
# Подключаемся по ssh
spawn ssh -p 22 $USER@$IPH
# Если выходит запрос потверждаем yes
expect «(yes/no)?*» send «yes\r»
>
>
# Ждем строку запроса пароля password:
expect «word:»
# Водим пароль
send «$PASS\r»
# Ждем строку для ввода команд от root #
expect «#*»
# Создадим дирикторию
send «mkdir ‘/mnt/$mountdir’ > /dev/null 2>&1\r»
# Ждем строку для ввода команд от root #
expect «#*»
# До перезапуска подключим общую папку
send «mount ‘//$IP.7/docs’ ‘/mnt/docs’ -o username=’$DOCSLOGIN’,password=’$DOCSPASS’,iocharset=utf8,file_mode=0666,dir_mode=0777\r»
# Время ожидания установки
set timeout 5
# Проверяем что перешли в папку root
expect «~]#*»
set timeout 3
expect eof
# Выполняем выход из сеанса
send «exit\r»
EOF

Как переподключить, без перезагрузки если во время работы смонтированный диск отвалился.
# a, —all — примонтировать все устройства, описанные в fstab; (Обратите внимание, что если вы добавите файл подкачки в свой fstab, mount -aон не будет включен : вы захотите запустить swapon -a.)
mount -a

Читайте также:  Изменить название группы linux

Можно прописать в крон или вывести ярлык

#!/bin/bash # reconnecting-mout # создадим файл для проверки #echo "Proverka mount" > /mnt/docs/access # Проверка доступности общей папки #if [[ `ls -aF /mnt/docs |grep -av "/" | grep "access"` != "access" ]] # Проверка через память диска if [[ `timeout 5 df -h|grep "/mnt/docs"` = "" ]] then # a, --all - примонтировать все устройства, описанные в fstab; mount -a fi 
#!/bin/bash # reconnecting-mout # Выберем строку для переподключения сетевого диска. dan=$(cat /etc/fstab|grep "/mnt/docs"|grep -o '.*pwd') #auth=$(echo "$"|sed 's|.*credentials=||'|xargs -I <> bash -c 'cat <>'|sed ':a;N;$!ba;s/\n/,/g') #echo "$" us=$(echo "$"|sed 's|.*credentials=||'|xargs -I <> bash -c 'cat <>'|sed 's|username=||'|sed 's/pas.*//g'|tr -d ' ') pwd=$(echo "$"|sed 's|.*credentials=||'|xargs -I <> bash -c 'cat <>'|tr -d '\n'|sed 's|.*password=||'|tr -d ' ') #echo $us $pwd put=$(echo "$"|sed 's|cifs.*||') # Отмонтировать старую папку #umount /mnt/docs #mkdir "/mnt/docs" # Повторное подключение #mount $put-o "$",iocharset=utf8,file_mode=0666,dir_mode=0777 PASSWD="$" mount $put cifs -o username="$",vers=2.1,iocharset=utf8,file_mode=0666,dir_mode=0777 #echo PASSWD="$" mount $put-o username="$",vers=2.1,iocharset=utf8,file_mode=0666,dir_mode=0777 # Пример: #mount "//xxx.xxx.xxx.7/docs" "/mnt/docs" -o username="Логин",password="Пароль",iocharset=utf8,file_mode=0666,dir_mode=0777 #PASSWD=Пароль mount //xxx.xxx.xxx.xxx/docs /mnt/docs -o username=Логин,vers=2.1,iocharset=utf8,file_mode=0666,dir_mode=0777 

Источник

Альт линукс общая папка

Samba — пакет программ, которые позволяют обращаться к сетевым дискам и принтерам на различных операционных системах по протоколу SMB/CIFS. Имеет клиентскую и серверную части.

⁠61.1.1. Настройка Samba

После редактирования файла smb.conf , запускайте команду testparm для проверки файла на синтаксические ошибки.

⁠61.1.1.1. Добавление пользователя

# useradd -m user_samba # passwd user_samba 
# smbpasswd -a user_samba New SMB password: Retype new SMB password: Added user user_samba.

⁠61.1.1.2. Создание ресурсов общего доступа

# chown -R user_samba:users /mnt/sharefolder # chmod -R ugo+rwx /mnt/sharefolder 
[public] #путь к общей папке path=/mnt/sharefolder read only=No #открыть гостевой доступ guest ok=Yes comment = Public
# systemctl restart smb # systemctl restart nmb 

⁠61.1.1.3. Создание ресурсов общего доступа от имени обычного пользователя

Usershare — это возможность, позволяющая обычным пользователям добавлять, изменять и удалять собственные ресурсы общего доступа.

Читайте также:  Ssh agent linux mint

В конфигурационном файле smb.conf должны быть заданы следующие переменные (данная возможность настроена по умолчанию):

[global] # ----------------------- User Shares Options ------------------------- usershare path = /var/lib/samba/usershares usershare max shares = 100 usershare allow guests = yes usershare owner only = yes
# systemctl restart smb # systemctl restart nmb 

Далее следует завершить сеанс и войти в него вновь. Теперь у вас должна появиться возможность настраивать общий доступ samba, используя графический интерфейс.

Для того чтобы предоставить общий доступ на папку в контекстном меню папки выбрать пункт Опции публикации , настроить параметры публикации и нажать кнопку Создать публикацию :

Создать публикацию

⁠61.1.2. Настройка клиента

⁠61.1.2.1. Подключение по протоколу SMB в графической среде

Для создания подключения по протоколу SMB в графической среде MATE можно, запустить файловый менеджер, указать в адресной строке протокол и адрес сервера:

Создать подключение по протоколу SMB

Создать подключение по протоколу SMB

Для доступа к папке, необходимо указать имя пользователя, пароль и нажать кнопку Подключиться :

Создать подключение по протоколу SMB

⁠61.1.2.2. Монтирование ресурса Samba через /etc/fstab

$ smbclient -L 192.168.88.218 -U% 
$ smbclient -L 192.168.88.218 -Uuser_samba Unable to initialize messaging context Enter WORKGROUP\user_samba's password: Sharename Type Comment --------- ---- ------- public Disk Public IPC$ IPC IPC Service (Samba Server Version 4.10.3) user_samba Disk Home Directories Cups-PDF Printer Cups-PDF open_folder Disk Reconnecting with SMB1 for workgroup listing. Server Comment --------- ------- Workgroup Master --------- ------- WORKGROUP HOST-15
username=имя_пользователя password=пароль

Для защиты информации, права на файл /etc/samba/sambacreds , надо установить так, чтобы файл был доступен на чтение и запись только пользователю-владелецу файла:

# chmod 600 /etc/samba/sambacreds 
# chown root: /etc/samba/sambacreds 
//СЕРВЕР/ИМЯ_РЕСУРСА /mnt/точка_монтирования cifs credentials=/путь/к/полномочиям/sambacreds 0 0
//192.168.88.218/public /mnt/server_public cifs users,_netdev,x-systemd.automount,credentials=/etc/samba/sambacreds 0 0

Источник

Оцените статью
Adblock
detector