Soru nologin kabuğu olan kullanıcı olarak betiği çalıştır


Tek yapmam gereken / etc / passwd'de belirtilen nologin / false kabuğuna sahip olan belirli bir betik gibi özel bir betik çalıştırmak.

Komut dosyasını root olarak çalıştırırdım ve bu başka bir kullanıcı olarak çalıştırılmalıdır. Koşu:

~# su -c "/bin/touch /tmp/test" testuser

Çalışır ama testuser için geçerli bir kabukya ihtiyacım var. Şifreyi devre dışı bırakabileceğimi biliyorum. passwd -d testuser ve kabuğu / bin / bash'a bırakın, bu şekilde biraz güvende olurdum ama nologin / false shell'e sahip olmalıyım.

Temel olarak ihtiyacım olan şey, crontab'ın belirli bir kullanıcı olarak çalışmasını sağladığımızda, nologin / false kabuğuna sahip olup olmadığına bakılmaksızın ne yapması gerektiğidir.

p.s Bu parçayı buldum Bir komutu nologin kullanıcısı olarak yürütme ama ben komuta nasıl "birleştirmek" hakkında hiçbir fikrim yok su -s /bin/sh $user senaryoya koşmam gerek

Teşekkürler


78
2018-01-18 13:56


Menşei




Cevaplar:


Belirli bir kabuğu çalıştırmak için -s anahtarını kullanabilirsiniz

su -s /bin/bash -c '/path/to/your/script' testuser

(başına ekle sudo Yukarıdakilere testuser parolasız bir kullanıcıdır.)


110
2018-01-18 18:49



Ne ise su root:root -rwsr-x--- ? - Patryk
Kullanıcının şifresi yoksa ne olur? - CMCDragonkai
@Wesley Parolasız kullanıcı için bu komutu çalıştırmak için root olmanız gerektiğini öğrendim. - CMCDragonkai
@lain, Kullanıcının bir kabuğa sahip olmaması gerekiyorsa, komutla ilgili işlem bir bash sürecinin çocuğu olmamalıdır. Bu nedenle, kabuğu komut dosyasıyla değiştirmek için de exec kullanmalısınız. Komut dosyasını bir init yapmak istiyorsanız, & örnek olarak & nizi kullanın. su -s /bin/bash -c 'exec /path/to/your/script &' test - Facundo Victor
Son 20 dakikayı harcayarak aynı sonucu nasıl elde edeceğim runuser, Şunu belirtmek isterim su -s SHELL parametre runuser komutu neredeyse işe yaramaz hale getirir :) Teşekkürler Jan! - jirka


Bunu ile yapabilirsiniz sudo -u eğer kuruluysa:

# whoami
root
# sudo -u apache whoami
apache
# getent passwd apache
apache:x:48:48:Apache:/var/www:/sbin/nologin

7
2018-01-18 14:03



Parametrelerini nasıl geçirirsiniz sudo -u apache whoami? - CMCDragonkai
@CMCDragonkai Komuttan sonraki tüm parametreler iletilir. "Sudo [-u apache] [whoami <param1> <param2>]" gibi düşünebilirsiniz. - Handyman5
Kullanmayı düşünüyorum sudo -u komutları nologin kullanıcısı olarak çalıştırmak için iyi bir fikir değildir, çünkü SUDO_USER çevrede gerçek olan komuta çağırır. Belki sadece bunu düşünüyorum. - Meow


Komut dosyasını / bin / sh dosyasına çalıştırmak için argüman olarak sağlayarak:

su -s "/bin/sh /your/script/location" username

4
2018-01-18 14:01





şimdi fark ettim :

su-s "/ bin / bash" -c "/ bin / touch / tmp / testuser" test kullanıcısı

belki daha iyi bir yolu var mı?


2
2018-02-16 07:18





aslında, bunu yapmanın en iyi yolu runuser

detaylar için adam sayfasına bakın

Bu araç geliştirici onun bolgunda dediği gibi durumla başa çıkmak için kullanılır

Bir hizmet root olarak çalışırken ve kabuk kullanarak UID'yi değiştirmek istediğinde runuser kullanmalıdır.

http://danwalsh.livejournal.com/55588.html

bu cevabı pek çok sarayda yayınladım, bu can sıkıcı bulursanız beni affet


0
2017-12-07 19:19



Lütfen bağlantı çürümelerini önlemek için sadece bağlantı yanıtları göndermeyin. Bunun yerine, bağlantıdan en alakalı bilgileri cevabınıza ekleyin veya alternatif olarak, bağlantıyı bir yanıt yerine yorum olarak gönderin. Bunu gör serverfault.com/help/how-to-answer Daha fazla bilgi için yardım merkezi makalesi. - Federico Galli
@FedericoGalli en alakalı bilgiler zaten eklenmiş, kullanımı kopyalamaya ve yapıştırmaya gerek yok, adam sayfası yeterli bilgi sağlıyor - Z-Y00


Kullanıcıyı belirtmek için sudo -u kullanın. Ayrıca hedef kullanıcının ortam değişkenlerini ayarlamak için -i işaretini kullanın.

sudo -i -u user command

-1



bu verir This account is currently not available. - knocte