Normal Kullanıcı Olarak Kapat veya Yeniden Başlat


17

Komutu çalıştırmak için poweroffya da rebootbir süper kullanıcı olması gerekir. Yine de bunu normal bir kullanıcı olarak çalıştırabilir miyim? sudoHer yeniden başlattığımda veya kapattığımda şifremi girmek ve girmek istemiyorum .


2
Yanıt, dağıtımınızın hangi init sistemini kullandığına bağlıdır ... Örneğin, systemdaktif bir logindoturumla, başka bir kullanıcının hala giriş
yapmadığı sürece

@jasonwryan Şu anda varsayılan olarak kullanmayan Ubuntu kullanıyorum systemd. Yani Arch gibi diğer Dağıtımlar, yetkisiz ayrıcalıklar olmadan yeniden başlatılabilir mi?
Stormvirux

Evet: İlk yorumumdaki koşullara göre.
jasonwryan

Yanıtlar:


22

Değiştim /etc/sudoersyönetici grubunda olan her kullanıcı şifre isteyecek olmadan aşağıdaki komutları yürütmek böylece.

sudo halt
sudo reboot
sudo poweroff

Sadece şu satırları eklemeniz gerekir: /etc/sudoers

## Admin user group is allowed to execute halt and reboot 
%admin ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

ve kendinizi yönetici grubuna ekleyin.

Bunu yapabilmek için yalnızca bir kullanıcı isterseniz sadece kaldırmak %adminve ile değiştirin usernameböyle

## user is allowed to execute halt and reboot 
stormvirux ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

Daha öğrenebilirsiniz /etc/sudoersile man sudoersveya çevrimiçi manpage


4

İstediğiniz gibi /etc/sudoers.dad altında yeni bir dosya oluşturabilir (adını verdim 'shutdown') ve aşağıdaki satırları içine koyabilirsiniz:

# Allows me to shutdown the system without a password

yourUserName ALL = NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

Sadece kullanıcı adınız için "yourUserName" değiştirmek ve kullanmak için komut eklemek veya kaldırmak, şahsen ben sadece için kullanın shutdown. Altında belirli bir dosya oluşturmanın temel farklarından sudoers.dbiri, bu dosyanın Sistem Yükseltmelerinde hayatta kalmasıdır


1
Bu yaklaşımı seçerseniz, dosyaları okumak /etc/sudoersiçin uygun bir #includeyönergeye sahip olduğundan emin olun /etc/sudoers.d/.
patricktokeeffe

2

Bunu setuid ile hile yaparak da yapabilirsiniz. Tüm sistemlerde çalışıp çalışmayacağını bilmiyorum, çünkü bazen setuid / setgid bitini görmezden geliyorlar.

Benim durumumda sistem durumu değişikliği yapabilen bir grup kullanıcı belirtebilirsiniz adm. Ardından bu gruba uygun kullanıcıları ekleyin.

gpasswd -a $USER adm

İzinleri belirtin:

chmod 4550 /usr/bin/reboot

ls -l outpus şöyle görünmelidir:

-r-sr-x--- 1 root adm 18928 Mar 13  2015 /usr/bin/reboot

Daha sonra şunları yazabilirsiniz:

reboot

1

En basit çözüm:

sudo echo $USER >> /etc/shutdown.allow

Sonra şu komutlardan birini kullanabilirsiniz:

shutdown -ah now   // halt
shutdown -ar now   // reboot

Adam kapanmasına göre , root olmayan kullanım için -a seçeneği vardır :

Eğer shutdownçağrılır -a argüman (içinde kapatılacağını çağrısına ekleyin / inittab etc / dosya varsa, o kontrol eder) /etc/shutdown.allow dosyasının mevcuttur. Daha sonra bu dosyadaki oturum açma adlarını sanal bir konsolda oturum açan kişilerin listesiyle karşılaştırır ...

Debian Linux'ta çalışır. Ve içinde 32 kullanıcı adı için bir sınır var /etc/shutdown.allow.


4
Fedora, CentOS veya RHEL'de böyle bir seçenek yok.
fpmurphy

1
Bu da Ubuntu için çalışmıyor, en azından dokümanlardan aldığım şey bu. Bunun yalnızca Debian özelliği olup olmadığını görmek faydalı olacaktır.
Raphael Ahrens

Yine müsaitlik} 2020'de Ubuntu (18.04) 'de
tink
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.