| 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 -
-dEV_DİZİNİbelirtilmemişseÜST_DİZİNsistem için altında kullanıcı ev dizinin oluşturulacağı dizindir.-mseçeneği belirtilmezseÜST_DİZİNsistemde mevcut olmalıdır.Bu seçenek belirtilmezse,
/etc/default/useraddiçindekiHOMEdeğişkeninde belirtilen üst dizin veya öntanımlı olarak/homekullanılır. -
-c,--commentAÇIKLAMA -
Yeni kullanıcının
/etc/passwddosyasında adı-soyadı olarak kullanılacak dizgeyi belirler. -
-d,--home-dirEV_DİZİNİ -
Oluşturulan yeni kullanıcının sisteme girişte kullanacağı ev dizinini belirler. Öntanımlı olarak,
KULLANICIismiÜ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-Mseç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,--expiredateSON_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,--inactiveASKI_SÜRESİ -
Kullanıcı parolasının
SON_TARİHten 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ğer0olarak belirtilirse, parolanın son kullanma tarihinde hesap kapatılır.-1değeri verilirse, bu özellik iptal edilmiş olur.ASKI_SÜRESİbelirtilmezse,/etc/default/useradddosyasındakiINACTIVEdeğişkeninde belirtilen değer veya öntanımlı olarak-1kullanılır. -
-g,--gidGRUP -
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.defsiçindekiUSERGROUPS_ENABdeğişkenine bağlı olur. Bu değişken "yes" olarak ayarlanırsa (veya komut satırında-U/--user-groupbelirtilirse), 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-groupbelirtilirse), yeni kullanıcının birincil grup kimliği/etc/default/useraddiçindekiGROUPdeğişkeni tarafından belirtilen değer veya öntanımlı olarak 100 olur. -
-G,--groupsGRUP1[,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,
-gile 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
İSKELETdizinin yerini belirtir.Bu seçenek yalnızca
-m/--create-homeseçeneği ile birlikte geçerlidir.Bu seçenek belirtilmezse,
/etc/default/useraddiçindekiSKELdeğişkeni tarafından belirtilen dizin veya öntanımlı olarak/etc/skeldizini kullanılır.Mümkünse, ACL'ler ve genişletilmiş nitelikler de kopyalanır.
-
-K,--keyANAHTAR=DEĞER -
/etc/login.defsöntanımlılarını (UID_MIN,UID_MAX,UMASK,PASS_MAX_DAYSve 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=-1seçeneği kullanılabilir. Birden fazla-Kseç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=499gibi) henüz çalışmamaktadır. -
-l,--no-log-init -
Kullanıcı
lastlogvefaillogveritabanlarına eklenmez.Öntanımlı olarak, kullanıcının
lastlogvefaillogveritabanları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/useraddiçindekiLOG_INITdeğişkenine "no" atanmışsa kullanıcılastlogvefaillogveritabanlarına eklenmez -
-m,--create-home -
Şayet sistemde kullanıcının ev dizini yok ise, yeni bir dizin oluşturulur. Eğer
–kseçeneği belirtilmişseİSKELETdizinin içeriği ev dizinine kopyalanır.–kseçeneği, sadece–mseçeneği ile birlikte kullanıldığında etkilidir.Öntanımlı olarak, seçenek belirtilmemişse ve
CREATE_HOMEetkin değilse dizin oluşturulmaz.Kullanıcının ev dizininin oluşturulduğu
ÜST_DİZİNmevcut 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.defsiç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ı
-gseçeneği ile belirtilen gruba veya/etc/default/useraddiçindekiGROUPdeğişkeni tarafından belirtilen gruba ekler.Öntanımlı davranış (
-g,-Nve-Useçenekleri belirtillmemişse)/etc/login.defsiçindeUSERGROUPS_ENABdeğ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
-useçeneği ile birlikte geçerlidir. -
-p,--passwordPAROLA -
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.
PAROLAsistemin parola politikasına uygun olmalıdır. -
-r,--system -
Sistem hesabı oluşturur.
Sistem kullanıcıları,
/etc/shadowiç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.defsiçinde tanımlananSYS_UID_MIN-SYS_UID_MAXaralığında seçilir./etc/login.defsiç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-mseçeneklerini de belirtmek gerekir. -
-R,--rootCHROOT_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,--prefixPREFIX_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,--shellKABUK -
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/useraddiçindekiSHELLdeğişkeni tarafından belirtilen öntanımlı oturum açma kabuğunun adı veya öntanımlı boş dizge atanır. -
-u,--uidKULL_KİMLİK -
Kullanıcı kimliğinin sayısal değeridir. Bu değer,
-oseç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,
-rseçeneğine veUID_MAXaçı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,-Nve-Useçenekleri belirtilmezse) login.defs(5) dosyasındaUSERGROUPS_ENABdeğişkeni ile tanımlanır. -
-Z,--selinux-userSE_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
–dseç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/useraddiçindekiHOMEdeğişkenini tanımlar. -
-e,--expiredateSON_TARİH -
Kullanıcı hesabının son kullanma tarihini belirler.
Bu seçenek
/etc/default/useraddiçindekiEXPIREdeğişkenini tanımlar. -
-f,--inactiveASKI_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/useraddiçindekiINACTIVEdeğişkenini tanımlar. -
-g,--gidGRUP -
Yeni bir kullanıcı için birincil grup adı veya grup kimliği (
/etc/login.defsiçindekiUSERGROUPS_ENABdeğişkenine "no" değeri atanırsa (veya komut satırında-N/--no-user-groupbelirtilirse). 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/useraddiçindekiGROUPdeğişkenini tanımlar. -
-s,--shellKABUK -
Yeni bir kullanıcının sisteme girişte kullanacağı kabuğun adı.
Bu seçenek
/etc/default/useraddiçindekiSHELLdeğ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_MINiçin öntanımlı değer1000,GID_MAXiçin60000'dir. -
HOME_MODE(tamsayı) -
Yeni ev dizinleri için kip. Belirtilmezse, kipi oluşturmak için
UMASKkullanılır.useradd ve newusers(8), oluşturdukları ev dizinin kipini ayarlamak için bu değeri kullanır.
-
LASTLOG_UID_MAX(tamsayı) -
lastloggirdilerini 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 birlastlogdosyası oluşturmaya gerek yoktur.Yapılandırmada
LASTLOG_UID_MAXseçeneğinin olmaması,lastloggirdilerini 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/useradddosyasındakiCREATE_MAIL_SPOOLdeğ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/groupiç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,
25iyidir.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/subuidvarsa, useradd ve newusers(8) komutları (kullanıcının zaten alt grup kimlikleri yoksa), her yeni kullanıcı içinSUB_GID_MINilaSUB_GID_MAXaralığındanSUB_GID_COUNTkullanılmayan grup kimliği tahsis eder.SUB_GID_MIN,SUB_GID_MAX,SUB_GID_COUNTiçin öntanımlı değerler sırasıyla100000,600100000ve65536'dır. -
SUB_UID_MIN(tamsayı),SUB_UID_MAX(tamsayı),SUB_UID_COUNT(tamsayı) -
/etc/subuidvarsa, useradd ve newusers(8) komutları (kullanıcının zaten alt grup kimlikleri yoksa), her yeni kullanıcı içinSUB_UID_MINilaSUB_UID_MAXaralığındanSUB_UID_COUNTkullanılmayan grup kimliği tahsis eder.SUB_UID_MIN,SUB_UID_MAX,SUB_UID_COUNTiçin öntanımlı değerler sırasıyla100000,600100000ve65536'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_MINiçin101,SYS_GID_MAXiç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_MINiçin101,SYS_UID_MAXiç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_MINiçin öntanımlı değer1000,UID_MAXiçin60000'dir. -
UMASK(tamsayı) -
Dosya kipi oluşturma maskesi bu değerle ilklendirilir. Belirtilmezse maske
022ile ilklendirilir.useradd(8) ve newusers(8) komutları
HOME_MODEtanı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_ENABtanımlıysa) kullanıcının GECOS satırı tarafından veya limits(5) dosyasındaKtanı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).yesatanı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ı.
ACTIONortam değişkene useradd ve kullanıcı isimliSUBJECTatanı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 (
-oolmaksızın) -
6 -
böyle bir grup yok
-
9 -
kullanıcı ismi zaten kullanılıyor
-
10 -
/etc/groupdosyası 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.