Bir kullanıcı adında bir noktaya sahip olmanın dezavantajları nelerdir?


27

Bir öğrenci ., kullanıcı adına bir noktaya ( ) sahip olmanın olumsuzluğunun ne olacağını sordu . Örneğin:john.doe

Bu, sistemi veya bu konudaki uygulamaları nasıl etkiler?

Yanıtlar:


38

POSIX bunu kullanıcı adlarıyla ilgili belirtir :

[...] IEEE Std 1003.1-2001’e uygun sistemler arasında taşınabilir olması için değer, taşınabilir dosya adı karakter kümesindeki karakterlerden oluşur. Tire, taşınabilir bir kullanıcı adının ilk karakteri olarak kullanılmamalıdır.

... taşınabilir dosya adı karakter kümesi :

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 . _ -

Ayrıca, dosyanın manpage durumu şöyledir/etc/adduser.confManpage simgesi :

   VALID NAMES
          adduser and addgroup enforce conformity to IEEE Std 1003.1-2001,
          which  allows  only  the following characters to appear in group
          and user names: letters, digits, underscores, periods, at  signs
          (@) and dashes. The name may not start with a dash. The "$" sign
          is allowed at the end of usernames (to conform to samba).

          An additional  check  can  be  adjusted  via  the  configuration
          parameter NAME_REGEX to enforce a local policy.

Ancak,

Her iki özellik de noktayı içeriyor gibi gözükse de, Ubuntu (en azından benim 13.04'te) izin vermedi gibi görünüyor:

⊳ sudo adduser as.df
adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX[_SYSTEM] configuration variable.  Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.

NAME_REGEXUbuntu'da varsayılan ( /etc/adduser.confmanpage'den):

^[a-z][-a-z0-9]*$
  • Küçük harf, sonra herhangi bir sayıdaki kısa çizgi, küçük harf veya rakamdan başlayarak. Hayır _, @ya ..

Yani,

Sonuç olarak bir nokta .bir Ubuntu kullanıcı adı kullanılabilir, NAME_REGEXsadece değişmelidir /etc/adduser.conf. POSIX'e uygun olduğunu görünce ., herhangi bir POSIX uyumlu programla kullanıcı adında bir adınızla ilgili herhangi bir sorun olmamalıdır .

Kullanıcı adlarında bir noktayı etkinleştirmek için

  1. Bu komutu bir terminalde çalıştırın:

    sudo nano /etc/adduser.conf
    
  2. Bu satırı bulun (dosyanın sonuna yakın)

    #NAME_REGEX="^[a-z][-a-z0-9]*$"
    

    ve ile değiştirin

    NAME_REGEX='^[a-z][-.a-z0-9]*$'
    

    -Braket ifadesinde ilk karakterin kalması gerektiğine dikkat edin [...], aksi takdirde bir aralık belirtiyormuş gibi davranılır a-z.

  3. Basın Ctrl+ Xardından Y, daha sonra Enter.


Referanslar:


@ vasa1 Buna dikkat çektiğiniz için teşekkür ederiz, düzeltildi.
kiri

2
Merhaba minerz029, gördüğüm kadarıyla mükemmel bir cevap olan cevabı kabul etmeden önce şüphesiz ki, Ubuntu'nun bu kararı vermesinin nedenlerini açıklayabilir misiniz?
Luis Alvarado

2
@LuisAlvarado: Daha sınırlı bir karakter kümesi kullanan bir kullanıcı adı bekleyen [POSIX dışı] programlarla uyumluluk için mümkündür. Ubuntu'nun varsayılan olarak izin verdiği karakterlerin neredeyse tüm programlarda çalışması neredeyse garanti edilir. Eklenti kullanıcı sayfası, varsayılan regex'i, kullanıcı adlarının daha güvenli tarafında olan "en tutucu" olarak tanımlar.
kiri

1
Bu benim için çalışır, ancak ekleyerek vermedi NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"de /etc/adduser.confyaptı.
Mario

1
Regex'i değiştirmeyin. Sadece çağrı useraddyerine: sudo useradd -m my.user. Userify'de yaptığımız şey bu ve aynı zamanda çapraz platform.
Jamieson Becker,

3

Kullanıcı adlarını okuyan uygulamalar, kullanıcı adınızın kurallara uyduğunu ve bu nedenle kullanıcı adınızı kullanamadığını varsayan bir regex kullanabilir.


Fakat eşit olarak, dağıtım tarafından yapılan varsayımlarla çarpışan varsayımlar yapabilirler, değil mi?
0xC0000022L

3

Marc Haber # 604242 numaralı Debian böcekinde olası bir dezavantajı açıklamaktadır (Varsayılan olarak kullanıcı adında noktalara izin ver):

Kullanıcı adında noktalara sahip olmak chown, kullanıcı adı ve grup adı arasındaki noktaları hala ayırıcı olarak kabul eden betiklerle ilgili bazı sorunlar yaratır . Eğer chownhala noktalar kabul ederse, bu gösterimi kullanarak bir kullanıcı adı bir nokta içeriyorsa kırılacak betikler olacaktır.

chownNoktaları ayırıcı olarak kabul etmeyi bırakana kadar geçerli varsayılanı (yerel konfigürasyonun üzerine yazılabilir) saklamanızı tavsiye ederim .

Ve chownhala belgelenmemiş olmasına rağmen noktayı ayırıcı olarak kabul eder. POSIX uyumluluğunun hüküm sürmesi gerektiğine katılıyorum ve aslında birçok sistemde nokta etkisi olmayan kullanıcı adlarını herhangi bir olumsuz etkisi olmadan kullanıyorum.

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.