Su sırasında başka bir kullanıcıya oturum açma kabuğu olarak “Terminal işlem grubu ayarlanamıyor”


16

Not: Lütfen bu yayının yarısına yakın "DÜZENLE" ile başlayan güncellenmiş bilgileri okuyun - bu sorunun ortamı ve arka planı değişti

Debian Testing depolarına geçiş yapmaya karar verdiğim bir bataklık standart Debian 6.0 kurulumum var. Bunu, bunun yerine Test depolarını kullanmak için sources.list dosyamdaki Squeeze depolarına yapılan referansları değiştirerek yaptım.

Paket yüklendikten ve yeniden başlatıldıktan sonra, başka bir kullanıcıya dava açmaya çalışırken aşağıdaki hatayı alıyorum:

root@skaia:~# su joebloggs -
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell

- işaretini atlarsam bu gerçekleşmez.

Kullanıcıların doğru bir şekilde kök haline gelebileceğini unutmayın, bu yalnızca kökten başkasına geçerken ve o kullanıcının ortamını elde etmek için - kullanıldığında gerçekleşir.

Google burada çoğunlukla işe yaramaz. Bulabildiğim tek şey, 2011'de suxbu süre zarfında düzeltilmiş gibi görünen pakete ilişkin referanslar .

Bu, doğru paketi doğru şekilde değiştirerek düzeltilebilen bir yükseltme hatası gibi görünüyor ve kokuyor. Nereden başlayacağım konusunda hiçbir fikrim yok - bunun dışında sistemim tamamen normal ve beklendiği gibi çalışıyor.

DÜZENLE

Bu bana yukarıda tarif edildiği gibi Debian kararlı bir makinede oluyor . Hiçbir yükseltme veya bu sefer hiçbir şey, sadece düz yukarı kararlı.

Evet, bir yıl sonra. Sorunun ne halt olduğu konusunda hala bir fikrim yok.

İşte şu şekilde görünüyor (çok fazla değişmedi):

bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
terraria@skaianet:~$ tty
/dev/pts/0
terraria@skaianet:~$ ls -l /dev/pts/0
crw--w---- 1 root root 136, 0 Oct 10 19:21 /dev/pts/0
terraria@skaianet:~$ ls -l /dev/pts/
crw--w---- 1 root root 136, 0 Oct 10 19:21 0
crw--w---- 1 root root 136, 2 Sep 22 17:47 2
crw--w---- 1 root root 136, 3 Sep 26 19:30 3
c--------- 1 root root   5, 2 Sep  7 10:50 ptmx

Bu şekilde üretilen bir strace:

root@skaianet:~$ strace -f -o tracelog su terraria -

... ayrıca kafa karıştırıcı davranışlar ortaya çıkıyor. Bu mesajlar oldukça kafa karıştırıcı. Seçilen bazı çizgiler:

readlink("/proc/self/fd/0", "/dev/pts/0", 4095) = 10
#Error code 10? 
15503 open("/dev/tty", O_RDWR|O_NONBLOCK) = -1 ENXIO (No such device or address)
#Yes there is, and I can interact with it normally
15503 ioctl(255, TIOCGPGRP, [32561])    = -1 ENOTTY (Inappropriate ioctl for device)

Ben bağladıysanız bu strace oturumun tam çıkışını - tek yaptığım ardından hemen ctrl + terminali üzerinden d su komutu, çalıştırıldı.


1
Merhaba Mike. Sorunu buldun mu?
Mircea Vutcovici

Yanıtlar:


34
  • su - usernametarafından su" kullanıcı adını çalıştır" anlamına gelir interaktif giriş kabuğu olarak 'ın kabuk"
  • su username -, suşu interaktif olmayan komutu ( -) kullanıcı adı olarak çalıştır anlamına gelir. "
  • ikincisi sadece işe yaradı çünkü:
    • daki suargümanlar arka geçersh ayrıştırma için
    • shsürer -anlamına "bir giriş kabuğu olarak run (okuma /etc/profile, ...)"

