Копирование файлов через скрипт в домашнюю папку условного пользователя (Скрипт запускается через root, и все копирует в свою папку root, а надо в обычного пользователя)

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

foma123
Сообщения: 8

Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение foma123 »

Не выходя из рута, нужно скопировать файл в домашнюю папку обычного условного пользователя (имя может быть разным).
Запускаю команду копирования
cp 123.txt ~/Desktop
Естественно он его копирует в Desktop рута, пробовал $HOME, $USERNAME - все копируют в рут, ну т.к. в оболочке рута нахожусь.
Кто подскажет способ не выходя из рута в скрипте, зайти в оболочку простого пользователя, скопировать все что нужно и продолжить обратно в руте.
Что-то наподобие делал лет 5 назад, костыль самописный, не найти не вспомнить не могу.
Спасибо сказали:
MiK13
Сообщения: 1051
ОС: Linux Debian

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение MiK13 »

Напоминает сказочную задачу "скопируй туда не знаю куда" :)
То есть скопировать файл в домашний каталог пользователя, имя которого не известно.
А если имя известно, то что мешает его явно указать в команде cp ?
Например:
cp -p file /home/user/Desktop ?
Где file -- имя файла, который надо скопировать, а user имя пользователя, в домашний каталог которого надо скопировать файл.
Хотя правильнее было бы вместо /home/user использовать название каталога, взятое из соответствующей строки файла /etc/passwd
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4437
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение Rootlexx »

В дополнение: ~user подставляет домашний каталог пользователя user.

root

# cp file ~user/Desktop
Спасибо сказали:
foma123
Сообщения: 8

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение foma123 »

MiK13 писал:
21.08.2021 03:25
Напоминает сказочную задачу "скопируй туда не знаю куда" :)
То есть скопировать файл в домашний каталог пользователя, имя которого не известно.
А если имя известно, то что мешает его явно указать в команде cp ?
Например:
cp -p file /home/user/Desktop ?
Где file -- имя файла, который надо скопировать, а user имя пользователя, в домашний каталог которого надо скопировать файл.
Хотя правильнее было бы вместо /home/user использовать название каталога, взятое из соответствующей строки файла /etc/passwd
Имя обычного пользователя может быть любым, как назовет сам пользователь, я раньше какое то абсолютное название писал в скрипте, чтобы копировать именно в домашнюю папку пользователя, независимо от того какое там у него имя. И делалось все это от рута.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19369
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение Bizdelnick »

foma123 писал(а):
21.08.2021 12:10
я раньше какое то абсолютное название писал в скрипте, чтобы копировать именно в домашнюю папку пользователя, независимо от того какое там у него имя. И делалось все это от рута.
То есть Вы не знаете имя пользователя, но хотите что-то скопировать ему в домашний каталог? Действительно
MiK13 писал:
21.08.2021 03:25
Напоминает сказочную задачу "скопируй туда не знаю куда"
Опишите всё-таки, какова конечная цель.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
foma123
Сообщения: 8

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение foma123 »

Задача: ставятся программы, в офисе, или у человека, нужно чтобы мои справки, доки к нему ставились в папку домашнего пользователя.
Чтобы пришел, запустил скрипт он все поставил: программу как положено и доки копирнул на рабочий стол домашнего пользователя.
Т.к. скрипт запускается от рута, он копирует все в рутовскую папку.
Повторюсь, люди могут назвать своего пользователя как угодно, скрипт нужен для того чтобы он автоматом определил его имя и скопировал доки
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19369
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение Bizdelnick »

foma123 писал(а):
21.08.2021 13:24
Чтобы пришел, запустил скрипт он все поставил: программу как положено и доки копирнул на рабочий стол домашнего пользователя.
Не дожидаться, когда пользователь сделает помойку на рабочем столе, а делать её сразу? Рабочий стол не для того предназначен. Если программа ставится от рута, то и доки должны быть в неподконтрольном юзеру месте (/usr/local/share/… или /opt/…, смотря куда остальные файлы ставятся). А чтобы пользователь мог их легко найти, можно desktop-файл установить, и они появятся в меню.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
foma123
Сообщения: 8

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение foma123 »

Да понятно это все, вы меня неправильно поняли, доки домашнего пользователя, на рабочем столе чтобы он их редактировал, и когда надо копировал на флэшку там или куда угодно, без лишних заморочек. И не обязательно рабочий стол, можно и в папку документы. Проблема в том, что скрипт из под рута не копирует в папку домашнего пользователя. Я с этим еще лет 5 назад столкнулся, но как то решил, сейчас не могу вспомнить, т.к. там был костыль на костыле я его забыл, как страшный сон, хотя не надо было ))).
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19369
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение Bizdelnick »

foma123 писал(а):
21.08.2021 14:13
вы меня неправильно поняли, доки домашнего пользователя, на рабочем столе чтобы он их редактировал, и когда надо копировал на флэшку там или куда угодно, без лишних заморочек
Тогда я вообще ничего не понимаю. Если скрипт занимается установкой софта, какое отношение к нему имеют эти документы?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
foma123
Сообщения: 8

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение foma123 »

Есть папка: в ней пакеты программ, документы, с которым в будущем пользователь должен работать в этих программах, и скрипт который должен установить программы, и закинуть документы в домашнюю папку пользователя. С последним у меня проблема. Т.к. скрипт отрабатывает от рута для установки программ и соответственно копирует доки в папки рута.
Упрощу вопрос: есть ли возможность, через скрипт запущенный из под рута, автоматически копировать в домашнюю папку пользователя файлы (скрипт автоматом определяет папку).
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19369
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение Bizdelnick »

