Премини към съдържанието
cybercop

Задаване на sudo потребител в Debian

Препоръчан отговор


Много потребители, преминаващи от Ubuntu,  деривати на Ubuntu и деривати на Debian към базовата дистрибуция Debian са объркани от това, че там по подразбиране няма зададен sudo потребител (потребител с право да извършва системни действия). Много от тях не знаят, как да се впишат в администраторски акаунт със su (super user) и не могат да извършват нужните им операции.

За тяхно улеснения пускам тази тема.

Самото задаване на sudo потребител е много по- лесно от усилието, които положих да напиша горните три изречени.

1. Проверявате, дали е инсталиран пакета sudo. Този пакет е зависимост на gksu, така, че вероятността да липсва е малка.

Това става, като отваряте терминала, вписвате се, като администратор със 

su

и изпълнявате 

apt-get install sudo

2. Задавате sudo потребителя (докато все още сте вписани в администраторски акаунт):

usermod -a -G sudo username

на мястото на "username",  пишете името на потребителя си.

3. Най- добре е да рестартирате системата.

Пример за командата с потребител "master":

su

apt-get update

apt-get install sudo

 usermod -a -G sudo master

reboot

След рестарта отваряте терминала и тествате, дали работи. При първата команда със sudo ще ви излезе кратко предупреждение да внимавате, какво правите, когато ползвате sudo паролата. Предупреждението е еднократно. След това, вече няма да забелязвате разлика между Ubuntu и Debian в това отношение.

https://s25.postimg.org/k3yqson1b/sudo.png

 

Редактирано от cybercop (преглед на промените)
  • Харесва ми 8

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

При мен не работи reboot и трябва да го рестартирам през systemd. Дори след като се добавих към sudo групата.

$ systemctl reboot

Както и останалите: poweroff, hibernate, suspend...

Редактирано от bornofash (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Ако ползваш графична среда, спокойно можеш да ползваш нейния мениджър на сесиите за рестарт. Никога не ми се е случвало да не ми работи системно действие от типа на poweroff, reboot, halt ...

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 10 минути, bornofash написа:

При мен не работи reboot и трябва да го рестартирам през systemd. Дори след като се добавих към sudo групата.

$ systemctl reboot

Както и останалите: poweroff, hibernate, suspend...

shutdown -r

 

  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Пише ми, че командата не е намерена. А като погледнах, тези команди се намират в /sbin/, който липсва в $PATH.

BbmeNso.png

Липсва, защото в /etc/profile има скрипт, който ме брои за „неефективен“ потребител. И изважда /sbin/ от PATH. ???

TLHMnJP.png

$ id -u ми връща 1000. Идея си нямам какво означава това.

Редактирано от bornofash (преглед на промените)

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Инсталирай upower, ако не си го направил, натисни бутона за изключване и да се свършат тези мъки. Виждам, че ползваш някаква странна система с минималистичен мениджър на прозорци. 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 43 минути, bornofash написа:

Пише ми, че командата не е намерена. А като погледнах, тези команди се намират в /sbin/, който липсва в $PATH.

BbmeNso.png

Липсва, защото в /etc/profile има скрипт, който ме брои за „неефективен“ потребител. И изважда /sbin/ от PATH. ???

TLHMnJP.png

$ id -u ми връща 1000. Идея си нямам какво означава това.

Накратко: 
sbin = system bin(aries) и по замисъл и изпълнение са достъпни само от root акаунта
по конвенция id от 0-99 са системни акаунти, 100-999 - динамични системни и програмни акаунти, 1000+ за потребители

Eex, що се чудите, а не питате Мануел?

 

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Значи е нормално /etc/profile да изважда sbin от пътя.

Ами другите как ползват командите от там? Кой им добавя /sbin/ към пътя?

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 29 минути, bornofash написа:

Значи е нормално /etc/profile да изважда sbin от пътя.

Ами другите как ползват командите от там? Кой им добавя /sbin/ към пътя?

По принцип е sudo, и се добавя в sudoers  файла,  но за различните дистра може да варира като изпълнение

Едит: Така разписното добавяне в началото на  темата на потребител към sudo  ще работи единствено, ако и в sudoers файла са дадени права за тази група sudo. Провери си какво имаш разписано в sudoers файла, т.е. трябва да имаш ред в него : 

%sudo    ALL=(ALL:ALL) ALL

 

Редактирано от ZeroG (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Да отмаркирал съм го:

MjpVsWS.png

И има някаква настройка Defaults, в която присъства sbin.

В интернет нищо конкретно не намирам, но доколкото разбирам това е пътя по подразбиране, а /etc/profiles, който се изпълнява по-късно, премахва sbin.
Маха го поради съображения за сигурност, защото там има „опасни“ за системата команди, които трябва да се изпълняват само като root.

Във вашите /etc/profile какво има?

Между другото съм с debian 9.1. В арча profile файлът ми е празен. То там всички файлове са празни.

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 10 минути, bornofash написа:

Във вашите /etc/profile какво има?

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Няма го.

Какво се опитваш да направиш с цялата тази гимнастика? Системата ми работи, всички системни действия се изпълняват без проблеми.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 27 минути, bornofash написа:

Еми същото е. А като напишеш echo $PATH, sbin има ли го?

Правилно е - не би трябвало да имаш /sbin в пътеката за обикновен потребител. Права да изпълниш нещо в  нея  получаваш по 'втория начин' -  класически през sudoers файла, а също така и през SELinux & AppArmor, ако ги имаш в допълнение

Редактирано от ZeroG (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Добре, cybercop, само още едно последно нещо ще те помоля да ми кажеш – като напишеш which reboot, какво ти излиза? Какъв е пътя?

преди 11 минути, ZeroG написа:

Правилно е - не би трябвало да имаш /sbin в пътеката за обикновен потребител. Права да изпълниш нещо в  нея  получаваш по 'втория начин' -  класически през suders файла, а също така и през SELinux & AppArmor, ако ги имаш в допълнение

Да, обаче reboot и poweroff и прочее командите се намират в sbin. Освен ако не са копирани в /bin/ при другите дистрибуции.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 19 минути, bornofash написа:

Да, обаче reboot и poweroff и прочее командите се намират в sbin. Освен ако не са копирани в /bin/ при другите дистрибуции.

Не четеш какво ти писах по-горе, или не го проумяваш ..

Ето ти за Дебиан изхода от изпълнението:

$ reboot
bash: reboot: command not found

$ sudo reboot
[sudo] password for user_name:

 

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 20 минути, bornofash написа:

Добре, cybercop, само още едно последно нещо ще те помоля да ми кажеш – като напишеш which reboot, какво ти излиза? Какъв е пътя?

Да, обаче reboot и poweroff и прочее командите се намират в sbin. Освен ако не са копирани в /bin/ при другите дистрибуции.

Нищо не ми излиза. Нито има подобен файл в sbin.

преди 7 минути, bornofash написа:

Това го знам, но аз помислих, че той изпълнява reboot като обикновен потребител.

Това : su не е за украса, а за влизане в сесия.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

$ cat /etc/os-release && echo && whereis poweroff reboot
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

poweroff: /sbin/poweroff /usr/share/man/man8/poweroff.8.gz
reboot: /sbin/reboot /usr/share/man/man8/reboot.8.gz
 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Оставете, стана объркване. Той отначало е написал su, с което влиза като root. Забравих за него.

А това, което искам аз, е да рестартирам и изключвам системата като обикновен потребител. За да не пиша всеки път парола, когато искам да изключа компютъра, единствените ми възможности са да добавя sbin към пътя (което не е препоръчително) или да използвам systemctl.

ПС: Или да си инсталирам десктоп среда като бял човек :D

Редактирано от bornofash (преглед на промените)
  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 21 минути, bornofash написа:

Оставете, стана объркване. Той отначало е написал su, с което влиза като root. Забравих за него.

А това, което искам аз, е да рестартирам и изключвам системата като обикновен потребител. За да не пиша всеки път парола, когато искам да изключа компютъра, единствените ми възможности са да добавя sbin към пътя (което не е препоръчително) или да използвам systemctl.

ПС: Или да си инсталирам десктоп среда като бял човек :D

Това, което искаш и  начинът за него е да добавиш следното в sudoers:

 

твоят_юзер ALL=(root) NOPASSWD: /sbin/poweroff

 

  • Харесва ми 3

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 26 минути, ZeroG написа:

$ cat /etc/os-release && echo && whereis poweroff reboot
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

poweroff: /sbin/poweroff /usr/share/man/man8/poweroff.8.gz
reboot: /sbin/reboot /usr/share/man/man8/reboot.8.gz
 

Това, което виждаш в sbin са просто преки пътища към истинският файл /bin/systemctl

Не знам за какво ползваш компютъра си. Ако го ползваш за десктоп, има логика да си инсталираш някаква графична среда. Хахорство от типа на стартиране на филми и отваряне на документи през терминала буди само насмешка.

Редактирано от cybercop (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 10 минути, ZeroG написа:

Това, което искаш и  начинът за него е да добавиш следното в sudoers:

 


твоят_юзер ALL=(root) NOPASSWD: /sbin/poweroff

 

Даааааа... И това също работи. :)

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 10 часа, ZeroG написа:

твоят_юзер ALL=(root) NOPASSWD: /sbin/poweroff

 

Винаги съм се чудел как става така, че на някои дистрота изпълнявам reboot и poweroff с нормален потребител, а за други трябва sudo. Мерси за инфото.

Малко не по-темата, но да добавя малко инфо, как се дават sudo права за обикновен потребител в чист Arch. По-простата причина, че чистият Arch, на мен лично ми създава усещания като чист Debian :) . Първо се създава нов потребител "master":

useradd -m -g users -G wheel,storage,power -s /bin/bash master
passwd master

желателно е да е в "wheel" групата. После се инсталира sudo пакетът, защото на чист Arch най вероятно ще липсва:

pacman -S sudo

После се редактира visudo за да се добавят sudo права за новият юзър:

EDITOR=nano visudo

Ако се оправяте с vi/vim, за разлика от мен, може и направо #visudo. Тук има два начина. Ако потребителят е в група wheel, просто се намира и откоментира следният ред:

%wheel ALL=(ALL) ALL

Ако по някаква причина не искате потребителя в wheel групата, или предпочитате индивидуален подход, може просто да се добави нов ред:

master ALL=(ALL) ALL

Имаше и още един начин, без да се редактира visudo, но не го ползвам и сега не ми се търси.

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
на 9/22/2017 в 11:15, bornofash написа:

..
$ id -u ми връща 1000. Идея си нямам какво означава това.

В обяснението ми ще се огранича до Ubuntu.

Параметър -u, --user    означава  "print only the effective user ID". На практика това е вашия първи потребител  (non-root user) , създаден по време на инсталацията на ОС-ма. Така е прието, да се присвоява число ( UID ) 1000. На www-data, например, е 33, а на root e 0. Преобразуване на числото в име :

cat /etc/passwd | grep 1000

DMry6Lyof27pNaZkN7Z5TQPGvNrdcq_8A6IoBvd9

ZerjQ_q_vo-1kX2iaXxI-Lp_pwhLlcwOQVVIFfof

поздрави!

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход


×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.