Ama gerçekten ilgilendiğiniz şey: neden etkileşimli değil ? Ayrıcalıklı ebeveyn ve "karşı savunmasız imtiyazsız çocuk yaprakları size arasına kontrol terminali Paylaşım TTY pushback ayrıcalık tırmanması ", nam TIOCSTIEğer gerçekten ihtiyaç böylece sürece, hata su ondan ayrılır . su username -Formu kullandığınızda, su kontrol terminaline ihtiyacınız olmadığı anlaşıldı .

Yalnızca kontrol terminali olan süreçlerde, süreç gruplarını işleyen oturum yöneticileri bulunabilir (iş kontrolü yapar); verdiğiniz izbash oturum lideri olamayacağını tespit ediyor.

Demek istedin ki:

Yabancılaştığı yerde, her iki formun Ubuntu ve CentOS 6'da iyi çalıştığı, ancak vanilya Debian'da sadece ilk formun hatasız çalıştığıdır.

Yok sayılması varyantları gibi suxve sudoen az üç vardır [1] sürümleri suLinux: coreutils, util-linuxve shadow-utilsDebian en geldiği. İkincisinin kılavuzunda şunlar belirtiliyor:

Su'nun bu sürümünde, sadece bazıları belirli bir sitede kullanımda olabilecek birçok derleme seçeneği vardır.

ve Debian'ın bayrağı geliyor old_debian_behavior; diğer sürümlerde benzer derleme zamanı / çalışma zamanı seçenekleri olabilir. Değişkenliğin bir başka nedeni de, bu şekilde ayrıcalık bırakmak için kullanılmasının gerekip gerekmediği ve hatanın bu nedenle bir hata olup olmadığı konusunda bazı tartışmaların [2]su olması olabilir TIOCSTI(Redhat başlangıçta "WONTFIX" i kapattı ).

[1]: Düzenle: ekleyin SimplePAMAppsve ekleyin hardened-shadow.

[2]: Solar Designer'ın okumaya değer olduğunu düşündüğüm bazı (eski) görüşleri var .


2
Bu mükemmel bir cevap ve en iyisi tam olarak nedenini açıklıyor. Keşke bir yıl önce burada olsaydın :)
Mikey TK

1

/ Dev / pts * 'de sahiplik ve izinleri veya yükseltme işlemi sırasında değiştirilmeyen / dev / pts cihazlarıyla ilgili udev için yeni bir yapılandırma olup olmadığını kontrol ederim.

Kök olarak çalışarak hangi syscal'ın hata oluşturduğunu bulmayı da deneyebilirsiniz:

strace -f su - username 2>stderr.log

2
-fSu kabuğun bir alt işlem olarak çalıştırılmasına karar vermesi durumunda, bu sıraya daha iyi bir şekilde eklemeniz daha iyi olur . Bir terminalin ön plan süreç grubunu ayarlamak için sistem ioctl(..., TIOCSPGRP, ...)çağrısıdır ve zaten ENOTTY (cihaz için uygun olmayan ioctl) ile başarısız olduğunu biliyoruz, böylece strace'nin bir kısmı çok yardımcı olmayacaktır. Ancak , TIOCSPGRP'nin neden başarısız -olduğunu bulmak için komutun her iki versiyonunun (olan ve olmayan ) bir kısmı karşılaştırılabilir .
Alan Curry

Bu umut verici bir ipucuna benziyor. / Dev / pts klasörüme baktığımda, tam olarak iki öğe vardır: 0, oturum açtığım kullanıcının sahip olduğu 600 ve ptmxkök sahiplerinin sıfır izinlerine sahip olarak ayarlanmış izinler.
Mikey TK

1
Mesajdan sonra kabuk istemini aldığınızda No job control, komutu çalıştırın ttyve size hangi tty'de olduğunuzu söyleyecektir. Sonra ls -l.
Alan Curry

@AlanCurry, haklısın, ekleyeceğim -f. Teşekkür ederim!
Mircea Vutcovici

@AlanCurry - geri geldi. Orijinal soruyu Mircea'nın önerdiği bilgilerle güncelledim.
Mikey TK
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.