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?
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:
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.conf
:
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.
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_REGEX
Ubuntu'da varsayılan ( /etc/adduser.conf
manpage'den):
^[a-z][-a-z0-9]*$
_
, @
ya .
.Sonuç olarak bir nokta .
bir Ubuntu kullanıcı adı kullanılabilir, NAME_REGEX
sadece 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 .
Bu komutu bir terminalde çalıştırın:
sudo nano /etc/adduser.conf
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
.
Basın Ctrl+ Xardından Y, daha sonra Enter.
Referanslar:
NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"
de /etc/adduser.conf
yaptı.
useradd
yerine: sudo useradd -m my.user
. Userify'de yaptığımız şey bu ve aynı zamanda çapraz platform.
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.
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ğerchown
hala noktalar kabul ederse, bu gösterimi kullanarak bir kullanıcı adı bir nokta içeriyorsa kırılacak betikler olacaktır.
chown
Noktaları ayırıcı olarak kabul etmeyi bırakana kadar geçerli varsayılanı (yerel konfigürasyonun üzerine yazılabilir) saklamanızı tavsiye ederim .
Ve chown
hala 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.