Копирование файлов через скрипт в домашнюю папку условного пользователя (Скрипт запускается через root, и все копирует в свою папку root, а надо в обычного пользователя)
Модераторы: /dev/random, Модераторы разделов
Копирование файлов через скрипт в домашнюю папку условного пользователя
Не выходя из рута, нужно скопировать файл в домашнюю папку обычного условного пользователя (имя может быть разным).
Запускаю команду копирования
cp 123.txt ~/Desktop
Естественно он его копирует в Desktop рута, пробовал $HOME, $USERNAME - все копируют в рут, ну т.к. в оболочке рута нахожусь.
Кто подскажет способ не выходя из рута в скрипте, зайти в оболочку простого пользователя, скопировать все что нужно и продолжить обратно в руте.
Что-то наподобие делал лет 5 назад, костыль самописный, не найти не вспомнить не могу.
Запускаю команду копирования
cp 123.txt ~/Desktop
Естественно он его копирует в Desktop рута, пробовал $HOME, $USERNAME - все копируют в рут, ну т.к. в оболочке рута нахожусь.
Кто подскажет способ не выходя из рута в скрипте, зайти в оболочку простого пользователя, скопировать все что нужно и продолжить обратно в руте.
Что-то наподобие делал лет 5 назад, костыль самописный, не найти не вспомнить не могу.
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Напоминает сказочную задачу "скопируй туда не знаю куда"
То есть скопировать файл в домашний каталог пользователя, имя которого не известно.
А если имя известно, то что мешает его явно указать в команде cp ?
Например:
cp -p file /home/user/Desktop ?
Где file -- имя файла, который надо скопировать, а user имя пользователя, в домашний каталог которого надо скопировать файл.
Хотя правильнее было бы вместо /home/user использовать название каталога, взятое из соответствующей строки файла /etc/passwd
То есть скопировать файл в домашний каталог пользователя, имя которого не известно.
А если имя известно, то что мешает его явно указать в команде cp ?
Например:
cp -p file /home/user/Desktop ?
Где file -- имя файла, который надо скопировать, а user имя пользователя, в домашний каталог которого надо скопировать файл.
Хотя правильнее было бы вместо /home/user использовать название каталога, взятое из соответствующей строки файла /etc/passwd
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
В дополнение: ~user подставляет домашний каталог пользователя user.
root
# cp file ~user/Desktop
Спасибо сказали:
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Имя обычного пользователя может быть любым, как назовет сам пользователь, я раньше какое то абсолютное название писал в скрипте, чтобы копировать именно в домашнюю папку пользователя, независимо от того какое там у него имя. И делалось все это от рута.MiK13 писал: ↑21.08.2021 03:25Напоминает сказочную задачу "скопируй туда не знаю куда"
То есть скопировать файл в домашний каталог пользователя, имя которого не известно.
А если имя известно, то что мешает его явно указать в команде cp ?
Например:
cp -p file /home/user/Desktop ?
Где file -- имя файла, который надо скопировать, а user имя пользователя, в домашний каталог которого надо скопировать файл.
Хотя правильнее было бы вместо /home/user использовать название каталога, взятое из соответствующей строки файла /etc/passwd
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
То есть Вы не знаете имя пользователя, но хотите что-то скопировать ему в домашний каталог? Действительно
Опишите всё-таки, какова конечная цель.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Задача: ставятся программы, в офисе, или у человека, нужно чтобы мои справки, доки к нему ставились в папку домашнего пользователя.
Чтобы пришел, запустил скрипт он все поставил: программу как положено и доки копирнул на рабочий стол домашнего пользователя.
Т.к. скрипт запускается от рута, он копирует все в рутовскую папку.
Повторюсь, люди могут назвать своего пользователя как угодно, скрипт нужен для того чтобы он автоматом определил его имя и скопировал доки
Чтобы пришел, запустил скрипт он все поставил: программу как положено и доки копирнул на рабочий стол домашнего пользователя.
Т.к. скрипт запускается от рута, он копирует все в рутовскую папку.
Повторюсь, люди могут назвать своего пользователя как угодно, скрипт нужен для того чтобы он автоматом определил его имя и скопировал доки
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Не дожидаться, когда пользователь сделает помойку на рабочем столе, а делать её сразу? Рабочий стол не для того предназначен. Если программа ставится от рута, то и доки должны быть в неподконтрольном юзеру месте (/usr/local/share/… или /opt/…, смотря куда остальные файлы ставятся). А чтобы пользователь мог их легко найти, можно desktop-файл установить, и они появятся в меню.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Да понятно это все, вы меня неправильно поняли, доки домашнего пользователя, на рабочем столе чтобы он их редактировал, и когда надо копировал на флэшку там или куда угодно, без лишних заморочек. И не обязательно рабочий стол, можно и в папку документы. Проблема в том, что скрипт из под рута не копирует в папку домашнего пользователя. Я с этим еще лет 5 назад столкнулся, но как то решил, сейчас не могу вспомнить, т.к. там был костыль на костыле я его забыл, как страшный сон, хотя не надо было ))).
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Тогда я вообще ничего не понимаю. Если скрипт занимается установкой софта, какое отношение к нему имеют эти документы?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Есть папка: в ней пакеты программ, документы, с которым в будущем пользователь должен работать в этих программах, и скрипт который должен установить программы, и закинуть документы в домашнюю папку пользователя. С последним у меня проблема. Т.к. скрипт отрабатывает от рута для установки программ и соответственно копирует доки в папки рута.
Упрощу вопрос: есть ли возможность, через скрипт запущенный из под рута, автоматически копировать в домашнюю папку пользователя файлы (скрипт автоматом определяет папку).
Упрощу вопрос: есть ли возможность, через скрипт запущенный из под рута, автоматически копировать в домашнюю папку пользователя файлы (скрипт автоматом определяет папку).
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
По какому формальному признаку из пользователей системы должен быть выбран нужный? Из всего, что Вы написали, это непонятно. Если Вы для себя ответите на этот вопрос, вероятно, далее помощь Вам уже не понадобится.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
foma123 А вы понимаете что система многопользовательская, и не существует универсального метода догадаться в папку какого пользователя вы хотите отправить информацию. Кроме как прописать нужный путь в самом скрипте, например с помощью определенной в начале переменной dst_path.
Но мне кажется вы что-то неправильно делаете. Или надо отправлять инфу в логи, где доступ на чтение есть у обычного пользователя или
полностью запускать программу от обычного пользователя, но повышать привилегии именно там где без этого не обойтись. Добавить например в группу root(не кидайте в меня камнями, это я к примеру. Есть много способов перестать работать под рутом). Есть инструмент setfacl, есть возможности в программе sudo запускать рутовые программы от обычного пользователя.
Исправила: перепутала группы sudo и root
Но мне кажется вы что-то неправильно делаете. Или надо отправлять инфу в логи, где доступ на чтение есть у обычного пользователя или
полностью запускать программу от обычного пользователя, но повышать привилегии именно там где без этого не обойтись. Добавить например в группу root(не кидайте в меня камнями, это я к примеру. Есть много способов перестать работать под рутом). Есть инструмент setfacl, есть возможности в программе sudo запускать рутовые программы от обычного пользователя.
Исправила: перепутала группы sudo и root
Последний раз редактировалось olecya 21.08.2021 18:51, всего редактировалось 1 раз.
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Естественно должен быть выбран тот пользователь, с которого запускали рута.
Я думаю может я через UID пользователя копировал до этого, веди стандарт 1000 обычно. Но как ума не приложу. И это не учитывая того, что ему не приписали какой нибудь другой.
Я думаю может я через UID пользователя копировал до этого, веди стандарт 1000 обычно. Но как ума не приложу. И это не учитывая того, что ему не приписали какой нибудь другой.
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Есть команда who которая вам скажет через какой логин зашли в систему
Добавлено (19:03):
Может это наведет на мысли:Код: Выделить всё
last -p now
users
lastlog -u 1000
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Что-то про who я не подумал, обычно whoami смотрел, с команды who, можно в принципе как-то вытянуть имя, вставить в путь, в общем надо подумать
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Брать имя пользователя который использует права рут с помощью утилиты users.
Код: Выделить всё
pegas@serv1 ~ $ users
pegas
pegas@serv1 ~ $ su -
Пароль:
serv1 ~ # users
pegas
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Ещё актуально для systemd и eligind:
Shell
$ loginctl user-status|awk 'NR==1{print $1}'
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Так с этого начинать надо было. Если запускаете через sudo, имя пользователя сохраняется в переменной окружения SUDO_USER. Хотя я согласен, что правильнее
А вот всякие who/users/loginctl и т. п. — совершенно ненужные костыли (кто сказал, что в системе обязательно залогинен ровно один пользователь?).
Последний раз редактировалось Bizdelnick 22.08.2021 10:00, всего редактировалось 1 раз.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
С последней подачи обнаружила в своей системе переменную окружения USERNAME.
Возможно и в вашей системе есть переменная окружения $USERNAME которая не будет привязана к sudo
Возможно и в вашей системе есть переменная окружения $USERNAME которая не будет привязана к sudo
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
Спасибо!
Набросок такой сделал:
abc="$(loginctl user-status|awk 'NR==1{print $1}')"
cp /1/2.txt /home/"${abc}"/Документы/
Все нормально прошло!
Считаю проблему решенной!
P.S. Олеся, на счет $username я выше писал, рутовский ставит
Re: Копирование файлов через скрипт в домашнюю папку условного пользователя
А чем не угодил вариант через утилиту users брать имя пользователя, там уже выхлоп дается чистый без мусора, только имя пользователя.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!