USERADD(8) | Sistem Yönetim Komutları | USERADD(8) |
İSİM
useradd — yeni bir kullanıcı oluşturur veya öntanımlı yeni kullanıcı bilgilerini günceller
KULLANIM
useradd |
[seçenekler ] KULLANICI |
useradd |
-D |
useradd |
-D [seçenekler ] |
AÇIKLAMA
-D
seçeneği belitilmeden çağrıldığında, useradd komutu, komut satırında tanımlanan değerleri ve sistemdeki öntanımlı değerleri kullanarak yeni bir kullanıcı oluşturur. Komut satırında belirtilen seçeneklere bağlı olarak, gerekli sistem dosyalarına yeni kullanıcının bilgileri girilir, ev dizini oluşturulur, ilk dosyalar kopyalanır.
Öntanımlı olarak yeni kullanıcıya yeni bir grup oluşturulur (Bkz: -g
, -N
, -U
ve USERGROUPS_ENAB
).
SEÇENEKLER
Bu komuta verilebilecek seçenekler şunlardır:
-
--badname
-
Standartlara uymayan isimlere izin verilir.
-
-b
,--base-dir
ÜST_DİZİN
-
-d
EV_DİZİNİ
belirtilmemişseÜST_DİZİN
sistem için altında kullanıcı ev dizinin oluşturulacağı dizindir.-m
seçeneği belirtilmezseÜST_DİZİN
sistemde mevcut olmalıdır.Bu seçenek belirtilmezse,
/etc/default/useradd
içindekiHOME
değişkeninde belirtilen üst dizin veya öntanımlı olarak/home
kullanılır. -
-c
,--comment
AÇIKLAMA
-
Yeni kullanıcının
/etc/passwd
dosyasında adı-soyadı olarak kullanılacak dizgeyi belirler. -
-d
,--home-dir
EV_DİZİNİ
-
Oluşturulan yeni kullanıcının sisteme girişte kullanacağı ev dizinini belirler. Öntanımlı olarak,
KULLANICI
ismiÜST_DİZİN
'e eklenerek belirlenir ve kullanıcının sisteme giriş dizini olarak kullanılır.EV_DİZİNİ
sistemde mevcut değilse-M
seçeneği belirtilmediği takdirde oluşturulacaktır. -
-D
,--defaults
-
Aşağıdaki “Öntanımlı Değerlerin Değiştirilmesi” bölümüne bakınız.
-
-e
,--expiredate
SON_TARİH
-
Kullanıcı hesabının son kullanma tarihini belirler. Tarih
YYYY-AA-GG
(Y: yıl, A: ay, G: gün) şeklinde belirtilir. -
-f
,--inactive
ASKI_SÜRESİ
-
Kullanıcı parolasının
SON_TARİH
ten itibaren, bu hesabın tamamen devre dışı bırakıacağı tarihe kadar geçecek olan sürenin gün cinsinden değerini belirler. Bu değer0
olarak belirtilirse, parolanın son kullanma tarihinde hesap kapatılır.-1
değeri verilirse, bu özellik iptal edilmiş olur.ASKI_SÜRESİ
belirtilmezse,/etc/default/useradd
dosyasındakiINACTIVE
değişkeninde belirtilen değer veya öntanımlı olarak-1
kullanılır. -
-g
,--gid
GRUP
-
Kullanıcının üyesi olacağı birincil grubun adı veya numarası belirtilir. Olmayan gruba ait bir isim veya numara kullanılamaz.
Belirtilmezse, davranış
/etc/login.defs
içindekiUSERGROUPS_ENAB
değişkenine bağlı olur. Bu değişken "yes
" olarak ayarlanırsa (veya komut satırında-U
/--user-group
belirtilirse), kullanıcı için oturum açma adıyla aynı ada sahip bir grup oluşturulur. Değişkene "no
" değeri atanırsa (veya komut satırında-N
/--no-user-group
belirtilirse), yeni kullanıcının birincil grup kimliği/etc/default/useradd
içindekiGROUP
değişkeni tarafından belirtilen değer veya öntanımlı olarak 100 olur. -
-G
,--groups
GRUP1
[,GRUP2
[,...[GRUPN
]]] -
Kullanıcının üyesi olacağı ek gruplar belirtilir. Her grup, diğerinden virgül ile ayrılır, arada boşluk bırakılmaz. Burada tanımlanan gruplar,
-g
ile tanımlanan grubun kısıtlamalarına tabidir. Öntanımlı olarak, kullanıcının sadece birincil grubunun üyesi olduğu varsayılır. -
-h
,--help
-
Yardım metnini gösterir ve çıkar.
-
-k
,--skel
İSKELET
-
Kullanıcının ev dizini oluşturulurken, ev dizinine kopyalanacak dosyaları ve dizinleri içeren
İSKELET
dizinin yerini belirtir.Bu seçenek yalnızca
-m
/--create-home
seçeneği ile birlikte geçerlidir.Bu seçenek belirtilmezse,
/etc/default/useradd
içindekiSKEL
değişkeni tarafından belirtilen dizin veya öntanımlı olarak/etc/skel
dizini kullanılır.Mümkünse, ACL'ler ve genişletilmiş nitelikler de kopyalanır.
-
-K
,--key
ANAHTAR=DEĞER
-
/etc/login.defs
öntanımlılarını (UID_MIN
,UID_MAX
,UMASK
,PASS_MAX_DAYS
ve diğerleri) geçersiz kılar.Örneğin, parola daha oluşturulmamışken bile, parola eskimesini devre dışı bırakarak sistem hesabı oluştururken
-K PASS_MAX_DAYS=-1
seçeneği kullanılabilir. Birden fazla-K
seçeneği belirtilebilir. Örnek:-K UID_MIN=100 -K UID_MAX=499
Dikkat: Birden fazla anahtar-değer çifti belirtilmesi (
-K UID_MIN=10,UID_MAX=499
gibi) henüz çalışmamaktadır. -
-l
,--no-log-init
-
Kullanıcı
lastlog
vefaillog
veritabanlarına eklenmez.Öntanımlı olarak, kullanıcının
lastlog
vefaillog
veritabanlarındaki girdileri, daha önce silinmiş bir kullanıcıdan gelen girdinin yeniden kullanılmasını önlemek için sıfırlanır.Bu seçenek belirtilmezse,
/etc/default/useradd
içindekiLOG_INIT
değişkenine "no
" atanmışsa kullanıcılastlog
vefaillog
veritabanlarına eklenmez -
-m
,--create-home
-
Şayet sistemde kullanıcının ev dizini yok ise, yeni bir dizin oluşturulur. Eğer
–k
seçeneği belirtilmişseİSKELET
dizinin içeriği ev dizinine kopyalanır.–k
seçeneği, sadece–m
seçeneği ile birlikte kullanıldığında etkilidir.Öntanımlı olarak, seçenek belirtilmemişse ve
CREATE_HOME
etkin değilse dizin oluşturulmaz.Kullanıcının ev dizininin oluşturulduğu
ÜST_DİZİN
mevcut olmalı ve uygun SELinux bağlamına ve izinlerine sahip olmalıdır. Aksi takdirde kullanıcının ev dizini oluşturulamaz veya erişilemez. -
-M
,---no-create-home
-
/etc/login.defs
içinde tanımlı bütün sistemi kapsayan ayarlarda ev dizininin yaratılması gerektiği (CREATE_HOME=yes
) belirtilmiş olsa bile, kullanıcı ev dizini oluşturulmaz. -
-N
,--no-user-group
-
Oluşturulan yeni kullanıcı ile aynı adlı yeni bir grup oluşturulmaz fakat kullanıcıyı
-g
seçeneği ile belirtilen gruba veya/etc/default/useradd
içindekiGROUP
değişkeni tarafından belirtilen gruba ekler.Öntanımlı davranış (
-g
,-N
ve-U
seçenekleri belirtillmemişse)/etc/login.defs
içindeUSERGROUPS_ENAB
değişkeni tarafından tanımanmıştır. -
-o
,--non-unique
-
Kullanıcı kimliği eşsiz olmayan bir kullanıcı oluşturmaya izin verir.
Bu seçenek yallnızca
-u
seçeneği ile birlikte geçerlidir. -
-p
,--password
PAROLA
-
crypt(3) tarafından döndürülen gibi şifreli parola. Parolanın devre dışı bırakılması öntanımlıdır.
Bilginize
Süreçleri listeleyen kullanıcılara parola (veya şifreli parola) görünür olacağından bu seçeneğin kullanımı önerilmemektedir.
PAROLA
sistemin parola politikasına uygun olmalıdır. -
-r
,--system
-
Sistem hesabı oluşturur.
Sistem kullanıcıları,
/etc/shadow
içinde hiçbir eskime bilgisi olmaksızın oluşturulur ve bunların sayısal kimlikleri,UID_MIN-UID_MAX
(ve GID karşılıkları) yerine/etc/login.defs
içinde tanımlananSYS_UID_MIN-SYS_UID_MAX
aralığında seçilir./etc/login.defs
içindeki (CREATE_HOME
) öntanımlılardan bağımsız olarak böyle bir kullanıcı için bir ev dizini oluşturulmayacağı unutulmamalıdır. Bir sistem hesabı için bir ev dizini oluşturulması isteniyorsa-m
seçeneklerini de belirtmek gerekir. -
-R
,--root
CHROOT_DİZİNİ
-
Değişiklikleri
CHROOT_DİZİNİ
nde uygular veCHROOT_DİZİNİ
ndeki yapılandırma dosyaları kullanılır. -
-P
,--prefix
PREFIX_DİZİNİ
-
Değişiklikleri
PREFIX_DİZİNİ
nde uygular vePREFIX_DİZİNİ
ndeki yapılandırma dosyaları kullanılır. Bu seçenek chroot yapmaz ve çapraz derlemeye hazırlık için tasarlanmamıştır. Bazı sınırlamalar: NIS ve LDAP kullanıcı ve grupları doğrulanmaz. PAM kimlik kanıtlaması konak dosyalarını kulllanılır. SELinux desteklenmez. -
-s
,--shell
KABUK
-
Kullanıcının sisteme girişte kullanacağı kabuğun adıdır. Öntanımlı olarak bu değer boş bırakılır, böylece
/etc/default/useradd
içindekiSHELL
değişkeni tarafından belirtilen öntanımlı oturum açma kabuğunun adı veya öntanımlı boş dizge atanır. -
-u
,--uid
KULL_KİMLİK
-
Kullanıcı kimliğinin sayısal değeridir. Bu değer,
-o
seçeneği kullanılmadığı sürece, eşsiz olmalıdır. Değer mutlaka pozitif bir sayı olmalıdır. Öntanımlı olarak, diğer kullanıcıların numaralarından ve UID_MIN’den büyük, en küçük numara kullanılır.Ayrıca,
-r
seçeneğine veUID_MAX
açıklamasına da bakılabilir. -
-U
,--user-group
-
Kulllanıcı ile aynı isimde bir grup oluşturulur ve kullanıcı bu gruba eklenir.
Öntanımlı davranış (
-g
,-N
ve-U
seçenekleri belirtilmezse) login.defs(5) dosyasındaUSERGROUPS_ENAB
değişkeni ile tanımlanır. -
-Z
,--selinux-user
SE_KULL
-
Kullanıcı için SELinux kullanıcısını belirler. Normalde bu alan boş bırakarak öntanımlı SELinux kullanıcısını sistemin seçmesi sağlanır.
Öntanımlı Değerlerin Değiştirilmesi
-D
seçeneği ile birlikte kullanıldığı zaman, useradd geçerli öntanımlı değerleri görüntüler. -D
diğer seçeneklerle birlikte belirtildiğinde useradd öntanımlı değerleri, seçeneklerde belirtilenler ile günceller. Öntanımlıları değiştiren seçenekler şunlardır:
-
-b
,--base-dir
ÜST_DİZİN
-
Yeni bir kullanıcının ev dizini için ilk dosyayolu önekini belirtir. Yeni bir hesap açarken
–d
seçeneği belirtilmemişse, yeni kullanıcının adıÜST_DİZİN
'in sonuna eklenerek kulanıcının ev dizinini oluşturur.Bu seçenek
/etc/default/useradd
içindekiHOME
değişkenini tanımlar. -
-e
,--expiredate
SON_TARİH
-
Kullanıcı hesabının son kullanma tarihini belirler.
Bu seçenek
/etc/default/useradd
içindekiEXPIRE
değişkenini tanımlar. -
-f
,--inactive
ASKI_SÜRESİ
-
Kullanıcı parolasının son kullanma tarihinden itibaren, bu hesabın tamamen kapatılacağı tarihe kadar geçecek olan sürenin gün cinsinden değeri.
Bu seçenek
/etc/default/useradd
içindekiINACTIVE
değişkenini tanımlar. -
-g
,--gid
GRUP
-
Yeni bir kullanıcı için birincil grup adı veya grup kimliği (
/etc/login.defs
içindekiUSERGROUPS_ENAB
değişkenine "no
" değeri atanırsa (veya komut satırında-N
/--no-user-group
belirtilirse). Belirtilen grup ismi sistemde mevcut olmalı ve sayısal grup kimliği için mevcut bir girdi bulunmalıdır.Bu seçenek
/etc/default/useradd
içindekiGROUP
değişkenini tanımlar. -
-s
,--shell
KABUK
-
Yeni bir kullanıcının sisteme girişte kullanacağı kabuğun adı.
Bu seçenek
/etc/default/useradd
içindekiSHELL
değişkenini tanımlar.
EK BİLGİ
/etc/skel
dizinindeki (veya /etc/default/useradd
dosyasında veya komut satırından belirtilen diğer iskelet dizinindeki) öntanımlı dosyaların değiştirilmesi sistem yöneticisinin sorumluluğundadır.
YETERSİZLİKLER
NIS vey LDAP grubuna kullanıcı ekleyemezsiniz. Bu ilgili sunucusu üzerinde yapılmalıdır.
Benzer şekilde, kullanıcı adı NIS veya LDAP gibi harici bir kullanıcı veritabanında zaten mevcutsa, useradd kullanıcı hesabı oluşturma isteğini reddeder.
Kullanıcı adları küçük harf veya alt çizgi ile başlamalı, ardından küçük harf, rakam, alt çizgi veya tire gelmelidir. Dolar işaretiyle bitebilir. Düzenli ifade olarak: [a-z_][a-z0-9_-]*[$]?
Kullanıcı adları en fazla 32 karakter uzunlukta olabilir.
YAPILANDIRMA
Bu aracın davranışını değiştirmek için kullanılabilecek /etc/login.defs
yapılandırma değişkenleri:
-
CREATE_HOME
(mantıksal) -
Yeni kullanıcılar için öntanımlı olarak ev dizini oluşturulmasının gerekip gerekmediğini belirtir.
Bu tanım sistem kullanıcıları için geçerli değildir ve komut satırında geçersiz kılınabilir.
-
GID_MAX
(tamsayı),GID_MIN
(tamsayı) -
groupadd(8), newusers(8) ve useradd tarafından normal grupların oluşturulması için kullanılan grup kimlikleri aralığı.
GID_MIN
için öntanımlı değer1000
,GID_MAX
için60000
'dir. -
HOME_MODE
(tamsayı) -
Yeni ev dizinleri için kip. Belirtilmezse, kipi oluşturmak için
UMASK
kullanılır.useradd ve newusers(8), oluşturdukları ev dizinin kipini ayarlamak için bu değeri kullanır.
-
LASTLOG_UID_MAX
(tamsayı) -
lastlog
girdilerini güncelleyecek en yüksek kullanıcı kimlik numarası. Daha yüksek kullanıcı kimlikleri genellikle uzak kullanıcı kimliği ve kimlik doğrulama hizmetleri tarafından izlendiğinden, onlar için çok büyük, seyrek birlastlog
dosyası oluşturmaya gerek yoktur.Yapılandırmada
LASTLOG_UID_MAX
seçeneğinin olmaması,lastlog
girdilerini yazacak kullanıcı kimliğinde sınırlama olmadığı anlamına gelir. -
MAIL_DIR
(dizge) -
Posta kuyruğu dizini. İlgili kullanıcı hesabı silindiğinde veya değişikliğe uğradığında posta kutusunu elden geçirmek için bu gereklidir. Tanımsızsa, derleme sırasında atanan öntanımlı değer kullanılır. Eposta kuyruğunun oluşturulup oluşturulmadığı
/etc/default/useradd
dosyasındakiCREATE_MAIL_SPOOL
değişkeni ile belirlenir. -
MAIL_FILE
(dizge) -
Kullanıcının eposta kuyruğu dosyalarının konumu ev dizinine göreli tanımlanır.
MAIL_DIR
ve MAIL_FILE
değişkenleri useradd, usermod ve userdel tarafından eposta kuyruğunun oluşturulması, taşınması ve silinmesi için kullanılır.
Bunlar ayrıca, MAIL_CHECK_ENAB
için yes
tanımlıysa, MAIL
ortam değişkenini tanımlamak için de kullanılır.
-
MAX_MEMBERS_PER_GROUP
(tamsayı) -
Grup girdisi başına azami üye sayısı. Bu değere ulaşıldığında,
/etc/group
içinde (aynı ad, aynı parola ve aynı grup kimliği ile) yeni bir grup girdisi (satır) başlatılırÖntanımlı değer 0 olup, grup üyelerinin sayısı için bir azami sınır olmadığı anlamına gelir.
Bu özellik (grup bölme) grup dosyasındaki satır uzunluğunu sınırlamayı sağlar. NIS grupları için satırların 1024 karakterden uzun olmamasından emin olunmasını sağlamak için yararlıdır.
Bir sınır belirtmek gerekliyse,
25
iyidir.Grup bölme (bu seçenek) tüm araçlarda desteklenmeyebilir (Shadow araçlarında bile). Gerçekten ihtiyaç duyulmadıkça bu seçenek kullanılmamalıdır.
-
PASS_MAX_DAYS
(tamsayı) -
Bir parolanın kullanılabileceği en fazla gün sayısı. Parola bundan daha eskiyse, parola değişikliği zorunlu olacaktır. Belirtilmezse,
-1
öntanımlıdır (kısıtlamayı devre dışı bırakır). -
PASS_MIN_DAYS
(tamsayı) -
Parola değişiklikleri arasında izin verilen en az gün sayısı. Bundan daha önce denenen herhangi bir şifre değişikliği reddedilecektir. Belirtilmezse,
0
öntanımlıdır (kısıtlamayı devre dışı bırakır). -
PASS_WARN_AGE
(tamsayı) -
Parolanın süresi dolmadan önce uyarı verilen gün sayısı. Sıfır, yalnızca son kullanma gününde uyarı verildiği anlamına gelir, negatif bir değer hiçbir uyarı verilmediği anlamına gelir. Belirtilmediği takdirde herhangi bir uyarı verilmeyecektir.
-
SUB_GID_MIN
(tamsayı),SUB_GID_MAX
(tamsayı),SUB_GID_COUNT
(tamsayı) -
/etc/subuid
varsa, useradd ve newusers(8) komutları (kullanıcının zaten alt grup kimlikleri yoksa), her yeni kullanıcı içinSUB_GID_MIN
ilaSUB_GID_MAX
aralığındanSUB_GID_COUNT
kullanılmayan grup kimliği tahsis eder.SUB_GID_MIN
,SUB_GID_MAX
,SUB_GID_COUNT
için öntanımlı değerler sırasıyla100000
,600100000
ve65536
'dır. -
SUB_UID_MIN
(tamsayı),SUB_UID_MAX
(tamsayı),SUB_UID_COUNT
(tamsayı) -
/etc/subuid
varsa, useradd ve newusers(8) komutları (kullanıcının zaten alt grup kimlikleri yoksa), her yeni kullanıcı içinSUB_UID_MIN
ilaSUB_UID_MAX
aralığındanSUB_UID_COUNT
kullanılmayan grup kimliği tahsis eder.SUB_UID_MIN
,SUB_UID_MAX
,SUB_UID_COUNT
için öntanımlı değerler sırasıyla100000
,600100000
ve65536
'dır. -
SYS_GID_MAX
(tamsayı),SYS_GID_MIN
(tamsayı) -
useradd, groupadd ve newusers tarafından sistem grupları oluşturulurken kullanılan grup kimlikleri aralığı.
SYS_GID_MIN
için101
,SYS_GID_MAX
içinGID_MIN
-1
öntanımlıdır. -
SYS_UID_MAX
(tamsayı),SYS_UID_MIN
(tamsayı) -
useradd ve newusers(8) komutları tarafından sistem kullanıcıları oluşturulurken kullanılan kullanıcı kimlikleri aralığı.
SYS_UID_MIN
için101
,SYS_UID_MAX
içinUID_MIN
-1
öntanımlıdır. -
UID_MAX
(tamsayı),UID_MIN
(tamsayı) -
useradd ve newusers(8) komutları tarafından normal kullanıcılar oluşturulurken kullanılan kullanıcı kimlikleri aralığı
UID_MIN
için öntanımlı değer1000
,UID_MAX
için60000
'dir. -
UMASK
(tamsayı) -
Dosya kipi oluşturma maskesi bu değerle ilklendirilir. Belirtilmezse maske
022
ile ilklendirilir.useradd(8) ve newusers(8) komutları
HOME_MODE
tanımlıysa ev dizininin kipini atamak için bu maskeyi kullanır.Ayrıca, login tarafından kullanıcının ilk umask'ını tanımlamakta kullanılır. Dikkat: Bu maske (
QUOTAS_ENAB
tanımlıysa) kullanıcının GECOS satırı tarafından veya limits(5) dosyasındaK
tanımlayıcıdaki sınır belirtimine göre yeniden tanımlanabilir. -
USERGROUPS_ENAB
(mantıksal) -
root olmayan kullanıcılar için, kullanıcı ve grup kimlikleri aynıyken kullanıcı ve grup adı da aynı ise umask grup bitlerinin, sahip bitleri ile aynı olmasını sağlar (örn,
022 -> 002, 077 -> 007
).yes
atanırsa, userdel(8) başka üyesi yoksa kullanıcını grubunu siler ve useradd(8) kullanıcı ile aynı isimde bir grup oluşturur.
İLGİLİ DOSYALAR
-
/etc/passwd
-
kullanıcı hesabı bilgileri
-
/etc/shadow
-
güvenli kullanıcı hesabı bilgileri
-
/etc/group
-
grup bilgileri
-
/etc/gshadow
-
güvenli grup bilgileri
-
/etc/default/useradd
-
hesap oluşumu için öntanımlı bilgiler
-
/etc/shadow-maint/useradd-pre.d/*
,/etc/shadow-maint/useradd-post.d/*
-
Kullanıcı eklenirken çalıştırılacak run-parts(8) dosyaları.
ACTION
ortam değişkene useradd ve kullanıcı isimliSUBJECT
atanır. useradd-pre.d, herhangi bir kullanıcı eklenmeden önce çalıştırılır. useradd-post.d, kullanıcı eklendikten sonra çalıştırılır. Bir komut dosyası sıfırdan farklı bir değerle çıkarsa, çalışma sonlandırılır. -
/etc/skel
-
öntanımlı dosyaları içeren dizin
-
/etc/subgid
-
Kullanıcı başına bağımlı grup kimlikler
-
/etc/subuid
-
Kullanıcı başına bağımlı kullanıcı kimlikler
-
/etc/login.defs
-
Shadow parola yapılandırması
ÇIKIŞ DURUMU
useradd komutu şu değerlerle çıkar:
-
0
-
başarılı
-
1
-
parola dosyası güncellenemiyor
-
2
-
geçersiz komut sözdizimi
-
3
-
seçenek girdisi geçersiz
-
4
-
kullanıcı kimliği zaten kullanılıyor (
-o
olmaksızın) -
6
-
böyle bir grup yok
-
9
-
kullanıcı ismi zaten kullanılıyor
-
10
-
/etc/group
dosyası güncellenemiyor -
12
-
ev dizini oluşturulamıyor
-
14
-
SELinux kullanıcı eşlemi güncellenemiyor
İLGİLİ BELGELER
chfn(1), chsh(1), passwd(1), crypt(3), groupadd(8), groupdel(8), groupmod(8), login.defs(5), newusers(8), subgid(5), subuid(5), userdel(8), usermod(8).
ÇEVİREN
* Özgün Belgenin Lisans ve Telif Hakkı bilgileri: * * Copyright 1991 - 1994, Julianne Frances Haugh * Copyright 1996 - 2000, Marek Michałkiewicz * Copyright 2000 - 2006, Tomasz Kłoczko * Copyright 2007 - 2012, Nicolas François * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Julianne F. Haugh nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE.