Merhaba,

Öncelikle şunu düzeltmek isterim.

SSH veya SFTP ile bağlandığınızda karşınıza çıkan klasör bağlandığınız kullanıcının home yani varsayılan ev dizinidir. IP adresinin değil.

FTP için bağlandığınız kullanıcınnda home yani varsayılan ev dizin FTP hesabı açılırken belirtilen X bir dizin olduğu için o dizin açılır.

1. Madde için istediğiniz şeyde ince bir detay var. Oda şu;

htdocs klasöründeki dosya-dizin sahipliklerinin kullanıcısı kim? www-data mı yoksa x bir kullanıcı mı? Bunu neden soruyorum şu yüzden dosya yüklendiğinde /home/x/... klasörüne yani X kullanıcısının varsayılan home/ev dizinine (SSH ve SFTP den bağlandığında varsayılan olarak gelen klasöre) yüklenmesini istiyor iseniz htdocs klasöründeki dosya ve dizinler X kullanıcısınn sahipliğine ait ise yazılımda dosyanın yüklendiği fonksiyon,sınıf veya kısımda $path diye bir değişken oluşturup o değişkene /home/X/... yolunu verip dosyanın $path değişkenindeki yola yüklenmesini sağlayabilirsiniz. Bunun siz dinamik olmasını istiyor iseniz farklı bir durum söz konusu. Tersi işlem gerekiyor @BedirhanERKAN; bahsettiği gibi. Yani home dizinine değil dizini değiştirerek htdocs altına alarak.

2. Madde için ise;

shell_exec - exec - argv gibi php içerisinde shell komutlarını çalıştırabilirsiniz. Yani bahsettiğiniz sh scriptini çalıştırabilir geri dönüş alabilir buna istinaden de tekrar komut gönderebilirsiniz. Ancak şunu belirtmek isterim ki bunun dikkatli ve ayrı bir katmanda güvenli şekilde yapılması gerekir. Bu komutlar genelde hosting firmalarında kapalı olur. Çünkü bu komutlar sayesinde sunucuya shell,exploit,malware gibi zararlı yazılımlar bulaştırılabilir dolaylı yoldan.