Chmod -u ne yapıyor?


19

Kazara koştum chmod -u filenameve sahip olduğum tüm izinleri kaldırdım filename.

Man sayfası bir -useçeneğe başvurmuyor. Deneme Tüm izinleri kaldırdığı sonucuna ulaşabildim, ancak sadece okuma ve yürütme erişimi sağlayarak yazma erişimini olduğu gibi bıraktım.

Peki bu tam olarak ne yapıyor?


Yukarıdaki sonucum yanlış, şimdi yaptığı şeyin sahibinin sahip olduğu izinleri tüm kategorilerden kaldırmak olduğunu düşünüyorum.


Ben davranışı benzer olduğunu düşünüyorum a=usadece öyle, -yerine =ve a, örneğin, sadece onunla olabildiğince bırakılabilir a+x.


6
Page1 kılavuz sayfasında olmayan temel bir soru sorduğunuz için.

1
"Sembolik modun biçimi olduğunu [ugoa...][[-+=][perms...]...], nerede perms kümesinden ya sıfır ya da daha fazla harf olduğu rwxXst, ya da kümesinden tek bir harfleugo (GNU chmod adam sayfası)"; POSIX oldukça belirsizdir, ancak aynı etki için bir "permkopi" üretimi tanımlar.
Michael Homer

1
@MichaelHomer Ne yaptığını söylemiyor.
y_wc

1
@y_wc "Bu harflerden biri veya daha fazlası yerine, ugo harflerinden tam olarak birini belirtebilirsiniz : dosyanın sahibi olan kullanıcıya verilen izinler ( u), dosya grubunun üyesi olan diğer kullanıcılara verilen izinler ( g) ve önceki iki kategoriden hiçbirinde olmayan kullanıcılara verilen izinler ( o). "
Michael Homer

1
Evet, okudum. Ne yaptığından bahsettiğini görmüyorum. Bu harflerden birini belirtebileceğim diyor. Örneğin u, dosyanın sahibi olan kullanıcıya verilen izinleri belirteceğim. Ama ne yaptığını söylemiyor. Belirtmek ne anlama geliyor?
y_wc

Yanıtlar:


19

Bu bir seçenek değil, izinleri belirtmenin standart (ancak nadir) bir yoludur. O (kaldırmak demektir -dosya sahibi (ilişkili) izinleri ubütün kullanıcılar (hayır önceki için,) u, gya da o). Bu , kılavuz sayfasında belgelenmiştir.

GNU chmod'un man sayfası bunu şöyle belgelemektedir:

Sembolik modun biçimi olduğunu [ugoa...][[-+=][perms...]...], nerede permskümesinden ya sıfır ya da daha fazla harf olduğu rwxXstveya set tek harfli ugo

ve sonra

Bu harflerden biri veya daha fazlası yerine, ugo harflerinden tam olarak birini belirtebilirsiniz: dosyanın sahibi olan kullanıcıya verilen izinler ( u), dosya grubunun ( g) üyesi olan diğer kullanıcılara verilen izinler ve önceki iki kategoriden hiçbirinde olmayan kullanıcılara verilen izinler ( o)

Bu nedenle , herkes için ( ) için şu anda etkin olan izinleri -u( -) kaldırmak ( geçerli umask'ı onurlandırmak dışında ueşdeğer olarak a-u) anlamına gelir. Bu genellikle çok faydalı chmod +uolmayacak olsa da , benzer şekilde, örneğin, özyinelemeli olarak çalışırken izinleri sahibinden başkalarına kopyalamak bazen benzer olacaktır.


Var da POSIX'deki belgelenmiştir , ama daha belirsiz bir tanımlanmış: izin özellikleri genel olarak mevcuttur who[+-=]perms(ya da birçoğuna), ve bu etkisinin daha belirtilmiştir:

Permkopi sembolleri u, gve osırasıyla dosya modu bitlerinin kullanıcı, grup ve diğer bölümleriyle ilişkili geçerli izinleri temsil etmelidir. Bu bölümün geri kalanı permiçin, terminal olmayanlara permve permcopydilbilgisine atıfta bulunur .

ve sonra

-

... Kim belirtilmezse, çağıran sürecin dosya modu oluşturma maskesinde karşılık gelen bitlere sahip olanlar hariç, sahip, grup ve diğer izinler için perm tarafından temsil edilen dosya modu bitleri temizlenir.


Teşekkürler, Michael. POSIX belgeleri ikna edicidir. Ancak GNU ... Lütfen benim bu yoruma bakın . "Peki" den sonra gelenlerin nasıl öncekinden sonra geldiğini göremiyorum. permsolabilirim u. Evet, uizinleri veya sahibini belirtir. Ancak -u, sahibin (modül umask) izinlerini tüm kullanıcılardan kaldıran bu nasıl olur ?
y_wc

Çünkü -her zaman böyle yapar: belirtilen izinleri belirtilen kullanıcı sınıfından kaldırır. -utam olarak benzer -wveya (daha yakın)ugo-u .
Michael Homer

Buraya dokümantasyonu tartışmaya gelmediğimi ve neler olduğunu anladığım için mutlu olduğumu söylemek üzereydim, ancak dokümanlar tıkladı. Teşekkürler.
y_wc

Başka bir chmoddokümantasyon sorusuyla ilgili sorun çıkarabilir miyim ? Bunun ayrı bir soruyu hak ettiğini düşünüyorsanız bana bildirin. "ve = bunların eklenmesine neden olur ve bir dizinin belirtilmemiş ayarlı kullanıcı ve grup kimliği bitlerinin etkilenmemesi dışında sözü edilmeyen bitlerin kaldırılmasına neden olur." Bana göre, sahibi yalnızca yazma erişimine sahip bir dizin göz önüne alındığında, chmod u=rx directorysahibinin izinlerini olarak bırakır rwx. Ama olan bu değil, onlar beklenen oluyor r-x. Bir şeyi yanlış mı yorumluyorum?
y_wc

sEğer setuid / setgid ( ) bitlerinden bahsetmezseniz yalnız kalırsınız ve belirtmediğiniz herhangi bir şey kaldırılır.
Michael Homer

2

Cevap /unix//a/429424/255251 adresine biraz benziyor .

chmod -u file_name

tüm izinleri kaldırmaz, ancak umaskdeğeri dikkate alır .

umask
0022
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
chmod -u file
chmod: file: new permissions are ----w--w-, not ---------
ls -l file
-----w--w- 1 user user 4 Feb 25 15:17 file

Şimdi umask değerini değiştirin

umask 777
chmod 777 file
chmod -u file
chmod: file: new permissions are rwxrwxrwx, not ---------
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file

2
Öğretici, bilmek iyi ve çok yararlı, ancak çok ilgili olmasına rağmen , bunun gerçekten sorun olmadığını düşünüyorum . Teşekkürler.
y_wc
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.