Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по FreeBSD (http://forum.oszone.net/forumdisplay.php?f=10)
-   -   Не могу удалить файлы (http://forum.oszone.net/showthread.php?t=328100)

dislike 05-07-2017 07:55 2749170

Не могу удалить файлы
 
Есть удаленный сервер на FreeBSD, физического доступа нет, могу подключаться по SSH или по FTP. Обычно подключаюсь по FTP с логином ftpuser с целью заливки/скачивания файлов. Сервер для меня б/у, т.е я не первый владелец, не я ставил, не я настраивал, черный ящик в общем.

Проблема: не могу удалять некоторые файлы/каталоги. Filezilla указывает напротив проблемных файлов права -rw-r--r--, владелец/группа "ftpuser wheel", скачать файл могу, удалить не могу, ошибка
Код:

Статус:        Удаление "/usr/local/www/apache22/data/doc/weather/11.14/141114.xls"
Команда:        CWD /usr/local/www/apache22/data/doc/weather/11.14
Ответ:        250 CWD command successful.
Команда:        DELE 141114.xls
Ответ:        550 141114.xls: No such file or directory.

Дальше надоело терпеть подобные вещи, решил разобраться. Подключился по SSH, вошел под логином admin, который мне предоставил владелец сервера (организация, владеющая физическим сервером).

Пробую команды:

Получил такой диалог:
Код:

rm -r /usr/local/www/apache22/data/doc/weather/11.14
override rwxr-xr-x  ftpuser/wheel for /usr/local/www/apache22/data/doc/weather/11.14? y
override rw-r--r--  ftpuser/wheel for /usr/local/www/apache22/data/doc/weather/11.14/ 141114.xls? y
rm: /usr/local/www/apache22/data/doc/weather/11.14/ 141114.xls: Permission denied
override rw-r--r--  ftpuser/wheel for /usr/local/www/apache22/data/doc/weather/11.14/ 151114.xls? y
rm: /usr/local/www/apache22/data/doc/weather/11.14/ 151114.xls: Permission denied
rm: /usr/local/www/apache22/data/doc/weather/11.14: Directory not empty

Код:

rm -rf /usr/local/www/apache22/data/doc/weather/11.14
rm: /usr/local/www/apache22/data/doc/weather/11.14/ 141114.xls: Permission denied
rm: /usr/local/www/apache22/data/doc/weather/11.14/ 151114.xls: Permission denied
rm: /usr/local/www/apache22/data/doc/weather/11.14: Directory not empty

Код:

%ls -l /usr/local/www/apache22/data/doc/weather/11.14
total 1056
-rw-r--r--  1 ftpuser  wheel  517632 Nov 21  2014  141114.xls
-rw-r--r--  1 ftpuser  wheel  517632 Nov 21  2014  151114.xls

Код:

ls -l /usr/local/www/apache22/data/doc/weather/11.14/141114.xls
ls: /usr/local/www/apache22/data/doc/weather/11.14/141114.xls: No such file or directory

Код:

%ls -l /usr/local/www/apache22/data/doc/weather/11.14/151114.xls
ls: /usr/local/www/apache22/data/doc/weather/11.14/151114.xls: No such file or directory

Что, черт побери, с этим делать? Была последняя мысль, что может быть под root'ом надо делать, но я не знаю пароль от него и никто не скажет уже. Потом ещё проверил:

Код:

%pw groupshow wheel
wheel:*:0:root,admin,ftpuser

Admin и root в одной группе wheel, так может admin и не отличается в этом плане от root?

ruslandh 05-07-2017 08:22 2749172

Конечно отличается
Удалять файлы в этом каталоге помимо root может только ftpuser. admin на это прав не имеет.

dislike 05-07-2017 08:29 2749174

Цитата:

Цитата ruslandh
Удалять файлы в этом каталоге помимо root может только ftpuser. admin на это прав не имеет. »

Так я же под ftpuser'ом тоже не могу удалять, писал выше те же самые ошибки:

Код:

Статус:        Удаление "/usr/local/www/apache22/data/doc/weather/11.14/141114.xls"
Команда:        CWD /usr/local/www/apache22/data/doc/weather/11.14
Ответ:        250 CWD command successful.
Команда:        DELE 141114.xls
Ответ:        550 141114.xls: No such file or directory.


ruslandh 05-07-2017 09:09 2749179

Насколько я вижу, тут проблема в том, что ftp клиент не находит файла.

Вы не показали какие права на каталог

http://www.linuxrsp.ru/artic/art2.html

У вас неправильно выставлены права на каталог.

MakaBooka 05-07-2017 14:49 2749297

начнём с конца. ftpuser в группе wheel это эпично.

проверить степень эпичности просто.
- зайдите по ssh админом.
Код:

ssh admin@host
- наберите
Код:

  sudo -s
Возможно три варианта.
1. sudo не найден (это печально, потому что сервер, от которого нет рута это либо сразу reinstall, либо нужен доступ к серверу, single user и установка пароля руту)
2. запрос пароля (пользователя admin) и вы рут
3. вы просто рут без запроса пароля.
в третьем варианте у вас серьёзное подозрение на потенциальную дыру: ftpuser теоретически может то же самое, что не есть гуд.

Смотрите: у вас файл "не виден"
Код:

ls -l /usr/local/www/apache22/data/doc/weather/11.14/141114.xls
ls: /usr/local/www/apache22/data/doc/weather/11.14/141114.xls: No such file or directory

потому что в имени файла первый - пробел. т.е.
Код:

ls -l /usr/local/www/apache22/data/doc/weather/11.14/\ 141114.xls
должно отработать
ну и
Код:

rm /usr/local/www/apache22/data/doc/weather/11.14/\ 141114.xls
тоже. опять же можно поробовать это сделать от ftpuser:
Код:

su -u ftpuser
rm /usr/local/www/apache22/data/doc/weather/11.14/\ 141114.xls

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

dislike 05-07-2017 15:30 2749315

Цитата:

Цитата MakaBooka
Возможно три варианта.
1. sudo не найден »


Код:

%sudo -s
sudo: Command not found.

Так точно, судо не найдено, рута у меня соответственно нет.

С непокорным файлом удалось-таки разобраться. Зашел по SSH от имени ftpuser, а не admin, долбанул командой rm -rf и теперь уже сработало. Почему filezilla не смогла в удаление файла, который очевидно ранее в ноябре 2014г был через неё же и залит на сервер, я так и не понял.
С рутом, конечно, надо бы что-то решить. Попробую договориться насчет визита в гости к серверу.

dislike 18-07-2017 14:24 2752299

Блин, я чувствую, что у меня уже красноглазие развивается с этим линуксом.
Сначала я научился расправляться с неудаляемыми файлами через SSH вместо FTP
Потом я столкнулся с папкой, которая даже так удаляться отказалась. Грохал такие от имени Admin
Потом начались папки, неподдающиеся даже админу, нашел способ грохать их через web-админку сайта (солянка какая-то из разношерстных прав доступа образовалась за годы работы сервера).
Потом нашел папку, которая не грохалась ни через FTP, ни через SSH, ни юзером, ни админом, ни даже через админку сайта. Пошел выбил у руководства пароль от рута, грохнул таки и эту непослушную директорию и уже собрался праздновать победу... Ага щас.

Теперь нашелся файл, который даже рутом не грохается... потому что у него в названии кириллица, которая даже в консоль ни вводится, ни копируется - ни-фи-га. И с этим файлом никак нельзя взаимодействовать.

Есть способы это как-то обойти?

lxa85 18-07-2017 14:41 2752301

dislike, как вариант, если позволяет система, перемонтировать с правильным iocharset или codepage (устанавливается в опциях команды mount)
второе - у файлов есть понятие inode
Соотв. можно попробовать указать его впрямую, через небольшую обертку над командами.

http://linuxg.net/how-to-remove-files-by-their-inode/

ruslandh 19-07-2017 07:09 2752412

cd каталог
files=$(ls *)
rm $files

И насчёт перекодирование файлов гугли iconv и convmv
man iconv

MakaBooka 19-07-2017 11:49 2752467

Цитата:

Цитата dislike
Блин, я чувствую, что у меня уже красноглазие развивается с этим линуксом. »

так бывает, когда глубокого понимания нет, а приходится иметь дело со странным огородом, оставленным в наследство )))

