Linux'ta her küçük şey için 'sudo' yazmayı bırakmanın bir yolu var mı?


59

Birazdan PHP'nin biraz çalıştığını yapacağım ve RoR öğrenmek istiyorum, bu yüzden Virtual Mint 12'yi VirtualBox'a yükledim.

Anahtarın en sinir bozucu yönü, şimdiye kadar Linux izinleri ile uğraşıyordu. Görünüşe göre, Symfony2 tarball dosyasını Downloads dizininden kopyalayıp belge köküne kopyalayıp ayıklamak gibi bir şey yapamıyorum, sudo ile kök olarak poz vermeden.

Linux'a, tüm izinlerini açmadan, belirli dizinlere sınırsız erişim vermesini söylemenin kolay bir yolu var mı?


1
Birçok dağıtım, çeşitli sistem yardımcı programlarının yapılandırmasını düzenlemek için yetkilendirilmiş bir gruba sahip olacaktır . Kendini o gruba koy ve yeni bir kabuk aç.
dmckee

Belge kökünü bunun yerine Giriş dizinimdeki bir şeye yönlendirmek daha iyi olur mu?

3
'Sudo', yeni Linux kullanıcıları tarafından çok sık kullanılan ve kötüye kullanılan o saçma komutlardan biridir. Sık sık, web üzerinde üst üste 15 komutunun sudo kullanacağı öğreticileri göreceğim? Normal durumlarda, normal bir kullanıcı olarak oturum açarken özel izinlere ihtiyacınız olmamalıdır (önerilir). Her şeyi sudo kullandıkları bir şirketteydim. Yasaklamaya çalıştığımda (güvenlik nedeniyle) şikayet ettiler. Kriptik sudo config dosyasını inceledikten sonra, sistemi her zamanki gibi "köklendirmeme" izin veren bir kusur gördüm. Sudo son derece tehlikelidir!
Jeach,

Yanıtlar:


77

Aklıma iki seçenek geliyor:

  1. Kullanmak istediğiniz dizine sahip olun chown:

    sudo chown your_username directory 
    

    (kullanıcı adınızı kullanıcı adınızla ve dizininizi istediğiniz klasörle değiştirin.)

  2. Yapabileceğiniz diğer bir şey sürece kadar kökü olarak iştir ne yaptığınızı BİLMEK . Kök yapmak için:

    sudo -s
    

    ve sonra sudoher komuttan önce yazmak zorunda kalmadan her şeyi yapabilirsiniz .


“Yapabileceğin diğer şey, ne yaptığını bildiğin sürece kök olarak çalışmaktır. Kök yapmak için ...” - Şey, dağıtım ve güvenlik camiasının kullanıcılara öğretmeye çalıştığı en iyi uygulamayı geri alır. İlgili: "en az ayrıcalık ilkesi nedir" .

16

Genel olarak konuşursak, sistem çapında bir etkiye sahip olmadığınız sürece, daima kendi kullanıcınız olarak çalışın.

Web sunucunuza koymak istediğiniz dosyalar varsa, kendi kullanıcınız olarak çalışın ve ardından sudodosyaları dosya sisteminizin web sunumu alanına bırakmak için kullanın . Genellikle, bu bir yükleme betiği tarafından gerçekleştirilir ve sizin gibi sudo -u webmaster install-webserver-filesveya daha iyi bir şey sudo -u webmaster git update(veya seçtiğiniz sürüm kontrol sistemini) çalıştırırsınız.

Bir geliştirme sunucusunda çalışıyorsanız ve dosyalarınızın anında erişilebilir olmasını istiyorsanız, web sunucusu alanında bir dizin oluşturun ve bu belgenin size ait veya en azından sizin tarafınızdan yazılabilir olmasını sağlayın. Bir kerelik operasyondan sonra ( sudo chown …veya sudo -u webmaster setfacl …), günlük operasyonlar için daha yüksek ayrıcalıklara ihtiyacınız olmayacak.

Bazen, birden fazla kullanıcının bir dizine yazmasına izin vermek veya aksi takdirde sahibi dışındaki birkaç kullanıcı veya birden fazla grup için farklı izinlere sahip olmak uygundur. Erişim kontrolü listeleri size bu yeteneği verir. Bir sunucudaki paylaşılan dizinin izinleri ile ilgili sorunlar veya Yedekleme betiği izni sorunu bölümüne bakın .


3

Evet, size süper kullanıcı erişim kontrolü sağlayan root olarak giriş yapın.
Aynı pencerede, yönetici kullanarak terminalinize giriş yapabilirsiniz.


Orijinal posterin sorusunu doğrudan cevapladığını anladım. Ancak bu, aşağı oyu açıklayan kötü bir tavsiye.
12'de bignose

Bunu Windows ile ilişkilendirdiğin gibi.
LeWoody

3

Her zaman benim ideolojim olmuştur, bir kullanıcı olarak Linux'ta istediğiniz her şeyi ve her şey için yapabileceğiniz her zaman vardır sudo. sistem yönetimi için sudoolduğu gibi, çoğu zaman diğer bazı kullanıcılar gibi bazı şeylerin yürütülmesine izin verir root. sudorutin görevlerimin ve ayrıcalıklarımın bir kısmını (root) kullanıcısı olarak başkalarına devretmek ve ayrıcalıkları gerekenden daha fazla yükseltmeksizin zamanımı ve diğerlerini daha iyi yönetmeye yardımcı olmak için daha büyük bir avantaj kaynağı olmuştur. Aynı zamanda, onların girişlerini hazırda tutmak, onlara güveniyorum.sudoersyapılandırma dosyası Bağlantılı olup olamayacağından emin değilim ama ne diyebilirim ki, sudo size kimin ve ne kadar güvenilir ayrıcalıklarla neler yapabilecekleri konusunda daha iyi bir güvenlik perspektifi veriyor. Bir şeyler ters giderse bile, onlar sorumludur. (Suçluları bulmak için her zaman sudoers log bilgisi ile sinsi bir şeftali yapabilirim). Adamlarım Linux ortamındaki yükseltilmiş ayrıcalıklarla yapmak istedikleri her şey için sudo yazmaları gerektiği yönündeki endişelerini her zaman dile getirmişlerdir. Burada da aynı soruyu buldum.

Çözümleri ve alternatifleri bulma arayışımı görmek için, Kaynak Tabanlı Erişim Kontrollerine rastladım, RBACancak bunun Solarisgibi araçların olduğu başka bir macera diyarında pfexectanıştım. sistem yöneticilerinin ayrıcalıklarıyla ne yapmak isteyeceklerinin vicdanı ve uyanıklığı üzerine.

RBAC ve Linux dünyasındaki uygulamalarının mevcut çözümleri göz önüne alındığında, rastladım

SELinux http://www.ibm.com/developerworks/linux/library/l-rbac-selinux/

grsecurity http://en.wikipedia.org/wiki/Grsecurity

ve başka uygulamalar olsa da, onları listenin en üst sırasına koyardım. RBAC'ı uygulamak, özellikle çok sayıda kullanıcı olduğunda bir kuruluşta çok çalışmaktır. RBAC, homojen ortamlarda daha büyük bir çözüm sunar. Bununla birlikte, ağda heterojen Unix kurulumları olduğunda ve kullanıcı veri tabanı yaygın olduğunda, bu muhtemelen başarısız olacaktır. SELinux Solaris'te ölçeklendirilemediğinden / uygulanmadığından ve RBAC / pfexec araçları Linux'ta uygulanmaz. Tek bir şey yapmak için farklı yaklaşımlar var. Örneğin: http://blogs.oracle.com/darren/entry/opensolaris_rbac_vs_sudo_howto

Ağ genelindeki farklı kurulumlar bu yaklaşımı desteklemeyebilir (ancak openrbac, sudoer'lar gibi tek bir ana bilgisayar yaklaşımı veya ağ / etki alanında merkezi yapılandırma yapamayanlar gibi ortak uygulama yaklaşımı olarak kabul edilebilir)./etc/sudoersBir değişiklik olduğunda her zaman senkronize edilmesi gerekir. Dahası, sudoers dosyasını çalıştırırken bilgi bankası gereksinimi vardır, sudoers yapılandırmasının politika dilini herhangi bir hata yapmamak ve herhangi bir hibeye izin vermemek gerekir. RBAC bir dereceye kadar merkezi bir yaklaşım sunabilir, ancak güvenlik profilleri ortak olsa da, verilen rolden bir kullanıcının eklenmesi / çıkarılması tek bir yerden (kullanıcı / şifre / grup bilgilerinin saklandığı yer) yapılabilir. LDAP, NIS veya AD gibi etki alanı). Bu aynı zamanda, smexec, smmultiuser, az olma gibi RBAC veritabanında çalışması için gereken komutları anlamayı da gerektirir.

Sudo, burada setuid özelliklerini sunan tüm Unix / benzeri platformlarda çalıştığı için daha fazla platformlar arası yaklaşım sunabilir. Her ikisi de sudove RBACroot dışı kullanıcılara rootparolanın kendisine verilmesiyle yapılabilecek bazı ayrıcalıkları vermeyi başar. Sudo, komutları çalıştırırken kullanılabilecek komut satırı argümanlarına daha ince / ayrıntılı bir yaklaşım verebilir ve argümanlarla hangi komutun yükseltilmiş ayrıcalıklarla çalıştırılabileceğini tamamen kısıtlayabilir. RBAC, yüklü komutları veya ikili dosyaları kullanmakla sınırlı olabilir, ancak komut satırı argümanları üzerinde herhangi bir kontrolü yoktur. Denetim RBAC ortamında çok daha iyi ve yerleşik iken,sudo, yapılandırmaya ve ayrıca alınan güvenlik kısıtlamalarına bağlıdır (kabuğu vermemek ve özellikle de ana bilgisayarların diğer ana bilgisayarlarına sorunsuzca giriş yapmasına izin verilir). Bunlar, aklıma gelebilecek farklılıklardan sadece birkaçı ve şahsen ben Sudo kullanma konusunda sudo kullanma eğilimim var. Tüm problemler RBAC tarafından daha iyi bir sudo avantajı için ele alınana kadar, sudo'nun bunun için gideceğini sanmıyorum.


1

Çalıştığınız yerin kök dizinini keserdim, böylece tam erişime sahip olursunuz.

Gem'i her taktığınızda sudo yazmak zorunda kalmaktan kaçınmak için, aşağıdaki makaleyi izleyin: http://forums.site5.com/showthread.php?t=11954

Ayrıca Ruby ve Rails'in sürümlerini yönetmek için RVM'yi kurmanızı şiddetle tavsiye ederim. http://beginrescueend.com/

Uygulamanızı geliştirmek için kullandığınızdan farklı sürümleri kullanmak üzere dağıtmak istediğiniz ana bilgisayarı bulduğunuzda hayatınız çok daha kolay olacaktır.


Rvm hakkında bilgim vardı, ama forum bağlantısı için teşekkürler.
Başlıca Üretimler,

0

Komutu çalıştır.

sudo su root

Artık komutları root kullanıcısı olarak çalıştırabileceksiniz. Dikkatli ol! Çalışan herhangi bir komut root kullanıcısı olacaktır. Dikkatli değilseniz, işleri ciddi şekilde karıştırabilirsiniz.

Veya, kullanıcının dosyaları kaydetmesine ve düzenlemesine izin vermek için dizinin izinlerini değiştirirsiniz.


4
Neden sadece değil sudo -s?
sarnold

1
Veya sudo -ibu giriş kabuğu olarak taklit ettiği gibi. Yerel bir yerel kök girişine bash veya sudo ile başka bir kabuk çalıştırmaktan biraz daha yakın olabilir.
Bastian Ebeling

1
neden sadece su? Sudo'ya bu saplantı nedir? Suya ihtiyacın yok. Hiç.
orion

2
afaik, sadece suroot şifresi bilinmiyorsa kullanmak mümkün değildir . sudoer'lara bir kullanıcı eklemek ve koşmak sudo sukullanıcının mevcut ve bilinen kullanıcı şifresini yükseltmek için kullanmasına izin veriyor
Luke

0

/ Etc / passwd dosyasını düzenleyin ve kullanıcı ve grup kimliklerini kullanıcı kimliği 0 ve kullanıcı kimliği 0 olarak değiştirerek kullanıcı "kullanıcı adınız" için kök izinleri verin:

kullaniciadiniz: 0: 0 :: / home / kullaniciadiniz: / bin / sh


2
Güvenlik kabuslarını önermeyin! Bu en kötü türden bir uygulamadır.
countermode

Hangi ı diğer kullanıcı hesaplarına sahip ve yok benim Ahududu pi için bu çözümü kullanıyorum onun benim ev ağına bağlı
Ufuk Özkanlı

0

Diğer cevapların da belirttiği gibi, en temiz çözüm, erişmeniz gereken dosya ve dizinlerin sahipliğini değiştirmektir. Alternatif olarak yeni bir adanmış grup oluşturabilir, dosyaların ve dizinlerin grup sahipliğini bu gruba değiştirebilir ve bu dosyalar ve dizinler için grup yazma iznini ayarlayabilirsiniz. Son olarak, dizinlerdeki SGID bitini, yeni bir dosya oluşturursanız, içeren dizinin (yani adanmış grubun) grup sahipliğini devralacak şekilde ayarlayın.


-1

user @ server: ~ $ sudo
şifresi root [sudo] şifresi kullanıcı için:
Yeni UNIX şifresini girin : Yeni UNIX şifresini
tekrar yazın:
passwd: şifresi başarıyla güncellendi
user @ server: ~ $ su
Şifre:
root @ server: / home / user #

Bu "#" istemi güzel bir şey değil mi?

"Sudo" yu yalnızca bir kez kullanabilmek için kullanıyorum

user @ server: ~ $ su
Şifre:
root @ server: / home / kullanıcı #

Sunucunun ömrü boyunca.

Tekrar güvenli hale getirmek için,

root @ server: / home / user # exit
çıkış
user @ server: ~ $

Sysadmins bunu “sudo” un mollycoddling trendinin bir parçası olmadığı yıllar boyunca yapıyor.

Bunu yaptığınızda, benim için değil, özen göstermek sizin sorumluluğunuzdadır.

Ian


Ne bir keman. Dene sudo -s.
Yapılan
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.