stanislav-belichenko
@stanislav-belichenko
Backend PHP Developer

Странное поведение linux: почему файлы под одним из пользователей создаются, но при записи в них содержимого удаляются?

Ситуация такова. Есть Debian 8, недавно он был Debian 7. В нем есть один пользователь (не с правами root'а), при работе с которым возникают странные вещи. По ssh подключиться через него невозможно, хотя таковая возможность ранее была. Команда `su -` также не помогает, консоль выглядит вот так:

15:05:23:root@server>~#su ouruser
Fri Mar 31 15:05:40 MSK 2017
15:05:40:root@server>~#

Лог /var/log/auth.log выглядит в этот момент так:

Mar 31 17:29:37 server su[2172]: Successful su for ouruser by root
Mar 31 17:29:37 server su[2172]: + /dev/pts/1 root:ouruser
Mar 31 17:29:37 server su[2172]: pam_unix(su:session): session opened for user ouruser by sshuser(uid=0)
Mar 31 17:29:37 server su[2172]: pam_unix(su:session): session closed for user ouruser

Где sshuser - это пользователь, под которым мы сначала попали на сервер по ssh, а потом уже при помощи `su -` попали под root, откуда и проводим эксперимент. Предупреждая вопросы - нет, из под sshuser тоже не получается попасть в нужного нам пользователя через `su -`. Остальные системные логи по grep ouruser ничего в этот момент не показывают.

Проверка через clamav и rkhunter тоже ничего не показала.

При подключении через ftp коннект происходит, однако тоже есть странности - при попытке создания некоего файла он создается, однако при последующей попытке записать в этот файл что-либо он просто исчезает.

Подскажите, в чем может быть проблема или с чего начать диагностику? Пересоздание пользователя в целом вариант, но крайний, и рассматриваться будет последним.
  • Вопрос задан
  • 756 просмотров
Пригласить эксперта
Ответы на вопрос 2
piromanlynx
@piromanlynx
Системный администратор в Perfect Solutions
1. Это очень похоже на то, что вместо шелла у пользователя стоит /bin/date. Просто смените ему shell:
# chsh ouruser
Changing the login shell for ouruser
Enter the new value, or press ENTER for the default
	Login Shell [/bin/date]: /bin/bash

2. Так же может быть написан exit внутри profile или bashrc. тогда просто нужно найти эти строки и хотябы закоментить:
# egrep -i  -n '(exit|date)' /home/ouruser/.* 2>/dev/null
/home/ouruser/.bash_logout:1:# ~/.bash_logout: executed by bash(1) when login shell exits.
/home/ouruser/.bashrc:23:# update the values of LINES and COLUMNS.
/home/ouruser/.bashrc:114:date
/home/ouruser/.bashrc:115:exit
# mcedit -d /home/ouruser/.bashrc:114

3. Так же может быть какой то хак в /etc/profile или /etc/profile.d. Добавьте в /etc/profile в начало set -x
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

set -x

if [ "`id -u`" -eq 0 ]; then
и сможете увидеть на какой команде происходит выход, а потом найти ее в файлах profile.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Выполните и покажите
cat /etc/passwd | grep ouruser
посмотрите как он настроен - где у него домашний каталог, какой у него шелл, какой у него UID.

Выполните df -h
Выполните df -h /var/www
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы