Portál AbcLinuxu, 12. května 2025 11:48

Dotaz: sudo a heslo usera pod ktorym spustam

8.5.2009 20:57 tina
sudo a heslo usera pod ktorym spustam
Přečteno: 374×
Odpovědět | Admin

Ahoj, nevie mi niekto poradit ci sa da sudo nakonfigurovat tak, aby ked spustam program pod konkretnim userom, tak aby si vypitalo heslo usera pod ktorym chcem tento program spustit a nie moje!

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Fuky avatar 8.5.2009 22:06 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
Odpovědět | | Sbalit | Link | Blokovat | Admin

Pokud znáš heslo uživatele, pod kterým chceš daný program spustit, tak postrádá použití sudo smysl. Použij:

$ su -c program username

-- RÁMO: psí tábor , ETriatlon: Výuka plavání
8.5.2009 22:14 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Dik, na to som uz prisiel.

Jedneho takeho usera som uz mal v default instalacii, ktory moze pouzivat prikaz su. Ale neviem ako docielim aby mohol aj iny konkretny user pouzivat prikaz su.

Skupinu wheel nemam, pridanie uzivatela do skupini root nepomohlo. V mojom konfiguraku /etc/pam.d/su je toto:

#
# The PAM configuration file for the Shadow `su' service
#

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so


# This module parses environment configuration file(s)
# and also allows you to use an extended config
# file /etc/security/pam_env.conf.
#
# parsing /etc/environment needs "readenv=1"
session       required   pam_env.so readenv=1
# locale variables are also kept into /etc/default/locale in etch
# reading this file *in addition to /etc/environment* does not hurt
session       required   pam_env.so readenv=1 envfile=/etc/default/locale

# Defines the MAIL environment variable
# However, userdel also needs MAIL_DIR and MAIL_FILE variables
# in /etc/login.defs to make sure that removing a user
# also removes the user's mail spool file.
# See comments in /etc/login.defs
#
# "nopen" stands to avoid reporting new mail when su'ing to another user
session    optional   pam_mail.so nopen


# The standard Unix authentication modules, used with
# NIS (man nsswitch) as well as normal /etc/passwd and
# /etc/shadow entries.
@include common-auth
@include common-account
@include common-session
Fuky avatar 8.5.2009 23:24 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
Konfigurák máme stejný, kde jsi přišel na to, že su nemohou používat ostatní uživatelé? Může ho použít kdo chce... ;-)
8.5.2009 23:36 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

ked zadam ako pouzivatel www-data prikaz  su -c id bob tak mi to vyhodi chybu: Sorry, user www-data is not allowed to execute '/bin/su -c id bob' as root on server.

Ked to spravim ako user knoppix, tak si pekne vypita heslo na boba a komand zbehne uspesne.

Fuky avatar 9.5.2009 01:00 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
To je, ale chybová hláška sudo, řekl jsem ať použíješ příkaz su, ne ať spouštíš su pod sudo. Nebo se pletu, případně více rozepiš co a jak děláš?
9.5.2009 09:50 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Mas pravdu, to som si neuvedomil ze som sa pod toho usera dostal cez sudo a tam spustal su. Teraz som to spravil takto, Spustil som si terminal pod userom knoppix, na krotom mi funguje su, v nom som sa cez prikaz su www-data switchol

na usera www-data a tam nasledne spustil prikaz su -c id bob kde si vypitalo heslo. No po zadani som dostal hlasku Sorry, try again.

9.5.2009 09:56 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Este dodatok, heslo je urcite spravne :-)

Fuky avatar 9.5.2009 10:16 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
Jestli se nepletu, tak hláška: "Sorry, try again." patří sudo, protože su používá hlášku "su: Authentication failure".
Fuky avatar 9.5.2009 10:22 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
Píšeš o uživateli knoppix, takže mám takové tušení, že tvůrci distribuce mu nejspíš dali rootovská oprávnění pomocí sudo, v tom je ten zakopaný pes. Podle mě se stále na pozadí spouští sudo, jinak by ses na uživatele www-data bez hesla nedostal.
9.5.2009 10:24 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Tak tomu nerozumiem ako sa tam sudo dostalo. Ako som uviedol, Do grafickeho prostredia distribudie knoppix som prihlaseny pod uzivatelom knoppix. Tam spustim terminal a switchnem sa na usera www-data a vykonam prikaz uvedeny vyssie. Skusal som sa prihlasit aj vzdialene cez ssh ako user www-data. a tam zadat prikaz su -c id bob no dostal som taku istu hlasku. Mozes mi prosimta vysvetlit ako sa do toho zaplietlo sudo ked som ho nepouzil.

9.5.2009 10:32 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
No racej vysvetlim co chcem dosiahnut. chcem napisat skript ktoremu dam tri argumenty, login, heslo a prikaz. A nesledne chcem aby sa tento prikaz vykonal pod danym userom. Lenze som natrafil na tento problem plus
dalsi, ked som to skusal spustit v skripte (este bez argumentov):

#!/bin/sh

su bob -c id << _EOF_
bob
_EOF_

tak som dostal hlasku su: must be run from a terminal

Fuky avatar 9.5.2009 10:42 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

To je z bezpečnostích důvodů, aby uživatelé nedávali hesla do skriptů. Skript, který popisuješ je defacto program su. ;-)

Fuky avatar 9.5.2009 10:48 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
Dej do přílohy /var/log/auth.log po té co se akce nezadaří.
Fuky avatar 9.5.2009 10:53 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Nastává problém, i když se na uživatele www-data dostaneš pomocí:

$ su - www-data

9.5.2009 11:20 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Je to to ise aj ked to spravim ako si mi napisal. a subor /var/log/auth.log je prazdny

Fuky avatar 9.5.2009 11:28 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Není auth.log jen odrotovaný do auth.log*?

A když použiješ místo uživatele www-data např. uživatele franta, kterého si nově vytvoříš, a spouštíš su -c program user pod ním, je stále stejný problém?

9.5.2009 12:21 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

No vytvoril som si uzivatela boba. otvoril som terminal a zadal prikazy:

server:5 16:05:36 ~ $ id
uid=1000(knoppix) gid=1000(knoppix) groups=20(dialout),21(fax),22(voice),24(cdrom),25(floppy),26(tape),27(sudo),29(audio),30(dip),44(video),60(games),100(users),106(usb),110(scanner),115(camera),1000(knoppix)
server:5 16:05:46 ~ $ su - bob
Password:
server:5 16:05:50 ~ $ id
uid=1002(bob) gid=1003(bob) groups=27(sudo),1003(bob)
server:5 16:05:55 ~ $ su -c id knoppix
server:5 16:05:65 ~ $

Dostal som prazdny riadok.

Fuky avatar 9.5.2009 13:16 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Jakou verzi Knoppixu máš? Co říká:

$ ls -l /bin/su
-rwsr-xr-x 1 root root 27108 Nov 22 17:01 /bin/su
$ ls -l /usr/bin/id
-rwxr-xr-x 1 root root 26572 Apr  4  2008 /usr/bin/id
bob$ su -c true knoppix
bob$ echo $?
0
bob$ su -c false knoppix
bob$ echo $?
1
bob$ su -c 'echo $USER' knoppix
knoppix

Po zadání su -c id knoppix se Tě to neptalo na heslo? A co říká echo $? po dokončení tohoto příkazu?

9.5.2009 13:46 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Je to live cd instant-gridu:

instant-grid.de/files/instant-grid-1.1-release.iso

server:6 16:58:51 security $ ls -l /bin/su
-rwsr-xr-x 1 root root 27000 Dec  7  2006 /bin/su

heslo ma nepitalo

server:6 16:58:55 security $ echo $?
141
Fuky avatar 9.5.2009 14:16 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Aha, takže řádek je prázdný, protože se nestihlo nic vykonat 141 = SIGPIPE. A su - -c id knoppix vrací také chybový kód 141?

9.5.2009 15:21 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Ano tiez.


Fuky avatar 9.5.2009 15:40 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Třeba se dozvíme něco z výstupu:

$ strace su -c id knoppix

To vypadá na chybu v su/id, jako kdyby se neingnoroval SIGPIPE, který měl být ignorován. Zkusím si stáhnout to CD a pustit si to u sebe.

Asi bude dobré, když založíš nový dotaz, proč su -c id končí s touhle chybou, třeba něco někoho napadne.

9.5.2009 15:49 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
Příloha:

Vypis z strace prikladam v prilohe.

Fuky avatar 9.5.2009 16:26 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

O něco výše jsi psal, že se Tě to neptalo na heslo, ale v strace je:

write(2, "Password: ", 10Password: )              = 10
read(0, "\n", 511)                      = 1
write(2, "su: Authentication failure\n", 27su: Authentication failure

9.5.2009 16:44 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
Příloha:

To je pravda, ked to zadam bez strace tak ma to heslo ani nepyta.

Cely prikaz ktory som zadal z strace je: strace su -c id knoppix 2>&1 | tee strace.txt

je zaujimave ze ked to zadam takto tak to pomne heslo chce.

Prikladam novy strace aj zo spravnym heslom, predtym som to iba odklepol.

Fuky avatar 9.5.2009 18:25 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
Co máš v .bashrc uživatele knoppix. Možná to nějak souvisí s Předčasné ukončení /bin/su...
9.5.2009 19:48 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

bashrc:

# /etc/bash.bashrc
[ -f /etc/profile ] && . /etc/profile

export CAS_SERVER_URL="https://172.24.127.1:8443/wsrf/services/CASService"                                                            
export CAS_SERVER_IDENTITY="/O=org/OU=Instant-Grid/OU=TestGrid/CN=host/server"
export CATALINA_BASE="/home/knoppix/ogce-portal-only/portal_deploy/apache-tomcat-5.5.27"
export CATALINA_HOME=$CATALINA_BASE
export CATALINA_TMPDIR=$CATALINA_BASE/temp

 

Nemyslim ze by to bolo zavysle na bashrc. pretoze to iste mi spravy ked sa chcem prepnut z boba na ineho usera.

 

9.5.2009 19:57 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Hlavne potrebujem vediet, ak by si mi mohol poradit ako to su spustit v skripte, ked mi vypisuje hlasku: su: must be run from a terminal

Fuky avatar 9.5.2009 20:51 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
Popiš podrobně co přesně potřebuješ, protože použít su ve skriptu jak se to pokoušíš dělat je z principu špatně. Ovšem na všechno existuje správné řešení.
9.5.2009 21:09 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

Potrebujem pod jednotlivimi uzivatelmi spustat prikaz ktory si vyziada zo servera novy certifikat, pritom sa tam autentifikuje proxy certifikatom ktory je ulozeny v tempe s nazvom x509_uxxx.proxy, kde xxx je uid daneho usera. Tento program nema ziadny prepinac ktorym by som explicitne urcil cestu k certifikatu, vzdy ho hlada v tempe v tomto formate podla toho aky uzivatel spusta tento prikaz. Tento prikaz potrebujem volat z php funkciou passthru. Je to akysi webovy wrap na tento komand, aby si uzivatel zadal iba meno a heslo a prikaz sa spusti z jeho pravami a vrati novy certifikat.

Fuky avatar 9.5.2009 23:10 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam
Příloha:

Uživateli www-data bych dal pomocí sudo (bez zadání hesla) možnost spouštět příkaz pro vrácení certifikátu pod daným uživatelem. Ale nejprve bych ověřil heslo pomocí následujícího skriptu v Pythonu (pwcheck.py):

#!/usr/bin/python

import sys
import spwd
import crypt

if (len(sys.argv) != 3):
    print "Usage: %s user password" % (sys.argv[0])
    sys.exit()

user = sys.argv[1]
password = sys.argv[2]
sp = spwd.getspnam(user).sp_pwd
salt = sp[0:sp.rfind("$")+1]
user_sp = crypt.crypt(password, salt)

if (user_sp == sp):
    print "OK"
    sys.exit(0)

print "ERROR"
sys.exit(1)

Skript musíš spustit pod uživatelem root, protože potřebuje přistupovat do /etc/shadow. To bych opět vyřešil pomocí sudo na pwcheck.py.

9.5.2009 23:36 tina
Rozbalit Rozbalit vše Re: sudo a heslo usera pod ktorym spustam

No chcel som sa vyhnut takymto hackom, ale ako vidim asi to nepojde. Dakujem za tvoj cas a hlavne trpezlivost, velmi si mi pomohol. Este raz VDAKA :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.