Цитата:

Цитата dislike
Потом начались папки, неподдающиеся даже админу »

нет никаких "папок, не поддающихся даже Админу". у вас нет админа (root), у вас есть два обычных пользователя Admin и ftpuser и солянка из файлов, принадлежащих то одному, то другому.

Цитата:

Цитата dislike
нашел способ грохать их через web-админку сайта »

лучше конечно разобраться с причинами и перестроить систему так, чтобы такого никогда не было.

Цитата:

Цитата dislike
Пошел выбил у руководства пароль от рута »

ну теперь все козыри на руках :)

Цитата:

Цитата dislike
Теперь нашелся файл, который даже рутом не грохается... потому что у него в названии кириллица »

есть find, есть табуляция - тысяча способов грохнуть его :)

Похоже вам достались ещё те авгиевы конюшни :)

dislike 21-07-2017 09:14 2752897

lxa85, ruslandh, спасибо за советы, но я нашел ещё более простое и изящное решение (не знаю, почему сразу в голову не пришло) - подключился из FileZilla сразу от имени root и уже из её интерфейса спокойно прибил всё что захотелось без проблем с кириллицей и пр.

Кстати, раз уж появился доступ к руту, не подскажете синтаксис команды "для данной папки и всех вложенных файлов и папок назначить владельцем пользователя ftpuser и дать ему полный доступ на чтение/выполнение/запись/удаление?

