Доброго времени суток. Прошу прощения за такой "нубский вопрос", но к сожалению не смог нагуглить.
Есть vps, ubuntu с lamp, создал пользователя admin, поменял его root директорию на /var/www.
Логинюсь под админом через putty, изначально открывает /var/www, но если я меняю директорию, например cd /etc, то он спокойно меняет ее. Как запретить выход выше директории /www?
Если вы хотите, чтобы он никуда не мог выйти, то надо использовать chroot. Так-то никто пользователям не запрещает обычно в /etc ходить, иногда это даже полезно бывает.
Можете, пожалуйста подсказать, как настроить chroot? В etc/passwd для admin - admin:x:1000:1000:,,,:/var/www:/bin/bash
но из консоли все равно спокойно можно выходить выше
littleguga: Зависит от того, что должен делать пользователь, может ли он выполнять какие-то команды. Обычно создается некоторая директория, в которую копируется всё необходимое для работы (тут в двух словах не объяснишь). И потом настраивается sshd. Посмотрите вот тут. Есть еще вариант. Можно использовать restricted mode для командной оболочки, тогда пользователь выйти из директории не сможет. Надо ему просто в качестве командной оболочки прописать /bin/rbash. Но надо смотреть, подойдет ли вам это и читать man bash
3vi1_0n3: пользователь должен загружать/удалять/изменять файлы в директории /var/www и не более(делать это он будет через sftp). Но чтобы если он вдруг попробует зайти через консоль - его не пускало выше/в другие директории. bash - насколько я понимаю, ему в такой ситуации не нужен?
littleguga: Да, сам баш ему, в общем, не особо нужен. Если так, как вы описали, то тогда можно использовать chroot при помощи sshd:
1) Включаем пользователя в группу "chrootusers" и в /etc/ssh/sshd_config добавляем
Match group chrootusers
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
littleguga: Там должно сообщение быть, что соединение только для sftp. Надо еще опцию добавить в общий конфиг Subsystem sftp internal-sftp
А в Match group webadmin добавить еще одну строчку ForceCommand internal-sftp
Должно выглядеть как-то так:
$ ssh user@192.168.0.11
user@192.168.0.11's password:
Could not chdir to home directory /home/user: No such file or directory
This service allows sftp connections only.
Connection to 192.168.0.11 closed.
$ scp index.html user@192.168.0.11:public
user@192.168.0.11's password:
This service allows sftp connections only.
$ sftp user@192.168.0.11
user@192.168.0.11's password:
Connected to 192.168.0.11.
sftp> put index.html
Uploading index.html to /index.html
remote open("/index.html"): Permission denied
sftp> cd public
sftp> ls
sftp> put index.html
Uploading index.html to /public/index.html
index.html 100% 7440 7.3KB/s 00:00
sftp>
Как вы создавали пользователя?
Скорее всего вы его внесли в группу админов и не удивительно что у него есть права.
Владелец файлов меняется командой
chown
Права на файлы меняются командой
chmod
fomistoklus: Пригорел? Огнетушитель принести? )))
usermod -G root/wheel отменили?
Возможно человек делал по гайдам, и там эти команды есть. Или вы верите в непогрешимость его знаний? )))
Про chown /etc это вы сами придумали. Походу данные из космоса берете :)