Войти

Показать полную графическую версию : Не могу удалить файлы


dislike
05-07-2017, 07:55
Есть удаленный сервер на 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
Конечно отличается
Удалять файлы в этом каталоге помимо root может только ftpuser. admin на это прав не имеет.

dislike
05-07-2017, 08:29
Удалять файлы в этом каталоге помимо 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
Насколько я вижу, тут проблема в том, что ftp клиент не находит файла.

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

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

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

MakaBooka
05-07-2017, 14:49
начнём с конца. 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
Возможно три варианта.
1. sudo не найден »


%sudo -s
sudo: Command not found.


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

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

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

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

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

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

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

ruslandh
19-07-2017, 07:09
cd каталог
files=$(ls *)
rm $files

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

MakaBooka
19-07-2017, 11:49
Блин, я чувствую, что у меня уже красноглазие развивается с этим линуксом. »
так бывает, когда глубокого понимания нет, а приходится иметь дело со странным огородом, оставленным в наследство )))

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

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

Пошел выбил у руководства пароль от рута »
ну теперь все козыри на руках :)

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

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

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

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

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

ruslandh
21-07-2017, 09:28
chown -R ftpuser: /путь_до_каталога
cmod -R a+rцX /путь_до_каталога
или
cmod -R a+rцx /путь_до_каталога
если и файлы делать исполняемыми (только зачем, как впрочем и к всему chmod)

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

lxa85
21-07-2017, 10:52
Понять бы ещё, с каким доступом работает админка сайта »
Посмотреть, какие права выставлены для каталога и файлов (скорей всего что-то связанное с www или www-data) (# ls -la)
Посмотреть что лежит в /etc/passwd по наличию пользователей. (# cat /etc/passwd)
Посмотреть из-под какого пользователя работает веб сервер. (# ps -ef)

dislike
21-07-2017, 11:49
Посмотреть что лежит в /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
Просто www доступ и ftp доступ имеют разные права, т.к. сервер http (apache22) и сервер ftp (proftpd (?) ) работают с правами разных пользователей.

dislike
04-08-2017, 12:11
Просто 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
А что делать? Как лучше поступить в этом случае? »
Внести пользователей, от которых работают фтп и веб сервер в общую группу, например, www-data, у фтп и веб серверов настроить umask (http://www.proftpd.org/docs/howto/Umask.html) 002 и будет щастье. Идея такова, что файлы (директории) будут создаваться с правами 664 (775) вместо умолчальных 644 (755), что даёт полные права членам группы.

dislike
04-08-2017, 13:17
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
Подзабыл фряшку – лет 10 не пользовал, так что как посмотреть членство в группах не помню, но вроде /etc/group всё как обычно должно быть.
Ещё вспомнил. У того же proftpd и наверно апача есть возможность настроить как пользователя, так и группу, от которых они работают. Например, Group www в proftpd.conf

MakaBooka
21-08-2017, 17:54
Цитата 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).




© OSzone.net 2001-2012