Понять бы ещё, с каким доступом работает админка сайта (тоже что ли какая-то учетка для неё существует, третья уже?) и не встанет ли раком весь сайт, если переписать права командой выше?

ruslandh 21-07-2017 09:28 2752901

Код:

chown -R ftpuser: /путь_до_каталога
cmod -R a+rцX /путь_до_каталога

или
Код:

cmod -R a+rцx /путь_до_каталога
если и файлы делать исполняемыми (только зачем, как впрочем и к всему chmod)

PS - папки на рабочем столе, а на жёстком диске - каталоги или директории.

lxa85 21-07-2017 10:52 2752919

Цитата:

Цитата dislike
Понять бы ещё, с каким доступом работает админка сайта »

Посмотреть, какие права выставлены для каталога и файлов (скорей всего что-то связанное с www или www-data) (# ls -la)
Посмотреть что лежит в /etc/passwd по наличию пользователей. (# cat /etc/passwd)
Посмотреть из-под какого пользователя работает веб сервер. (# ps -ef)

dislike 21-07-2017 11:49 2752932

Цитата:

Цитата lxa85
Посмотреть что лежит в /etc/passwd по наличию пользователей. (# cat /etc/passwd) »

Смотрел уже, там честно говоря, сложно разобраться, внушительный список выдает. Из них всех я знаю только 3 учетки (4 вместе с www), всё остальное непонятная нагрузка.

Код:

root:*:0:0:Charlie &:/root:/bin/csh
toor:*:0:0:Bourne-again Superuser:/root:
daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin
operator:*:2:5:System &:/:/usr/sbin/nologin
bin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologin
tty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologin
kmem:*:5:65533:KMem Sandbox:/:/usr/sbin/nologin
games:*:7:13:Games pseudo-user:/usr/games:/usr/sbin/nologin
news:*:8:8:News Subsystem:/:/usr/sbin/nologin
man:*:9:9:Mister Man Pages:/usr/share/man:/usr/sbin/nologin
sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin
smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin
mailnull:*:26:26:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin
bind:*:53:53:Bind Sandbox:/:/usr/sbin/nologin
proxy:*:62:62:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin
_pflogd:*:64:64:pflogd privsep user:/var/empty:/usr/sbin/nologin
_dhcp:*:65:65:dhcp programs:/var/empty:/usr/sbin/nologin
uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico
pop:*:68:6:Post Office Owner:/nonexistent:/usr/sbin/nologin
www:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin
hast:*:845:845:HAST unprivileged user:/var/empty:/usr/sbin/nologin
nobody:*:65534:65534:Unprivileged user:/nonexistent:/usr/sbin/nologin
admin:*:1001:1001:admin:/home/admin:/bin/csh
mysql:*:88:88:MySQL Daemon:/var/db/mysql:/usr/sbin/nologin
_pma:*:336:80:phpMyAdmin Owner:/nonexistent:/usr/sbin/nologin
ftp:*:14:14:Anonymous FTP Admin:/usr/local/www/apache22/data:/nonexistent
ftpuser:*:1002:1002:FTP user:/usr/local/www:/bin/sh

Админка судя по всему работает от www, но опять же не понятно, как это происходит, как она взаимодействует с файлами, созданными/принадлежащими другим пользователям, т.е. раньше я встречал файлы, которые ftpuser удалить не может, а www может. Но если для проверки создать файл от имени www, то ftpuser удалить его смог, равно как и наоборот. Результаты получаются нестабильные, файлы то удаляются нормально, то нет. Раньше у сервера была проблема - критически не хватало свободного места, некоторые файлы пропадали бесследно. Может из-за того случая все права полетели кто куда?

ruslandh 21-07-2017 12:54 2752950

Просто www доступ и ftp доступ имеют разные права, т.к. сервер http (apache22) и сервер ftp (proftpd (?) ) работают с правами разных пользователей.

dislike 04-08-2017 12:11 2756257

Цитата:

Цитата ruslandh
Просто www доступ и ftp доступ имеют разные права, т.к. сервер http (apache22) и сервер ftp (proftpd (?) ) работают с правами разных пользователей. »

А что делать? Как лучше поступить в этом случае? Просто уже реально задолбало то там, то здесь биться головой в одно и то же "Permission denied". То с ftp не могу удалять / создавать каталоги и файлы, то из админки сайта не могу делать то же самое. В одних каталогах такие права, в других - сякие. Достает уже все сильнее.
Например, /data - это корневая папка сайта. Через FTP пробую создать каталог /data/doc/feedback - отказ. Через админку создал - нормально создалось. Через FTP пытаюсь создать в каталоге /data/doc/feedback файл - опять отказ! Так работать невозможно. В любом другом каталоге в /data/doc через FTP всё создается и удаляется, именно в этом /feedback - нифига. А должно работать.

В общем, как теперь сделать так, чтобы хотя бы в отношении "/data/doc" и админка сайта и ftpuser имели равные полные права на чтение/запись/удаление и чтобы эти права наследовались в том же виде на все подкаталоги и файлы, в т.ч вновь создаваемые от имени любой из этих УЗ ?

Jula0071 04-08-2017 12:31 2756261

Цитата:

Цитата dislike
А что делать? Как лучше поступить в этом случае? »

Внести пользователей, от которых работают фтп и веб сервер в общую группу, например, www-data, у фтп и веб серверов настроить umask 002 и будет щастье. Идея такова, что файлы (директории) будут создаваться с правами 664 (775) вместо умолчальных 644 (755), что даёт полные права членам группы.

dislike 04-08-2017 13:17 2756272

Код:

mcx# id ftpuser
uid=1002(ftpuser) gid=1002(ftpuser) groups=1002(ftpuser),0(wheel),80(www)

mcx# pw groupshow wheel
wheel:*:0:root,admin,ftpuser

mcx# pw groupshow www
www:*:80:ftpuser

mcx# pw groupshow ftpuser
ftpuser:*:1002:

mcx# id www
uid=80(www) gid=80(www) groups=80(www)

Никак не соображу, отсюда можно сделать вывод, что ftpuser и www в одной группе www или нет?
Да и вообще не понятно, почему FileZilla утверждает, что www относится к группе wheel, а сама BSD утверждает, что никакого www в этой группе нет? http://meson.ad-l.ink/6QNfyqs8X/image.png

Jula0071 04-08-2017 14:56 2756294

Подзабыл фряшку – лет 10 не пользовал, так что как посмотреть членство в группах не помню, но вроде /etc/group всё как обычно должно быть.
Ещё вспомнил. У того же proftpd и наверно апача есть возможность настроить как пользователя, так и группу, от которых они работают. Например, Group www в proftpd.conf

MakaBooka 21-08-2017 17:54 2759824

Цитата dislike:
id ftpuser uid=1002(ftpuser) gid=1002(ftpuser) groups=1002(ftpuser),0(wheel),80(www) »
вот конкретно из этого (ftpuser в группе wheel) следует вывод, что для порутания вашей системы почти всё готово.

Цитата dislike:
Никак не соображу, отсюда можно сделать вывод, что ftpuser и www в одной группе www или нет? »
Нет никакой "одной группы". Есть две группы, ftpuser и www.
И есть два юзера: www и ftpuser.

Юзер ftpuser входит в обе группы. Юзер www входит только в группу www. Запутано? Есть немного, особенно радует название группы ftpuser.

Теперь про эффекты, которые возникают.

если у вас есть файл с владельцем www:www и правом на запись по владельцу и группе, то оба юзера (www и ftpuser) смогут их удалять и править. если у вас есть файл с ftpuser:ftpuser и правами на запись по владельцу и группе, то ftpuser и может менять и удалять, а www - нет. при чём если пользователь ftpuser перезаливает файл, то перезаливает он его с правами ftpuser:ftpuser, и www его уже удалять не может.

Принцип понятен?

Вообще если я правильно понял вашу хотелку (заливаем по ftp, удаляем по ftp, по http только читаем {качаем}), то необходимо все файлы отдать ftpuser:ftpuser и всё. никто "в чужую группу" входить не должен (и прежде всего ftpuser в wheel).


Время: 05:17.

Время: 05:17.
© OSzone.net 2001-