foma123 писал(а):
21.08.2021 17:55
есть ли возможность, через скрипт запущенный из под рута, автоматически копировать в домашнюю папку пользователя файлы (скрипт автоматом определяет папку)
По какому формальному признаку из пользователей системы должен быть выбран нужный? Из всего, что Вы написали, это непонятно. Если Вы для себя ответите на этот вопрос, вероятно, далее помощь Вам уже не понадобится.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 666
ОС: debian, fedora (i3-wm)

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение olecya »

foma123 А вы понимаете что система многопользовательская, и не существует универсального метода догадаться в папку какого пользователя вы хотите отправить информацию. Кроме как прописать нужный путь в самом скрипте, например с помощью определенной в начале переменной dst_path.
Но мне кажется вы что-то неправильно делаете. Или надо отправлять инфу в логи, где доступ на чтение есть у обычного пользователя или
полностью запускать программу от обычного пользователя, но повышать привилегии именно там где без этого не обойтись. Добавить например в группу root(не кидайте в меня камнями, это я к примеру. Есть много способов перестать работать под рутом). Есть инструмент setfacl, есть возможности в программе sudo запускать рутовые программы от обычного пользователя.

Исправила: перепутала группы sudo и root
Последний раз редактировалось olecya 21.08.2021 18:51, всего редактировалось 1 раз.
Спасибо сказали:
foma123
Сообщения: 8

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение foma123 »

Естественно должен быть выбран тот пользователь, с которого запускали рута.
Я думаю может я через UID пользователя копировал до этого, веди стандарт 1000 обычно. Но как ума не приложу. И это не учитывая того, что ему не приписали какой нибудь другой.
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 666
ОС: debian, fedora (i3-wm)

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение olecya »

Есть команда who которая вам скажет через какой логин зашли в систему
Добавлено (19:03):
Может это наведет на мысли:

Код: Выделить всё

last -p now
users
lastlog -u 1000
Спасибо сказали:
foma123
Сообщения: 8

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение foma123 »

Что-то про who я не подумал, обычно whoami смотрел, с команды who, можно в принципе как-то вытянуть имя, вставить в путь, в общем надо подумать
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 666
ОС: debian, fedora (i3-wm)

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение olecya »

foma123
тогда вам точно подойдет команда
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 1971
ОС: Gentoo

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение ormorph »

Shell

$ id -un
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 630
ОС: BSD/LINUX

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение bars »

Брать имя пользователя который использует права рут с помощью утилиты users.

Код: Выделить всё

pegas@serv1 ~ $ users
pegas
pegas@serv1 ~ $ su -
Пароль: 
serv1 ~ # users
pegas
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 1971
ОС: Gentoo

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение ormorph »

Ещё актуально для systemd и eligind:

Shell

$ loginctl user-status|awk 'NR==1{print $1}'
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 666
ОС: debian, fedora (i3-wm)

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение olecya »

ormorph
В точку:

Код: Выделить всё

loginctl --no-legend list-users
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 19369
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение Bizdelnick »

foma123 писал(а):
21.08.2021 18:50
Естественно должен быть выбран тот пользователь, с которого запускали рута.
Так с этого начинать надо было. Если запускаете через sudo, имя пользователя сохраняется в переменной окружения SUDO_USER. Хотя я согласен, что правильнее
olecya писала:
21.08.2021 18:42
полностью запускать программу от обычного пользователя, но повышать привилегии именно там где без этого не обойтись
А вот всякие who/users/loginctl и т. п. — совершенно ненужные костыли (кто сказал, что в системе обязательно залогинен ровно один пользователь?).
Последний раз редактировалось Bizdelnick 22.08.2021 10:00, всего редактировалось 1 раз.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
olecya
Сообщения: 666
ОС: debian, fedora (i3-wm)

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение olecya »

С последней подачи обнаружила в своей системе переменную окружения USERNAME.
Возможно и в вашей системе есть переменная окружения $USERNAME которая не будет привязана к sudo
Спасибо сказали:
foma123
Сообщения: 8

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение foma123 »

ormorph писал(а):
21.08.2021 20:06
Ещё актуально для systemd и eligind:

Shell

$ loginctl user-status|awk 'NR==1{print $1}'
Спасибо!
Набросок такой сделал:
abc="$(loginctl user-status|awk 'NR==1{print $1}')"
cp /1/2.txt /home/"${abc}"/Документы/
Все нормально прошло!
Считаю проблему решенной!
P.S. Олеся, на счет $username я выше писал, рутовский ставит
Спасибо сказали:
Аватара пользователя
bars
Сообщения: 630
ОС: BSD/LINUX

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение bars »

foma123 писал(а):
23.08.2021 00:07
Спасибо!
Набросок такой сделал:
abc="$(loginctl user-status|awk 'NR==1{print $1}')"
cp /1/2.txt /home/"${abc}"/Документы/
Все нормально прошло!
Считаю проблему решенной!
P.S. Олеся, на счет $username я выше писал, рутовский ставит
А чем не угодил вариант через утилиту users брать имя пользователя, там уже выхлоп дается чистый без мусора, только имя пользователя.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 1971
ОС: Gentoo

Re: Копирование файлов через скрипт в домашнюю папку условного пользователя

Сообщение ormorph »

bars писал:
23.08.2021 09:39
А чем не угодил вариант через утилиту users брать имя пользователя, там уже выхлоп дается чистый без мусора, только имя пользователя.
Не везде это работает. У меня она вообще ни чего не выводит(пустой выхлоп).
Спасибо сказали: