2016-03-20 33 views
1

ls kullanarak bir dizine erişmeye çalışıyorum ancakkullanıcısını yalnızca hduser için kullanabilirim, ancak kullanıcı avp için, sudo olmadan erişebilirim.sudo olmadan komut çalıştır

Kullanıcı dizini hduser için her zaman bu dizine ve tüm alt dizinlerine nasıl erişebilirim? İşte

dosya izinleri şunlardır:

[email protected]:~$ ll /media/avp/ 
total 24 
drwxr-xr--+ 4 root root 4096 Mar 20 12:50 ./ 
drwxr-xr-x 3 root root 4096 Aug 5 2015 ../ 
drwxrwxrwx 1 root root 12288 Mar 20 11:40 study/ 

[email protected]:~$ mkdir /media/avp/test 
mkdir: cannot create directory ‘/media/avp/test’: Permission denied 

[email protected]:~$ sudo mkdir /media/avp/test 
[email protected]:~$ ls /media/avp/test 
ls: cannot access /media/avp/test: Permission denied 

[email protected]:~$ ls /media/avp/ 
ls: cannot access /media/avp/study: Permission denied 
ls: cannot access /media/avp/test: Permission denied 
study test 

[email protected]:~$ sudo ls /media/avp/ 
study test 

Not: Bir şifre olmadan sudo komutu yürütülürken ilgili mesajları okudum ama dosya erişen komutlar için ilk etapta sudo komutunu kullanmak istemiyoruz (ör. ls, mkdir, vb.). Birkaç yıldır Ubuntu'yu kullanıyorum ama açıkça anlamak istediğim çok basit bir şeyi özlüyorum, bu yüzden burada bu soruyu soruyorum.

cevap

1

Linux'un ilkelerinden biri: hepsi bir dosyadır. Bu, süreç ve dizinlerin dosya olarak ele alınması gerektiği ve tüm dosyaların üç grup izinleri olduğu anlamına gelir: kullanıcı için, grup için ve geri kalan kullanıcılar için.

İzinler şunlardır: 1 yürütme, 4 okuma, yazma 2. Dolayısıyla, "644" iznine sahip bir dosya gördüğünüzde, kullanıcının bu dosyayı okuyabileceği ve yazabileceği anlamına gelir, bu arada grup ve kullanıcıların geri kalanı sadece okuyabilir. Bir dosya izinleri "777" (MS Windows yolu) görürseniz, bu, tüm insanların istedikleri şeyi bu dosya ile yapabildikleri anlamına gelir, aksine "000" iznine sahip bir dosya, bunun sahibi için bile "kilitlenir" dosya. demektir

-rw-r--r-- 1 manuel manuel 0 Mär 20 12:41 test.txt 

: "sahibi kullanıcı manuel okuyabilir ve yazabilir

$ touch test.txt 
$ ls -l test.txt 

gibi bir şey göreceksiniz: iznini değiştirmek için komut "chmod" Örneğin, yeni bir dosya oluşturmak olduğunu Bu dosya, grup manuel kullanıcı üyeleri sadece bu dosyayı okuyabilir ve geri kalanları sadece okuyabilir. "

Bu izinler nereden geldi? Onlar "umask" için tanımlanmıştır, varsayılan olarak umask, oluşturduğunuz veya kopyaladığınız yeni dosyalar için 644 ve "ls -la" yazarken "mkdir" komutuyla bir dir oluşturduğunuzda dirsekler için 755 "dosya" dizininin bir dizin olduğunu ve bir kullanıcı için erişilebilecek yürütme izinlerine gereksinim duyduğunu belirten bir satırın başlangıcında bir "d" görürsünüz: linux dizinlerinde yürütme izinleri olan dosyalar vardır.

Her zaman

Eğer komutla sisteme yeni bir kullanıcı eklemek:

$sudo adduser thomas 

komut otomatik ayrıca grup "thomas" ve ona/home dizininde bir dir oluşturur oluşturur. Apt-get, apache veya mysql veya postgresql'yi yüklediğinizde, bu işlemlerin üstesinden gelmek için benzersiz bir kullanıcı ve bir grup oluşturur, çünkü tüm işlemlerin tek bir yönetici kullanıcı için ele alındığı bir Windows benzeri yaklaşım açısından tehlikeli, eğer birisi bu kullanıcıyı tüm sistemin tam kontrolüne sahip olacaktı. Elbette Linux'ta kullanıcı "root", daha az sayıda işlemi mümkün olduğunca çalıştırmalıdır.

Sen ile sisteminizde mevcut gruplarını görebilirsiniz: o değil dosyanın çünkü can, "Thomas" az önce oluşturduğumuz dosya metin.txt düzenlemek istiyor kullanıcıyı varsayalım, Şimdi

$ cat /etc/group 

"manuel" kullanıcısına ve "manuel" grubuna aittir.Eğer komut chown ile dosyanın sahibini değiştirebilir, birkaç seçeneğiniz vardır:

şimdi dosya kullanıcı "thomas" "thomas" grubu ve sahip olduğu, ne var ki belki bir sorun
$ chown thomas.thomas test.txt 

dosyayı daha sonra düzenlemek istiyorsunuz ve şimdi yapamazsınız. Bunun yerine sahibini değiştirmek için, belki sadece dosyaya yazma izinleri eklemek gerekir:

$chmod 666 test.txt 

Şimdi kullanıcı Thomas de seni bu dosyadaki yazabilir ve. Ama şimdi 'un herhangi bir kullanıcısının dosyada yazabileceği problem var.

$sudo useradd -G manuel thomas 

artık "Thomas" grubunun "manuel üyesidir: grubuna kullanıcı eklemek için

$chmod 664 test.txt 

ve sonra: gerçek çözüm kullanıcıya ve gruba yazma izinlerini vermek "(bir kullanıcı birçok gruba üye olabilir) ve daha sonra dosyaya yazabilir, ancak diğer kullanıcılar yapamaz.

drwxr-xr--+ 4 root root 4096 Mar 20 12:50 ./ 

onu çalıştırma izni yok root ve kök grubu ve hduser sahibi olduğu "dosya" dir:

Artık dir anlıyoruz.

$ sudo chown -R hduser /media/avp/ 

veya grubu "root" için hduser ekleyebilir ama bu tehlikeli olurdu: Sen hduser için yinelemeli bütün dizini vermek gibi birçok şey yapabilirsiniz.

+1

Kapsamlı açıklama için teşekkürler! – avp

İlgili konular