nnJ Linux tΤ@wnbPKX~A_hnJAzOaHLA PϥΪӭn֦Pv~aHڭ٥iHzL user/group Sv]wA ӳWdXPsն}oMשOb Linux ҤUAڭ̥iHzLܦh觋ӭϥΪ̯ϥΪtθ귽A ]A Q@Bbash 쪺 ulimit B٦SvAp umask C zLo|ʡAڭ̥iHWdXPϥΪ̪ϥθ귽Ct~AٰOotκzbܡHI NO root Cаݤ@UAF root ~AO_iHLtκzbH janɶqקKϥμƦrAbHpקϥΪ̬TOHoǧڭ̳onAAѪI |
zu@A۷n@NOyzbzաI]ӨtγOAbzA
åBҦ@Τ᪺bӽСAnzLAU~IҥHANnAѤ@Upzn@ӦADbաI
bz Linux DbɡAڭ̥AѤ@U Linux 쩳OpOC@ӨϥΪ̪I
Mڭ̵nJ Linux DɭԡAJOڭ̪bAO Linux Dä|{ѧAybW١zALȻ{ ID (ID NO@ոX)C ѩqȻ{ 0 P 1AҥHDƦrFܩbuOFḪeOЦӤwC ӧA ID PbNb /etc/passwd C
pGAgbWUL tarball ɮסA Ӥo{AbY᪺ɮפAɮ֦̪쳺MܡyƦrzH_ǧaHoSn_ǪA] Linux bܡALuu{ѥNAXӤwI쩳X ID OHٰOoڭ̦bĤLA C@ɮ׳㦳y֦HP֦sաzݩʶܡHSաCӵnJϥΪ̦ܤֳ|o ID A@ӬOϥΪ ID (User ID A² UID)B@ӬOs ID (Group ID A² GID)C
ɮצpPOL֦̻PsթOHNOQ UID P GID աIC@ɮ׳|ҿת֦ ID P֦s ID Aڭ̦nɮݩʪݨDɡAtη|̾ /etc/passwd P /etc/group eA UID / GID bPsզW٦AܥXӡIڭ̥iH@ӤpAAiH root vi /etc/passwd AMNA@먭ϥΪ̪ ID HK@ӸXAMAA@먭ؿUݬݭӱb֦ɮסAA|o{ɮת֦HܦF yƦrFzIo˥iHzѤFܡHӬݬݩUҤlG
# 1. ݤ@UAtθ̭S@ӦW dmtsai ΤH [root@www ~]# grep 'dmtsai' /etc/passwd dmtsai:x:503:504::/home/dmtsai:/bin/bash <==OoӱbI [root@www ~]# ll -d /home/dmtsai drwx------ 4 dmtsai dmtsai 4096 Feb 6 18:25 /home/dmtsai # @@@AϥΪ̪쥿O dmtsai I # 2. ק@UANڭ̪ dmtsai 503 UID אּ 2000 ݬݡG [root@www ~]# vi /etc/passwd ....(eٲ).... dmtsai:x:2000:504::/home/dmtsai:/bin/bash <==ק@USr鳡A 503 L [root@www ~]# ll -d /home/dmtsai drwx------ 4 503 dmtsai 4096 Feb 6 18:25 /home/dmtsai # ܮ`ȧaIܦ 503 FH]ɮץu|OƦrӤwI # ]ڭ̶çAҥHɭP 503 䤣bA]ܼƦrI # 3. OoN𫍧 2000 ^ӡI [root@www ~]# vi /etc/passwd ....(eٲ).... dmtsai:x:503:504::/home/dmtsai:/bin/bash <==^ӡI |
A@wnAѪOAWҤlȬOb UID PbʡAb@`B@ Linux DҤUAWʧ@iHKiA oO]tΤWwgܦhƳQإߦsbFAHNקtΤWYDZb UID ܥi|ɭPYǵ{ǵLkiAoNɭPtεLkQB@GC ]vDڡIҥHAAѤFAл֦^ /etc/passwd ̭ANƦr^ӳI
|ҨӻApGWճ̫@ӨBJSN 2000 ^쥻 UIDA dmtsai UnJɱNSkiJۤvaؿI ]L UID wgאּ 2000 AOLaؿ (/home/dmtsai) oOO 503 AѩvO 700 A ]LNLkiJ쥻aؿIO_D`YڡHLinux tΤWϥΪ̦pGݭnnJDHo shell ҨӤu@ɡALݭnpiOH ALnbqeQ tty1~tty7 ݾѪ login AÿJbPKX~nJC pGOzLܡAܤ֨ϥΪ̴NonDz ssh oӥ\F (AgAӽ)C AJbKXAtABzFOH
jPWpNoˡAҥHAnnJA Linux DɭԡA /etc/passwd P /etc/shadow NntŪ (o]Oܦh̷|NSbg /etc/passwd YhtG)AҥHOApGAnƥ Linux tΪbܡAoɮ״N@wݭnƥ~I
ѤWy{ڭ̤]DAϥΪ̱bӫD`nɮסA@ӬOzϥΪ UID/GID nѼƪ
/etc/passwd A@ӫhOMzKXƪ /etc/shadow oIoɮתeND`ȱoisաI
Uڭ̷|²檺гoɮסAԲӪiHѦ man 5 passwd man 5 shadow (1)C
oɮתcyOo˪GC@泣N@ӱbAXNNXӱbbAtΤI LݭnSOdNOAYܦhbӴNOtΥ`B@ҥnAڭ̥iH²٥LtαbA Ҧp bin, daemon, adm, nobody AoDZbФnHNLOI oɮתeIoˡG
bIJ Linux egIL Solaris t (1999 ~)Aɳԣ]MIѩyťzLinux WbV|ɭPtζVMIIҥHNN /etc/passwd WbRuѤU root PۤvΪ@bIGAqoͤơHNO....Is@u{vӺ@t @_@Iɨ@ӤIjanǰڡI[root@www ~]# head -n 4 /etc/passwd root:x:0:0:root:/root:/bin/bash <==@UU bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin |
ڭ̥Ӭݤ@UC Linux tγ|Ĥ@ANO root oӨtκz@nFA AiH㪺ݥXӡAC@ϥΡy:zj}A@CөNNAOOG
id d | ID ϥΪ̯S |
0 (tκz) | UID O 0 ɡANoӱbOytκzzI ҥHAnLbW٤]㦳 root vɡANӱb UID אּ 0 YiC o]NOA@tΤWtκzou root I LAܤijhӱb UID O 0 ա |
1~499 (tαb) | OdtΨϥΪ IDAF 0 ~AL UID vPSʨèS@Cw] 500
HUƦrtΧ@OdbuO@ӲߺDC ѩtΤWҰʪAȧƱϥθpvhB@A]Ʊϥ root hoǪAȡA ҥHڭ̴NonѳoǹB@{֦̱b~CoǨtαbq`OinJA ҥH~|ڭ̦bĤQ@쪺 /sbin/nologin oӯS shell sbC ھڨtαbѨӡAq`tαbSQϤءG 1~99G distributions ۦإߪtαbF 100~499GYϥΪ̦tαbݨDɡAiHϥΪb UIDC |
500~65535 (inJb) | @ϥΪ̥ΪCƹWAثe linux ֤ (2.6.x )wgiH䴩 4294967295 (2^32-1) oj UID XI |
ڭ̪Dܦh{B@PvAvP UID/GID I]U{MݭnŪ /etc/passwd AѤPbvC ] /etc/passwd vݳ]w -rw-r--r-- o˪pA MKX][KLAom /etc/passwd ĤGWIoˤ@ӫܮeQߤHhѨA [KLKX]zLɤO}Ѫkh trial and error (ջ~) XӡI
]o˪YAҥHӵoiXNKXʨ /etc/shadow oɮפj}ӪNA ӥB٥[JܦhKXѼƦb /etc/shadow YOIbo̡Aڭ̥AѤ@UoɮתcyaI /etc/shadow ɮצIoˡG
[root@www ~]# head -n 4 /etc/shadow root:$1$/30QpE5e$y9N/D0bh6rAACBEz.hqo00:14126:0:99999:7::: <==U bin:*:14126:0:99999:7::: daemon:*:14126:0:99999:7::: adm:*:14126:0:99999:7::: |
WA shadow P˥Hy:z@jŸApGƤ@ơA|o{@EڡAoE쪺γ~Oo˪G
[root@www ~]# echo $(($(date --date="2008/09/04" +%s)/86400+1))
14126
|
|ӨҤlӻnFApڪ dmtsai oӨϥΪ̪KXpUҥܡG
dmtsai:$1$vyUuj.eX$omt6lKJvMcIZHx4H7RI1V.:14299:5:60:7:5:14419: |
oܤOHn`NO 14299 O 2009/02/24 CҥH dmtsai oӨϥΪ̪KXNqOG
You must wait longer to change your password passwd: Authentication token manipulation error |
Warning: your password will expire in 5 days |
You are required to change your password immediately (password aged) WARNING: Your password has expired. You must change your password now and login again! Changing password for user dmtsai. Changing password for dmtsai (current) UNIX password: |
Your account has expired; please contact your system administrator |
zLo˪Azӷ|ezѤFaHѩ shadow o˪nʡA]iHNקI bYDZpUAonϥΦUؤkӳBzoɮתI|ҨӻA``ťHaGyڪKXѰOFzA Ϊ̬OyڪKXoQ֧LA@ˤFzAoӮɭԫH
gťL@hܡAYѮvDnObб Linux @~tΡAOLOݥѮvA]ӨtqҤC ѩw˸ӹqЫ Linux @~tΪHwg¾B䤣p觋FA]NO root KXwgSHoFI ɸӦѮvNǥͻGyb Linux ̭ root KXFAڭ̥u୫swˡz...PıILO SOӳQ Windows H~I{ѤFbɮ /etc/passwd P /etc/shadow AAγ\٬O|ıo_ǡA
sժ]wɦb̡H٦Ab /etc/passwd ĥ|椣Oҿת GID ܡHSOԣH
㦹ɴNݭnA /etc/group P /etc/gshadow o
oɮ״NObO GID PsզW٪F㳾վ /etc/group eIoˡG
[root@www ~]# head -n 4 /etc/group root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon sys:x:3:root,bin,adm |
oɮרC@N@ӸsաA]OH_y:z@쪺jŸA@|AC@쪺NqOG
ͧF /etc/passwd, /etc/shadow, /etc/group Aڭ̥iHϥΤ@²檺ϥܨAѤ@U UID / GID PKXYA ϥܦpUC꭫IO /etc/passwd աALƳOھڳoɮתhMXӪC UϤA root UID O 0 A GID ]O 0 Ah /etc/group iHD GID 0 ɪsզWٴNO root C ܩKXM𫟺A| /etc/shadow P /etc/passwd PbW٪@ANOKXoC
ܩb /etc/group nSbĥ|աA]CӨϥΪ̳iH֦hӤ䴩sաAoNnbǮհѪɭԡA
ڭ̥iH[JhӪΤ@ˡI ^_^CLo̧Aγ\|ıo_ǪANOGypڦPɥ[JhӸsաAڦb@~ɭԡA쩳OHӸsլǡHz
Uڭ̴Nӽͤ@ͳoӡyĸsաzC
ٰOoCӨϥΪ̦bL /etc/passwd ̭ĥ|榳ҿת GID aH GID NOҿתyls (initial group) zI]NOAϥΪ̤@nJtΡAߨN֦oӸsժvNC |ҨӻAڭ̤W dmtsai oӨϥΪ̪ /etc/passwd P /etc/group ٦ /etc/gshadow epUG
[root@www ~]# usermod -G users dmtsai <==]wnns [root@www ~]# grep dmtsai /etc/passwd /etc/group /etc/gshadow /etc/passwd:dmtsai:x:503:504::/home/dmtsai:/bin/bash /etc/group:users:x:100:dmtsai <==nsժ]w /etc/group:dmtsai:x:504: <==]OlsաAҥHĥ|줣ݭnJb /etc/gshadow:users:::dmtsai <==nsժ]w /etc/gshadow:dmtsai:!:: |
JӬݨWoӪAb /etc/passwd ̭Admtsai oӨϥΪ̩ݪsլ GID=504 AjM@U /etc/group o 504 OӦW dmtsai sհաIoNO initial groupC]OlsաA ϥΪ̤@nJN|DʨoAݭnb /etc/group ĥ|gJӱbI
OD initial group LsեiNPFC|WoӨҤlӻAڱN dmtsai [J users oӸsշAѩ users oӸsըëDO dmtsai lsաA]A ڥnb /etc/group oɮפA users @AåBN dmtsai oӱb[Jĥ|A o dmtsai ~[J users oӸsհڡC
boӨҤlA]ڪ dmtsai bPɤ䴩 dmtsai P users oӸsաA
]AbŪ/gJ/ɮɡAwsճAunO users P dmtsai oӸsվ֦\A
dmtsai oӨϥΪ̳֦IoAIHLAoOwwgsbɮצӨA
pGѧڭnإߤ@ӷsɮשΪ̬OsؿAаݤ@UAsɮתsլO dmtsai ٬O
users HIoNonˬd@UɪĸsդF (effective group)C
pGڥH dmtsai oӨϥΪ̪nJAӦpDکҦ䴩sթOH ²ڡAJ groups NiHFI`NAO groups [ s OIGoˡG
[dmtsai@www ~]$ groups
dmtsai users
|
boӿXTAiD dmtsai oӥΤPݩ dmtsai users oӨӸsաAӥBA Ĥ@ӿXsէYĸs (effective group) FC ]NOAڪĸsլ dmtsai ա㦹ɡApGڥH touch hإߤ@ӷsɡAҦpG y touch test zAoɮת֦̬ dmtsai AӥBsդ]O dmtsai աC
[dmtsai@www ~]$ touch test [dmtsai@www ~]$ ll -rw-rw-r-- 1 dmtsai dmtsai 0 Feb 24 17:26 test |
oˬO_iHAѤOĸsդFHq`ĸsժ@άObsɮװաIĸsլO_ܴH
pܧĸsթOHNϥ newgrp ڡILϥ newgrp OANOAQnsեOAwg䴩sաC|ҨӻA dmtsai iHb dmtsai/users oӸsնĸsաAO dmtsai Lkĸsզ sshd աIϥΪ觋pUG
[dmtsai@www ~]$ newgrp users [dmtsai@www ~]$ groups users dmtsai [dmtsai@www ~]$ touch test2 [dmtsai@www ~]$ ll -rw-rw-r-- 1 dmtsai dmtsai 0 Feb 24 17:26 test -rw-r--r-- 1 dmtsai users 0 Feb 24 17:33 test2 |
ɡAdmtsai ĸsմN users FC ڭB~ӰQפ@U newgrp oӫOAoӫOiHܧثeϥΪ̪ĸsաA ӥBOt~H@ shell Ӵѳoӥ\AҥHAHWҤlӻA dmtsai oӨϥΪ̥ثeOHt@ shell nJAӥBs shell dmtsai GID users NOFCpGHϥܨӬݴNOpUҥܡG
MϥΪ̪ҳ]w(ҦpܼƵL)|vTAOϥΪ̪ysvzN|sQpC Oݭn`NAѩOso@ shell A]pGAQn^쥻ҤAпJ exit ^쥻 shell I
JMpA]NOAunڪΤᦳ䴩sմNOĸsաInFA
p@ӱb[JPsմNODҦboCAn[J@ӸsզӤ觋A@ӬOzLtκz (root) Q
usermod A[JApG root ӦFӥBAtΦ]wsպzAAiHzLsպzH
gpasswd A[JLҺzsդIԲӪ@kdݤU@p`AӤoI
FܦhyĸsաzAt~A] newgrp oӫOΪkA OApG /etc/gshadow oӳ]wSdoܡA newgrp OLkʧ@OI վ /etc/gshadow eIoˡG
[root@www ~]# head -n 4 /etc/gshadow root:::root bin:::root,bin,daemon daemon:::root,bin,daemon sys:::root,bin,adm |
oɮפP٬OϥΫ_y:zӧ@쪺jrAӥBA|o{Aoɮ״XGP /etc/group @Ҥ@˰ڡIOo˨S㤣LAn`NjNOĤGaĤGOKXA pGKXWOy!zɡAܸӸsդ㦳sպzIܩĥ|]NO䴩bWo o|쪺NqG
HtκzרӻAo gshadow ̤j\NOإ߸sպzաI OsպzOHѩtΤWbi|ܦhAOڭ root i७ɤӦLAҥHϥΪ̷Qn[JYǸsծɡA root γ\|SźzCɦpGإ߸sպzܡAӸsպzNNӱb[JۤvzsդI iHKh root LաILAѩثe sudo uA ҥHoӸsպz\wgܤ֨ϥΤFCڭ̷|b gpasswd гoӹ@C
nաIJMnzbAMOѷsWPϥΪ̶}lo㧐Uڭ̴NOӽͤ@ͦpsWB
PϥΪ̪Ta
npb Linux tηsW@ӨϥΪ̰ڡHuO²Fڭ̵nJtήɷ|J (1)bP (2)KXA
ҥHإߤ@ӥiΪbP˪]ݭnoӸơCbiHϥ useradd ӷsبϥΪ̡AKXhϥ passwd
oӫOIoӫOUFkpUG
[root@www ~]# useradd [-u UID] [-g ls] [-G ns] [-mM]\ > [-c ] [-d aؿ|] [-s shell] ϥΪ̱bW ﶵPѼơG -u G᭱O UID AO@ռƦrCw@ӯSw UID oӱbF -g G᭱ӸsզWٴNOڭ̤W쪺 initial group ա Ӹsժ GID |Qm /etc/passwd ĥ|줺C -G G᭱sզW٫hOoӱb٥iH[JsաC oӿﶵPѼƷ|ק /etc/group ƳI -M GjInإߨϥΪ̮aؿI(tαbw]) -m GjInإߨϥΪ̮aؿI(@bw]) -c GoӴNO /etc/passwd Ĥ檺eաiHHKڭ̳]wա -d GwYӥؿaؿAӤnϥιw]ȡCȥϥε|I -r Gإߤ@ӨtΪbAoӱb UID | (Ѧ /etc/login.defs) -s G᭱@ shell AYSwhw]O /bin/bash ա -e G᭱@ӤA榡yYYYY-MM-DDzإigJ shadow ĤKA YbĤ骺]woF -f G᭱ shadow ĤC춵ءAwKXO_|ġC0ߨ襢ġA -1 û(KXu|LӱjnJɭs]wӤwC) dҤ@GѦҹw]ȫإߤ@ӨϥΪ̡AW٬ vbird1 [root@www ~]# useradd vbird1 [root@www ~]# ll -d /home/vbird1 drwx------ 4 vbird1 vbird1 4096 Feb 25 09:38 /home/vbird1 # w]|إߨϥΪ̮aؿABv 700 IoOII [root@www ~]# grep vbird1 /etc/passwd /etc/shadow /etc/group /etc/passwd:vbird1:x:504:505::/home/vbird1:/bin/bash /etc/shadow:vbird1:!!:14300:0:99999:7::: /etc/group:vbird1:x:505: <==w]|إߤ@ӻPb@Ҥ@˪sզW |
tΤwgڭ̳WwnD`hw]ȤFAҥHڭ̥iH²檺ϥΡy useradd b zӫإߨϥΪ̧YiC CentOS oǹw]ȥDn|ڭ̳BzXӶءG
ѩb /etc/shadow ȷ|KXѼƦӤ|[KLKXơA]ڭ̦bإߨϥΪ̱bɡA ٻݭnϥΡy passwd b zӵKX~OFϥΪ̫إߪy{CpGѩSݨDӻݭnܨϥΪ̬ѼƮɡA NonzLWz椤ﶵӶiإߤFAѦҩUרҡG
dҤGG]ڤwDڪtηӸsզW٬ users AB UID 700 äsbA Х users lsաAH uid 700 ӫإߤ@ӦW vbird2 b [root@www ~]# useradd -u 700 -g users vbird2 [root@www ~]# ll -d /home/vbird2 drwx------ 4 vbird2 users 4096 Feb 25 09:59 /home/vbird2 [root@www ~]# grep vbird2 /etc/passwd /etc/shadow /etc/group /etc/passwd:vbird2:x:700:100::/home/vbird2:/bin/bash /etc/shadow:vbird2:!!:14300:0:99999:7::: # ݤ@UAUID P initial group Tܦڭ̻ݭnFI |
boӽdҤAڭ̫إߪOw@Ӥwgsbsէ@ϥΪ̪lsաA]sդwgsbA ҥHb /etc/group ̭N|DʪإPbPWsդFI ~Aڭ̤]wFS UID ӧ@ϥΪ̪M UID IAѤF@bAڭ̨@@ԣOtαb (system account) aI
dҤTGإߤ@ӨtαbAW٬ vbird3 [root@www ~]# useradd -r vbird3 [root@www ~]# ll -d /home/vbird3 ls: /home/vbird3: No such file or directory <==|Dʫإ߮aؿ [root@www ~]# grep vbird3 /etc/passwd /etc/shadow /etc/group /etc/passwd:vbird3:x:100:103::/home/vbird3:/bin/bash /etc/shadow:vbird3:!!:14300:::::: /etc/group:vbird3:x:103: |
ڭ̦bͨ UID ɭԴgL@bӬO 500 HAϥΪ̦ۤvإߪtαbh@O 100 H_⪺C ҥHbo̧ڭ̥[W -r oӿﶵHAtδN|DʱNbPbPWsժ UID/GID wp 500 HUA bרҤhOϥ 100(UID) P 103(GID) oI~AѩtαbDnOΨӶiB@tΩһݪAȪv]wA ҥHtαbw]|Dʫإ߮aؿI
ѳoXӽdҧڭ̤]|DAϥ useradd إߨϥΪ̱bɡA|藍֦aAܤ֧ڭ̴NDUXɮסG
бФ@UAASQLAy useradd vbird1 z|Dʦb /home/vbird1
إ߰_ϥΪ̪aؿHaؿƥBӦ̡ۭHw]ϥΪO /bin/bash o shell
HKXwgWdnF (0:99999:7 @)HIoNon@U useradd ҨϥΪѦɮoI
useradd w]ȥiHϥΩUkIsXӡG
[root@www ~]# useradd -D GROUP=100 <==w]s HOME=/home <==w]aؿҦbؿ INACTIVE=-1 <==KXĤAb shadow 7 EXPIRE= <==bĤAb shadow 8 SHELL=/bin/bash <==w] shell SKEL=/etc/skel <==ϥΪ̮aؿeưѦҥؿ CREATE_MAIL_SPOOL=yes <==O_DϥΪ̫إ߶lHc(mailbox) |
oƨO /etc/default/useradd IsXӪIAiHۦ vim h[ɮתeCftWYLdҤ@B@GAWodz]wةҳy欰OOG
Foǰb]wȤ~A UID/GID ٦KXѼƤSOb̰ѦҪOHNonݤ@U /etc/login.defs աI oɮתeIUoˡG
MAIL_DIR /var/spool/mail <==ϥΪ̹w]lHcmؿ PASS_MAX_DAYS 99999 <==/etc/shadow 5 Ah[ܧKX PASS_MIN_DAYS 0 <==/etc/shadow 4 Ah[is]wKX PASS_MIN_LEN 5 <==KX̵urסAwQ pam ҲըNAhĥΡI PASS_WARN_AGE 7 <==/etc/shadow 6 ALe|ĵi UID_MIN 500 <==ϥΪ̳̤p UIDANYp 500 UID tΫOd UID_MAX 60000 <==ϥΪ̯Ϊ̤j UID GID_MIN 500 <==ϥΪ̦ۭqsժ̤p GIDAp 500 tΫOd GID_MAX 60000 <==ϥΪ̦ۭqsժ̤j GID CREATE_HOME yes <==b[ -M -m ɡAO_DʫإߨϥΪ̮aؿH UMASK 077 <==ϥΪ̮aؿإߪ umask A]v|O 700 USERGROUPS_ENAB yes <==ϥ userdel RɡAO_|Rls MD5_CRYPT_ENAB yes <==KXO_gL MD5 [KBz |
oɮ׳WdƫhOpUҥܡG
{bADաAϥ useradd o{bإ Linux WbɡAܤַ|ѦҡG
oɮסALA̭nOإ /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow
٦ϥΪ̮aؿNOFҥHApGAAѾӨtιB@AA]OiHʪקoXɮ״NOFC
OKIbإߤFAUӳBz@UϥΪ̪KXaI
ڭFAϥ useradd إߤFbAbw]pUAӱbOȮɳQꪺA ]NOAӱbOLknJAAiHh@@@ /etc/shadow ĤGNoo ӦpOnHȤHL]wsKXNnFIa]wKXNϥ passwd oI
[root@www ~]# passwd [--stdin] <==ҦHiϥΨӧۤvKX [root@www ~]# passwd [-l] [-u] [--stdin] [-S] \ > [-n ] [-x ] [-w ] [-i ] b <==root \ ﶵPѼơG --stdin GiHzLӦ۫e@ӺuơA@KXJA shell script UI -l GO Lock NA|N /etc/shadow ĤG̫e[W ! ϱKXġF -u GP -l ۹AO Unlock NI -S GCXKXѼơAY shadow ɮפjTC -n G᭱ѼơAshadow 4 Ah[iקKXѼ -x G᭱ѼơAshadow 5 Ah[nʱKX -w G᭱ѼơAshadow 6 AKXLeĵiѼ -i G᭱yzAshadow 7 AKXĤ dҤ@G root vbird2 KX [root@www ~]# passwd vbird2 Changing password for user vbird2. New UNIX password: <==o̪JsKXAù| BAD PASSWORD: it is WAY too short <==KX²ιLu~I Retype new UNIX password: <==AJ@P˪KX passwd: all authentication tokens updated successfully. <==M٬O\קFI |
root GMO̰jHIڭ̭nϥΪ̱KXɡAzL root ӳ]wYiC root iH]wUU˪KXAtδXG@w|IҥHz@@ApPWdҤ@AJKXӵuFA OtΨ¥i vbird2 o˪KX]wCoӬO root ]wGApGOϥΪ̦ۤvnKXOH ]A root ]Oo˭ק諸I
dҤGG vbird2 nJAק vbird2 ۤvKX [vbird2@www ~]$ passwd <==᭱S[bANOۤvKXI Changing password for user vbird2. Changing password for vbird2 (current) UNIX password: <==o̿Jy즳±KXz New UNIX password: <==o̿JsKX BAD PASSWORD: it is based on a dictionary word <==KX礣qLAЦAQӷsKX New UNIX password: <==o̦AQӨӿJa Retype new UNIX password: <==qLKXҡIҥHƳoӱKXJ passwd: all authentication tokens updated successfully. <==L\r |
passwd ϥίunܪ`NAרO root ͰڡIbҰWCo̡AOnۤv@bإ߱KXɡA @pǥʹNO|ѰO[WbAGNܦ root ۤvKXA̫.... root KXNoˤhI n@bإ߱KXݭnϥΡy passwd b z榡AϥΡy passwd zܭקۤvKXIUIdUnI
P root POA@bbKXɻݭnJۤv±KX (Y current @)AMAJsKX (New @)C n`NOAKXWdOD`Y檺Aרs distributions jhϥ PAM ҲըӶiKXA]AӵuB KXPbۦPBKXr`r굥A|Q PAM ҲˬdXӦөڵקKXAɷ|AƥX{y New zorI ɽЦAQӷsKXIYX{y Retype z~OAKXQFIƿJsKXåBݨy successfully zorɤ~OקKX\I
P@ϥΪ̤POA root äݭnD±KXNϥΪ̩ root ۤvإ߷sKXI p@ӦxZNOpGA˱KRHѬOiDAyڪKXuOAڳ]w²@IIzɡA dUnڡIoOFtΦw...ϥΪ̭n]qۤvKX|o·аڡHoO]KXwʰաIpGKX]w²A @ǦߤHhN²檺qAKXAp@ӤHaNiϥΧA@bnJADΨϥΨLD귽A D@|yxZIҥHs distributions OϥθY檺 PAM ҲըӺzKXAoӺzgb /etc/pam.d/passwd CɮPKXռҲմNOϥΡGpam_cracklib.soAoӼҲշ|KXTA åBN /etc/login.defs PASS_MIN_LEN ]wաI PAM ڭ̦b᭱~СAo̥ͤ@UA zפWAAKX̦nŦXpUnDG
FKtκzAs passwd ٥[JFܦhзNﶵIӤH{̦nΪjNOoӡy --stdin zFI |ҨӻAAQn vbird2 ܧKX abc543CC AiHoˤUFOOI
dҤTGϥ standard input إߥΤ᪺KX [root@www ~]# echo "abc543CC" | passwd --stdin vbird2 Changing password for user vbird2. passwd: all authentication tokens updated successfully. |
oӰʧ@|sϥΪ̪KXӤΦAʿJInBOKBzAIOoӱKX|OdbOA ӭYtγQ}AHaiHb /root/.bash_history oӱKXOIҥHoӰʧ@q`ȥΦb shell script jqإߨϥΪ̱bIn`NOAoӿﶵäsbҦ distributions A Шϥ man passwd T{A distribution O_䴩ﶵI
pGAQn vbird2 KX㦳۷WhA|ҨӻAn vbird2 C 60 ѻݭnܧKXA KXL 10 ѥϥδNŧibġAӦpBzH
dҥ|Gz vbird2 KXϨ㦳 60 ܧBKXL 10 ѫbĪ]w [root@www ~]# passwd -S vbird2 vbird2 PS 2009-02-26 0 99999 7 -1 (Password set, MD5 crypt.) # WKXإ߮ɶ (2009-02-26)B0 ̤pѼơB99999 ܧѼơB7 ĵi # PKX| (-1) C [root@www ~]# passwd -x 60 -i 10 vbird2 [root@www ~]# passwd -S vbird2 vbird2 PS 2009-02-26 0 60 7 10 (Password set, MD5 crypt.) |
pGڷQnYӱbȮɵLkϥαKXnJDOH|ҨӻA vbird2 oå̪ѬOJæbDèӡA ҥHڷQnȮoLknJܡA²檺kNOoKXܦXk (shadow 2 ܱ)I BzkN²檺I
dҤG vbird2 bġA[Ao [root@www ~]# passwd -l vbird2 [root@www ~]# passwd -S vbird2 vbird2 LK 2009-02-26 0 60 7 10 (Password locked.) # KKIAܦy LK, Lock zFաILknJI [root@www ~]# grep vbird2 /etc/shadow vbird2:!!$1$50MnwNFq$oChX.0TPanCq7ecE4HYEi.:14301:0:60:7:10:: # uObo̥[W !! ӤwI [root@www ~]# passwd -u vbird2 [root@www ~]# grep vbird2 /etc/shadow vbird2:$1$50MnwNFq$oChX.0TPanCq7ecE4HYEi.:14301:0:60:7:10:: # KX_`I |
O_ܦڡIziHۦz@UAbKXѼƳIUڭ̥Χ²檺kӬd\KXѼƳI
Fϥ passwd -S ~ASԲӪKXѼܥ\OHINO chage FI LΪkpUG
[root@www ~]# chage [-ldEImMW] bW ﶵPѼơG -l GCXӱbԲӱKXѼơF -d G᭱Aק shadow ĤT(̪@KX)A榡 YYYY-MM-DD -E G᭱Aק shadow ĤK(bĤ)A榡 YYYY-MM-DD -I G᭱ѼơAק shadow ĤC(KXĤ) -m G᭱ѼơAק shadow ĥ|(KX̵uOdѼ) -M G᭱ѼơAק shadow Ĥ(KXh[ݭniܧ) -W G᭱ѼơAק shadow Ĥ(KXLeĵi) dҤ@GCX vbird2 ԲӱKXѼ [root@www ~]# chage -l vbird2 Last password change : Feb 26, 2009 Password expires : Apr 27, 2009 Password inactive : May 07, 2009 Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 60 Number of days of warning before password expires : 7 |
ڭ̦b passwd ФͨFBz vbird2 oӱbKXݩʬy{Aϥ passwd -S oLkݨܲMCpGϥ chage iNզhFIpWҥܡAڭ̥iHMD vbird2 ԲӰѼƩOI pGQnקL]wȡANۤvѦҤWﶵAΪ̦ۦ man chage @UaI^_^
chage @ӥ\ܤIpGAQnyϥΪ̦bĤ@nJɡA jo̤@wnKX~ϥΨtθ귽zAiHQΦpUkӳBzI
dҤGGإߤ@ӦW agetest bAӱbĤ@nJϥιw]KXA nLKXAϥηsKX~nJtΨϥ bash [root@www ~]# useradd agetest [root@www ~]# echo "agetest" | passwd --stdin agetest [root@www ~]# chage -d 0 agetest # ɦbKXإ߮ɶ|Qאּ 1970/1/1 AҥH|DI dҤTGեH agetest nJp You are required to change your password immediately (root enforced) WARNING: Your password has expired. You must change your password now and login again! Changing password for user agetest. Changing password for agetest (current) UNIX password: <==oӱbQjnDnKXI |
D`aIA|o{ agetest oӱbbĤ@nJɥiHϥλPbPWKXnJA
nJɴN|QnDߨKXAKXN|QXtΡCAnJɴNϥηsKXnJFI
oӥ\ǮզѮvD`UI]ڭ̤QnDǥͪKXAb즸WҮɴNϥλPǸۦPb/KXǥ͡A
o̵nJɦۦ]wo̪KXAp@ӴNקKLPHNϥΧOHbA]OҾǥͪDpۤvKXI
ҿ׳oyHAÿzAzOaHҥHoAMɭԷ|ypߡzb useradd ɭԥ[JF~]wơCΪ̬OAbϥ useradd Ao{YǦa٥iHiӳקC ɡAMڭ̥iH /etc/passwd /etc/shadow hק۹쪺ơA LALinux ]ѬOjaӶibƪLթO㨺NO usermod o
[root@www ~]# usermod [-cdegGlsuLU] username ﶵPѼơG -c G᭱bAY /etc/passwd Ĥ檺AiH[J@DZbC -d G᭱baؿAYק /etc/passwd ĤF -e G᭱A榡O YYYY-MM-DD ]NOb /etc/shadow ĤKưաI -f G᭱ѼơA shadow ĤCC -g G᭱lsաAק /etc/passwd ĥ|AYO GID I -G G᭱nsաAקoӨϥΪ̯䴩sաAק諸O /etc/group o -a GP -G XΡAiyW[nsժ䴩zӫDy]wzI -l G᭱bW١CYOקbW١A /etc/passwd Ĥ@I -s G᭱ Shell ɮסAҦp /bin/bash /bin/csh C -u G᭱ UID ƦrաIY /etc/passwd ĤT檺ơF -L GȮɱNϥΪ̪KXᵲALLknJCȧ /etc/shadow KXC -U GN /etc/shadow KX檺 ! AѭաI |
pGAJӪA|o{ usermod ﶵP useradd D`I oO] usermod ]OΨӷL useradd W[ϥΪ̰ѼƹIL usermod ٬OsWﶵA NO -L P -U ALoӿﶵP passwd -l, -u OۦPIӥB]o|sbҦ distribution IUӡAڭ̽ͽͤ@ܧѼƪҧaI
dҤ@GקϥΪ vbird2 A[WyVBird's testzC [root@www ~]# usermod -c "VBird's test" vbird2 [root@www ~]# grep vbird2 /etc/passwd vbird2:x:700:100:VBird's test:/home/vbird2:/bin/bash dҤGGϥΪ vbird2 oӱbb 2009/12/31 ġC [root@www ~]# usermod -e "2009-12-31" vbird2 [root@www ~]# grep vbird2 /etc/shadow vbird2:$1$50MnwNFq$oChX.0TPanCq7ecE4HYEi.:14301:0:60:7:10:14609: dҤTGڭ̫إ vbird3 oӨtαbɨèSaؿAЫإߥLaؿ [root@www ~]# ll -d ~vbird3 ls: /home/vbird3: No such file or directory <==T{@UATSaؿsbI [root@www ~]# cp -a /etc/skel /home/vbird3 [root@www ~]# chown -R vbird3:vbird3 /home/vbird3 [root@www ~]# chmod 700 /home/vbird3 [root@www ~]# ll -a ~vbird3 drwx------ 4 vbird3 vbird3 4096 Sep 4 18:15 . <==ϥΪ̮aؿv drwxr-xr-x 11 root root 4096 Feb 26 11:45 .. -rw-r--r-- 1 vbird3 vbird3 33 May 25 2008 .bash_logout -rw-r--r-- 1 vbird3 vbird3 176 May 25 2008 .bash_profile -rw-r--r-- 1 vbird3 vbird3 124 May 25 2008 .bashrc drwxr-xr-x 3 vbird3 vbird3 4096 Sep 4 18:11 .kde drwxr-xr-x 4 vbird3 vbird3 4096 Sep 4 18:15 .mozilla # ϥ chown -R OFsPaؿUϥΪ/sݩʳ@_ܧNF # ϥ chmod S -R AO]ڭ̶ȭnקؿvӫDɮתvI |
oӥ\N²FAتbRϥΪ̪ơAӨϥΪ̪ƦG
ӫOykD`²G
[root@www ~]# userdel [-r] username ﶵPѼơG -r GsPϥΪ̪aؿ]@_R dҤ@GR vbird2 AsPaؿ@_R [root@www ~]# userdel -r vbird2 |
oӫOUFɭԭnpߤFIq`ڭ̭n@ӱbɭԡAAiHʪN /etc/passwd P /etc/shadow YӱbYiI@ӨApGӱbuOyȮɤҥzܡAN /etc/shadow YbĤ (ĤK) ]w 0 NiHӱbLkϥΡAOҦӱbƳ|dUӡI ϥ userdel ɾq`OyAuTwnӥΤbDWϥΥƤFIz
t~AϥΪ̦pGbtΤWާ@L@}lFAӨϥΪ̨btΤi|tLɮתC |ҨӻALlHc (mailbox) Ϊ̬OҦʤu@Ƶ{ (crontab, Q) ɮסC ҥHApGQn㪺NYӱb㪺A̦niHbUF userdel -r username eA Hy find / -user username zdXӨtΤݩ username ɮסAMA[HRaI
O useradd/usermod/userdel AOtκzүϥΪOA
pGڬO@먭ϥΪ̡AڬO_FKX~ANLkLƩOH
MOաIo̧ڭ̤дXӤ@먭ϥΪ̱`ΪbܧPd߫OoI
finger rNqOGyzΪ̬OyzNCo finger iHd\ܦhϥΪ̬TI jOb /etc/passwd oɮ̭TաIڭ̴NˬdˬdϥΪ̸TaI
[root@www ~]# finger [-s] username ﶵPѼơG -s GȦCXϥΪ̪bBWBݾNPnJɶF -m GCXP᭱bۦP̡AӤOQγ (]AW) dҤ@G[ vbird1 ϥΪ̬bݩ [root@www ~]# finger vbird1 Login: vbird1 Name: (null) Directory: /home/vbird1 Shell: /bin/bash Never logged in. No mail. No Plan. |
ѩ finger \AL|NϥΪ̪ݩʦCXӡIpWҥܡALCXӪXGO /etc/passwd ɮ̭FCCXTpUG
LO_d\ Mail P Plan hPvFI] Mail / Plan OPϥΪ̦ۤvv]wA root MiHd\ϥΪ̪oǸTAO vbird1 Nod vbird3 TA ] /var/spool/mail/vbird3 P /home/vbird3/ vOO 660, 700 A vbird1 MNLkd\I o˸iHzѧaH~Aڭ̥iHإߦۤvQn檺wwpeAMA̦hOۤvݪIiHo˰G
dҤGGQ vbird1 إߦۤvpe [vbird1@www ~]$ echo "I will study Linux during this year." > ~/.plan [vbird1@www ~]$ finger vbird1 Login: vbird1 Name: (null) Directory: /home/vbird1 Shell: /bin/bash Never logged in. No mail. Plan: I will study Linux during this year. dҤTGXثebtΤWnJϥΪ̻PnJɶ [vbird1@www ~]$ finger Login Name Tty Idle Login Time Office Office Phone root root tty1 Feb 26 09:53 vbird1 tty2 Feb 26 15:21 |
bdҤTAڭ̵o{XTٷ| Office, Office Phone TAoǸTnpOOH
Uڭ̷| chfn oӫOIӬݬݦpקϥΪ̪ finger ƧaI
chfn IOG change finger NIoNϥΤkpUG
[root@www ~]# chfn [-foph] [bW] ﶵPѼơG -f G᭱㪺jWF -o Gz줽ǪжXF -p G줽ǪqܸXF -h Ga̪qܸXI dҤ@Gvbird1 ۤv@UۤvTI [vbird1@www ~]$ chfn Changing finger information for vbird1. Password: <==T{AҥHJۤvKX Name []: VBird Tsai test <==JAQne{W Office []: Dic in Ksu. Tainan <==줽ǸX Office Phone []: 06-2727175#356 <==줽ǹq Home Phone []: 06-1234567 <==a̹qܸX Finger information changed. [vbird1@www ~]$ grep vbird1 /etc/passwd vbird1:x:504:505:VBird Tsai test,Dic in Ksu. Tainan,06-2727175#356,06-1234567: /home/vbird1:/bin/bash # NOĤA̭Φhӡy , zjNOFI [vbird1@www ~]$ finger vbird1 Login: vbird1 Name: VBird Tsai test Directory: /home/vbird1 Shell: /bin/bash Office: Dic in Ksu. Tainan Office Phone: 06-2727175#356 Home Phone: 06-1234567 On since Thu Feb 26 15:21 (CST) on tty2 No mail. Plan: I will study Linux during this year. # NOWSre{ǦaO chfn ҭקXӪI |
oӫObADOADܦhΤA_h˯uOΤ۳oӵ{IoNIO bbs
YAyӤHݩʡz@ӸưաIL٬OiHۤv@IרOΨӴۤvưաI ^_^
oNO change shell ²gIϥΤkN²FI
[vbird1@www ~]$ chsh [-ls] ﶵPѼơG -l GCXثetΤWiΪ shell ANO /etc/shells eI -s G]wקۤv Shell o dҤ@G vbird1 CXtΤWҦXk shellAåBw csh ۤv shell [vbird1@www ~]$ chsh -l /bin/sh /bin/bash /sbin/nologin <==ҿסGXkinJ Shell NOoNI /bin/tcsh /bin/csh <==oNO C shell աI /bin/ksh # WTNOڭ̦b bash ͨ쪺 /etc/shells աI [vbird1@www ~]$ chsh -s /bin/csh; grep vbird1 /etc/passwd Changing shell for vbird1. Password: <==T{AпJ vbird1 KX Shell changed. vbird1:x:504:505:VBird Tsai test,Dic in Ksu. Tainan,06-2727175#356,06-1234567: /home/vbird1:/bin/csh [vbird1@www ~]$ chsh -s /bin/bash # էAߨ^ӡI [vbird1@www ~]$ ll $(which chsh) -rws--x--x 1 root root 19128 May 25 2008 /usr/bin/chsh |
O chfn P chsh AO@ϥΪ̭ק /etc/passwd oӨtɪIҥHAqqAoɮתvOH
@wO SUID \աIݨo̡AQeI
oNO Linux Dzߤk ^_^
id oӫOhiHd߬YHΦۤv UID/GID TALѼƤ]֡ALA ݭnOϥϥ id NCXo ^_^
[root@www ~]# id [username] dҤ@Gd\ root ۤv ID TI [root@www ~]# id uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk), 10(wheel) context=root:system_r:unconfined_t:SystemLow-SystemHigh # WTOP@檺ơI]A| UID/GID HΤ䴩ҦsաI # ܩ᭱ context=... hO SELinux eAnz|LI dҤGGd\@U vbird1 a [root@www ~]# id vbird1 uid=504(vbird1) gid=505(vbird1) groups=505(vbird1) context=root:system_r: unconfined_t:SystemLow-SystemHigh [root@www ~]# id vbird100 id: vbird100: No such user <== id oӫO]iHΨӧP_tΤWLYbI |
OKIAѤFbsWBRBʻPd߫AAӧڭ̥iH@sժeFC
WAsժePoɮצG/etc/group, /etc/gshadowC
sժe²AOWɮתsWBקPӤwA
LApGA[WĸsժA newgrp P gpasswd hiOI
[root@www ~]# groupadd [-g gid] [-r] sզW ﶵPѼơG -g G᭱YӯSw GID AΨӪY GID -r GإߨtθsհաIP /etc/login.defs GID_MIN C dҤ@Gsؤ@ӸsաAW٬ group1 [root@www ~]# groupadd group1 [root@www ~]# grep group1 /etc/group /etc/gshadow /etc/group:group1:x:702: /etc/gshadow:group1:!:: # sժ GID ]O| 500 HW̤j GID+1 ӨMwI |
gYǪШ|VmUͨAFϥΪ̪ UID/GID Ao̫ijsتPϥΪ̨psյLLsծɡAϥΤp 500 HU GID yC
]NOApGnإ߸sժܡA̦nϥΡy groupadd -r sզWz觋ӫإ߰աI
LAoաIݧAۤvoI
usermod AoӫOȬObi group ѼƪקӤwC
[root@www ~]# groupmod [-g gid] [-n group_name] sզW ﶵPѼơG -g GקJ GID ƦrF -n GקJsզW dҤ@GNWӫOإߪ group1 W٧אּ mygroup A GID 201 [root@www ~]# groupmod -g 201 -n mygroup group1 [root@www ~]# grep mygroup /etc/group /etc/gshadow /etc/group:mygroup:x:201: /etc/gshadow:mygroup:!:: |
LA٬OyѸܡAnHN GID Aeytθ귽óI
III groupdel ۵MNObRsժoΪk²G
[root@www ~]# groupdel [groupname] dҤ@GN𫍧 mygroup RI [root@www ~]# groupdel mygroup dҤGGYnR vbird1 oӸsժܡH [root@www ~]# groupdel vbird1 groupdel: cannot remove user's primary group. |
mygroup iHRAO vbird1 NROH]²AyYӱb (/etc/passwd) initial group ϥθӸsաIz pGd\@UAA|o{b /etc/passwd vbird1 ĥ|檺 GID NO /etc/group vbird1 Ӹsժ GID AҥHoAMLkR_h vbird1 oӨϥΪ̵nJtΫA N|䤣 GID AiO|yܤjxZIpGwnR vbird1 oӸsթOH AynT{ /etc/passwd bSHϥθӸsէ@ initial group z~IҥHAAiHG
pGtκzӦLFAɭPYDZbQn[JYӱMɧ䤣HIoӮɭԥiHإߡysպzzI OsպzOHNOYӸsը㦳@ӺzAoӸsպziHzDZbiH[J/XӸsաI npyإߤ@ӸsպzzOHNonzL gpasswd oI
# tκz(root)ʧ@G [root@www ~]# gpasswd groupname [root@www ~]# gpasswd [-A user1,...] [-M user3,...] groupname [root@www ~]# gpasswd [-rR] groupname ﶵPѼơG GYSѼƮɡAܵ groupname @ӱKX(/etc/gshadow) -A GN groupname Dvѫ᭱ϥΪ̺z(Ӹsժz) -M GNYDZb[JoӸsշI -r GN groupname KX -R G groupname KX楢 # sպz(Group administrator)ʧ@G [someone@www ~]$ gpasswd [-ad] user groupname ﶵPѼơG -a GNYϥΪ̥[J groupname oӸsշI -d GNYϥΪ̲X groupname oӸsշC dҤ@Gإߤ@ӷssաAW٬ testgroup Bsե vbird1 zG [root@www ~]# groupadd testgroup <==إ߸s [root@www ~]# gpasswd testgroup <==oӸsդ@ӱKXaI Changing the password for group testgroup New Password: Re-enter new password: # J⦸KXNFI [root@www ~]# gpasswd -A vbird1 testgroup <==[Jsպz vbird1 [root@www ~]# grep testgroup /etc/group /etc/gshadow /etc/group:testgroup:x:702: /etc/gshadow:testgroup:$1$I5ukIY1.$o5fmW.cOsc8.K.FHAFLWg0:vbird1: # ܦaI vbird1 h֦ testgroup DvIIODաI dҤGGH vbird1 nJtΡAåBL[J vbird1, vbird3 testgroup [vbird1@www ~]$ id uid=504(vbird1) gid=505(vbird1) groups=505(vbird1) .... # ݱoXӡAvbird1 |[J testgroup sճI [vbird1@www ~]$ gpasswd -a vbird1 testgroup [vbird1@www ~]$ gpasswd -a vbird3 testgroup [vbird1@www ~]$ grep testgroup /etc/group testgroup:x:702:vbird1,vbird3 |
ܦ쪺@ӤpaIڭ̥iH testgroup @ӥiH}sաAMإ߰_sպzA sպziHhӡCboӮרҤAڱN vbird1 ]w testgroup sպzAҥH vbird1 NiHۦW[sզoIIIMAӸsզNϥ newgrp o
bzOHNظmXӱbNFIɭԧڭ̻ݭnҶq@DWihӱbbPu@I |ҨӻAbjǥЮɡAڭ̾ǮժMDͬOݭnժAoǦP@ժPǶnۭק𫍧ɮסA OPɳoǦPǤSݭnOdۤvpKơA]}aؿOAyCӦpOnH Aڭ̩UѴXӨҤljaҬݬoG
Ȥ@GªWYNȡA]ڭ̻ݭnbƦpUAAӦp@H
bW | bW | 䴩ns | O_inJD | KX |
myuser1 | 1st user | mygroup1 | iH | password |
myuser2 | 2nd user | mygroup1 | iH | password |
myuser3 | 3rd user | LB~䴩 | iH | password |
BzkpUҥܡG
# BzbݩʪơG [root@www ~]# groupadd mygroup1 [root@www ~]# useradd -G mygroup1 -c "1st user" myuser1 [root@www ~]# useradd -G mygroup1 -c "2nd user" myuser2 [root@www ~]# useradd -c "3rd user" -s /sbin/nologin myuser3 # ABzbKXݩʪơG [root@www ~]# echo "password" | passwd --stdin myuser1 [root@www ~]# echo "password" | passwd --stdin myuser2 [root@www ~]# echo "password" | passwd --stdin myuser3 |
n`NaDnGmyuser1 P myuser2 䴩nsաAӸsդo|sbA]ݭnʫإߥLI M myuser3 OyinJtΡzbA]ݭnϥ /sbin/nologin o shell ӵAo˸ӱbNLknJoI oˬO_zѰڡIUӦAӰQפ@ǪҡIpGOMDҸӦps@H
ȤGGڪϥΪ pro1, pro2, pro3 OP@ӱMpe}oHAڷQnoTӥΤbP@ӥؿUu@A oTӥΤ٬O֦ۤvaؿPpsաC]ڭnoӱMpeb /srv/projecta ؿU}oA iHpiH
# 1. ]oTӱb|إߡAiإߤ@ӦW projecta sաA # AoTӥΤ[J䦸nsժ䴩YiG [root@www ~]# groupadd projecta [root@www ~]# useradd -G projecta -c "projecta user" pro1 [root@www ~]# useradd -G projecta -c "projecta user" pro2 [root@www ~]# useradd -G projecta -c "projecta user" pro3 [root@www ~]# echo "password" | passwd --stdin pro1 [root@www ~]# echo "password" | passwd --stdin pro2 [root@www ~]# echo "password" | passwd --stdin pro3 # 2. }lإߦMת}oؿG [root@www ~]# mkdir /srv/projecta [root@www ~]# chgrp projecta /srv/projecta [root@www ~]# chmod 2770 /srv/projecta [root@www ~]# ll -d /srv/projecta drwxrws--- 2 root projecta 4096 Feb 27 11:29 /srv/projecta |
ѩMpeu pro1, pro2, pro3 TӤHϥΡAҥH /srv/projecta v]w@wnT~I ҥHӥؿsդ@wO projecta AOv|O 2770 OٰOoĤCͨ쪺 SGID aHFTӨϥΪ̯ۭק𫍧ɮסA o SGID OnsbIpGso̳zѡAKKIzbzwg@w{תoI ^_^
UӦӧxZDoͤFIpȤ@ myuser1 O projecta oӱMתUzALݭnoӱMתeA OLyiHקzMץؿơIӦpOnHAγ\iHo˰G
unRIDzΪ Linux vLkwYӭӤH]wMݪvܡHOiHաIUӧڭ̴Nӽͽͳoӥ\aI
qĤ}lAڭ̴N@j Linux vOD`nI
ODzΪvȦTب (owner, group, others) ftTv (r,w,x)
ӤwAèSkªwY@ӨϥΪ̩άY@Ӹsըӳ]wSwvݨDAҦpe@p`̫᪺ӥȡI
ɴNonϥ ACL oӾաIoN쪺AUڭ̴Nӽͤ@͡G
ACL O Access Control List YgADnتObѶDzΪ owner,group,others read,write,execute v~ӳv]wCACL iHw@ϥΪ̡A@ɮשΥؿӶi r,w,x vWdAݭnSvϥΪpD`UC
ACL DniHwǤ譱ӱvOHLDniHwXӶءG
nFAAӬݬݦpAɮרtΥiH䴩 ACL aI
ѩ ACL ODzΪ Unix-like @~tvB~䴩ءA]nϥ ACL nɮרtΪ䴩~Cثejɮרtγ䴩 ACL \A]A ReiserFS, EXT2/EXT3, JFS, XFS Cbڭ̪ CentOS 5.x Aw]ϥ Ext3 OҰ ACL 䴩IܩݧAɮרtάO_䴩 ACL iHoˬݡG
[root@www ~]# mount <==d\Ѽƪ\ /dev/hda2 on / type ext3 (rw) /dev/hda3 on /home type ext3 (rw) # LسNLٲFI]ڭ̥unݳoӸ˸mCSݨ acl I [root@www ~]# dumpe2fs -h /dev/hda2 <== superblock ehd ....(eٲ).... Default mount options: user_xattr acl ....(᭱ٲ).... |
mount ¥hd\oiHݨڪءAѩثes distributions ``|Dʥ[JYǹw]\A pWҥܡA CentOS 5.x bw]pU (Default mount options:) NA[J acl 䴩FI pGAtιw]|A[W acl 䴩OHAiHo˰G
[root@www ~]# mount -o remount,acl / [root@www ~]# mount /dev/hda2 on / type ext3 (rw,acl) # o˴N[JFIOpGQnC}ͮġANo˰G [root@www ~]# vi /etc/fstab LABEL=/1 / ext3 defaults,acl 1 1 |
pGATwΪ̬O|ϥ dumpe2fs [AɮרtΡAijNWz /etc/fstab ̭eק@UYiI
nFAA filesystem Ұ ACL 䴩AUӸӦp]wP[ ACL OH ²AQγoӫONiHFG
ڭ̨@@@ setfacl pϥΧaI
[root@www ~]# setfacl [-bkRd] [{-m|-x} aclѼ] ؼɦW ﶵPѼơG -m G]w acl ѼƵɮרϥΡAiP -x XΡF -x GR acl ѼơAiP -m XΡF -b GҦ ACL ]wѼơF -k Gw] ACL ѼơAҿתyw]zѼƩdҤСF -R Gj]w acl AY]Aؿ|Q]w_ӡF -d G]wyw] acl ѼơzNIuؿġAbӥؿsتƷ|ޥΦw] |
Wͨ쪺O acl ﶵ\Ap]w ACL SvOHSv]wkܦhA ڭ̥ӽͽͳ̱`ANOw@ϥΪ̪]w觋G
# 1. wSwϥΪ̪觋G # ]wWdGy u:[ϥΪ̱bC]:[rwx] zAҦpw vbird1 vWd rx G [root@www ~]# touch acl_test1 [root@www ~]# ll acl_test1 -rw-r--r-- 1 root root 0 Feb 27 13:28 acl_test1 [root@www ~]# setfacl -m u:vbird1:rx acl_test1 [root@www ~]# ll acl_test1 -rw-r-xr--+ 1 root root 0 Feb 27 13:28 acl_test1 # vhF + ABP쥻v (644) ݰ_ӮtܤjInpd\OH [root@www ~]# setfacl -m u::rwx acl_test1 [root@www ~]# ll acl_test1 -rwxr-xr--+ 1 root root 0 Feb 27 13:28 acl_test1 # LϥΪ̦CAN]wɮ̡֦AҥHW root v rwx FI |
Wzʧ@²檺 ACL ]wAQΡy u:ϥΪ:v z觋ӳ]wաI]weХ[W -m oӿﶵC
pG@ɮ׳]wF ACL ѼƫALvN|hX@ + FIOɧAݨ쪺vPviN|I~tI
np[OHNzL getfacl aI
[root@www ~]# getfacl filename ﶵPѼơG getfacl ﶵXGP setfacl ۦPIҥHo̴NKhFﶵڡI # ЦCXڭ̳]w acl_test1 veG [root@www ~]# getfacl acl_test1 # file: acl_test1 <==ɦWӤwI # owner: root <==ɮת̡֦AY ll ݨ쪺ĤTϥΪ # group: root <==ɮתݸsաAY ll ݨ쪺ĥ|s user::rwx <==ϥΪ̦COŪANɮ֦̪v user:vbird1:r-x <==w vbird1 v]w rx AP̨֦äPI group::r-- <==wɮsժv]wȦ r mask::r-x <==ɮw]v (mask) other::r-- <==LH֦voI |
WƫD`ed\aHܪƫe[W # ANoɮתw]ݩʡA]AɦWBɮ֦̻PɮשݸsաC UX{ user, group, mask, other hOݩPϥΪ̡BsջPv(mask)]wȡC HWGӬݡAڭ̭]w vbird1 oɮר㦳 r P x vաIoˬݪܡH pGݪܡAUڭ̦bըL setfacl ]waI
# 2. wSwsժ觋G # ]wWdGy g:[sզC]:[rwx] zAҦpw mygroup1 vWd rx G [root@www ~]# setfacl -m g:mygroup1:rx acl_test1 [root@www ~]# getfacl acl_test1 # file: acl_test1 # owner: root # group: root user::rwx user:vbird1:r-x group::r-- group:mygroup1:r-x <==o̴NOsWIhFoӸsժv]wI mask::r-x other::r-- |
WAsջPϥΪ̪]wèSӤjtաIpWҥܡAD`eAѷNqCLAAӷ|ıo_ǪOA mask OFڡHLIOyvzNILNqOG ϥΪ̩θsթҳ]wvnsb mask v]wd~|ͮġAYyv (effective permission)z ڭ|ӨҤlӬݡApUҥܡG
# 3. w靈v mask ]w觋G # ]wWdGy m:[rwx] zAҦpw𫍧ɮ׳WdȦ r G [root@www ~]# setfacl -m m:r acl_test1 [root@www ~]# getfacl acl_test1 # file: acl_test1 # owner: root # group: root user::rwx user:vbird1:r-x #effective:r-- <==vbird1+masksb̡AȦ r ӤwI group::r-- group:mygroup1:r-x #effective:r-- mask::r-- other::r-- |
z@Avbird1 P mask Xo{Ȧ r sbA] vbird1 Ȩ㦳 r vӤwAäsb x vIoNO mask \FIڭ̥iHzLϥ mask ӳWd̤j\vANקKp߶}YvLϥΪ̩θsդFC LAq`ON mask ]w rwx աIMAO̾ڤPϥΪ/sեhWdo̪vNOFC
DG
Ne@p`ȤG /srv/projecta oӥؿA myuser1 iHiJd\A myuser1 㦳ק諸vOC
G
ѩ myuser1 OWߪϥΪ̻PsաA /srv Oݩ / UA] /srv wg㦳 acl \C
zLpU]wYidwG
|
W]wڭ̴NFeȤGݨDIo²OIUڭ̨Ӵդ@UApGڥ root Ϊ̬O pro1 h /srv/projecta W[ɮשΥؿɡAɮשΥؿO_㦳 ACL ]wH NNOAACL v]wO_Qؿҡy~ӡHzլݬݡG
[root@www ~]# cd /srv/projecta [root@www ~]# touch abc1 [root@www ~]# mkdir abc2 [root@www ~]# ll -d abc* -rw-r--r-- 1 root projecta 0 Feb 27 14:37 abc1 drwxr-sr-x 2 root projecta 4096 Feb 27 14:37 abc2 |
AiH㪺o{Av᭱S + ANo acl ݩʨèS~ӳIpGAQn acl bؿUƳ~Ӫ\ANopUo˰FI
# 4. ww]v]w觋G # ]wWdGy d:[ug]:ϥΪ̦C:[rwx] z # myuser1 b /srv/projecta U@㦳 rx w]vI [root@www ~]# setfacl -m d:u:myuser1:rx /srv/projecta [root@www ~]# getfacl /srv/projecta # file: srv/projecta # owner: root # group: projecta user::rwx user:myuser1:r-x group::rwx mask::rwx other::--- default:user::rwx default:user:myuser1:r-x default:group::rwx default:mask::rwx default:other::--- [root@www ~]# cd /srv/projecta [root@www projecta]# touch zzz1 [root@www projecta]# mkdir zzz2 [root@www projecta]# ll -d zzz* -rw-rw----+ 1 root projecta 0 Feb 27 14:57 zzz1 drwxrws---+ 2 root projecta 4096 Feb 27 14:57 zzz2 # ݧaIT꦳~ӳIMڭ̨ϥ getfacl AT{ݬݡI [root@www projecta]# getfacl zzz2 # file: zzz2 # owner: root # group: projecta user::rwx user:myuser1:r-x group::rwx mask::rwx other::--- default:user::rwx default:user:myuser1:r-x default:group::rwx default:mask::rwx default:other::--- |
zLoӡywؿӳ]ww] ACL v]wȡzءAڭ̥iHoݩ~Ө즸ؿUOI D`KڡIpGQn ACL ݩʥSnpBzHzLy setfacl -b ɦW zYiաI ²FINt~ФFIЦۦմէaI
Hb Linux tη٭n@ܴHoOԣHiUXӭ]աI
ѩWzҶqAҥHڭ̳OϥΤ@bnJtΪAݭnitκ@γnsɤ~ର root Ӱʧ@C p@ϥΪܨ root OHDnؤ觋G
Uڭ̴Nӻ@ su sudo ΪkաI
su O²檺OFALiHiIkpUG
[root@www ~]# su [-lm] [-c O] [username] ﶵPѼơG - G¨ϥ - py su - zNϥ login-shell ܼɮŪ觋ӵnJtΡF YϥΪ̦W٨S[WhAhN root C -l GP - A᭱ݭn[ϥΪ̱bI]O login-shell 觋C -m G-m P -p O@˪AܡyϥΥثeҳ]wAӤŪsϥΪ̪]wɡz -c Gȶi@OAҥH -c ᭱iH[WOI |
WX{eĤQ@L login-shell ]wŪ觋ApGAѰOOԣFA Х^hĤQ@@@A^ӧaIo su ΪkAS[WӴy - ztܦhI ]A login-shell P non-login shell ܼŪkCoڭ̥H@ӤpҤlӻaI
dҤ@G]A쥻O vbird1 AQnϥ non-login shell 觋ܦ root [vbird1@www ~]$ su <==`NܦrAO vbird1 I Password: <==o̿J root KXI [root@www vbird1]# id <==ܦrؿO vbird1 I uid=0(root) gid=0(root) groups=0(root),1(bin),... <==TO root I [root@www vbird1]# env | grep 'vbird1' USER=vbird1 PATH=/usr/local/bin:/bin:/usr/bin:/home/vbird1/bin <==oӼvT̤jI MAIL=/var/spool/mail/vbird1 <==쪺 mailbox O vbird1 PWD=/home/vbird1 <==ëD root aؿ LOGNAME=vbird1 # MA UID wgO㦳 root AOݨWXTܡH # ٬O@ܼƬ쥻 vbird1 AҥHܦh٬OLkQΡC [root@www vbird1]# exit <==o˥iH} su ҡI |
¨ϥΡy su z root AŪܼƳ]w觋 non-login shell 觋Aoؤ觋ܦh쥻ܼƤ|QA רOڭ̤eLܦh PATH oܼơAѩSܦ root (@ /sbin, /usr/sbin ؿSQ]ti)A ]ܦh root DΪONuϥε|Ӱ櫣CL٦ MAIL oܼơAAJ mail ɡA 쪺lM٬O vbird1 AӤO root lIO_ıoܩ_ǰڡIҥHɡAаȥϥΦpUdҤGG
dҤGGϥ login shell 觋 root [ܼ [vbird1@www ~]$ su - Password: <==o̿J root KXI [root@www ~]# env | grep root USER=root MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin PWD=/root HOME=/root LOGNAME=root # AѮtFaHUܴ root ɡAOo̦nϥ su - I [root@www ~]# exit <==o˥iH} su ҡI |
Wz@kOϥΪ̪ܦ root ö}lާ@tΡApGQn} root honQ exit }~C ڦpGuOQny@ӥu root ~i檺OAB槹N_쥻zOHNiH[W -c oӿﶵoI аѦҩUdҤTI
dҤTGvbird1 Qny head -n 3 /etc/shadow z@ABw root KX [vbird1@www ~]$ head -n 3 /etc/shadow head: cannot open `/etc/shadow' for reading: Permission denied [vbird1@www ~]$ su - -c "head -n 3 /etc/shadow" Password: <==o̿J root KXI root:$1$/30QpEWEBEZXRD0bh6rAABCEQD.BAH0:14126:0:99999:7::: bin:*:14126:0:99999:7::: daemon:*:14126:0:99999:7::: [vbird1@www ~]$ <==`NݡA٬O vbird1 I~ϥªitξާ@I |
ѩ /etc/shadow vYAɮȦ root iHd\CFd\ɮסAҥHڭ̥nϥ root u@C ڥuQni@ӫOӤwAɴNϥWykaInAUӡApGڬO root Ϊ̬OLHA QnܧYǯSbAiHϥΦpUkӤI
dҥ|G쥻O vbird1 oӨϥΪ̡AQnܴ dmtsai ɡH [vbird1@www ~]$ su -l dmtsai Password: <==o̿J dmtsai KXI [dmtsai@www ~]$ su - Password: <==o̿J root KXI [root@www ~]# id sshd uid=74(sshd) gid=74(sshd) groups=74(sshd) ... <==T꦳sbH [root@www ~]# su -l sshd This account is currently not available. <==MHLkH [root@www ~]# finger sshd Login: sshd Name: Privilege-separated SSH Directory: /var/empty/sshd Shell: /sbin/nologin [root@www ~]# exit <==}ĤG su [dmtsai@www ~]$ exit <==}Ĥ@ su [vbird1@www ~]$ exit <==o~O̪쪺ҡI |
su No²檺ЧA`@ULΪkOo˪G
Mϥ su ܤKաALIOAڪDOhH@ުҮɡApGjanϥ su Ӥ root ANCӤHonD root KXAo˱KXӦhHDi|yXhA ܤOIHzL sudo ӳBzYiI
۹ su ݭnAѷsϥΪ̱KX (``Oݭn root KX)A sudo hȻݭnۤvKXYiI
ƦܥiH]wݭnKXYi sudo OIѩ sudo iHAHLΤ᪺O
(q`Oϥ root ӰO)A]ëDҦH sudo A
ӬOȦWd /etc/sudoers Τ~ sudo oӫOIo_AUN@@ sudo
pϥΡH
ѩ@}ltιw]Ȧ root iH sudo A]Udҧڭ̥H root ӰAͨ visudo ɡAAH@ϥΪ̨ӰQרL sudo ΪkaI sudo ykpUG
[root@www ~]# sudo [-b] [-u sϥΪ̱b] ﶵPѼơG -b GNOItΦۦAӤPثe shell ͼvT -u G᭱iHϥΪ̡AYLhN root C dҤ@GAQnH sshd b /tmp Uإߤ@ӦW mysshd ɮ [root@www ~]# sudo -u sshd touch /tmp/mysshd [root@www ~]# ll /tmp/mysshd -rw-r--r-- 1 sshd sshd 0 Feb 28 17:42 /tmp/mysshd # SOdNAoɮתvO sshd ҫإߪpI dҤGGAQnH vbird1 إ ~vbird1/www é𫟺إ index.html ɮ [root@www ~]# sudo -u vbird1 sh -c "mkdir ~vbird1/www; cd ~vbird1/www; \ > echo 'This is index.html file' > index.html" [root@www ~]# ll -a ~vbird1/www drwxr-xr-x 2 vbird1 vbird1 4096 Feb 28 17:51 . drwx------ 5 vbird1 vbird1 4096 Feb 28 17:51 .. -rw-r--r-- 1 vbird1 vbird1 24 Feb 28 17:51 index.html # n`NAإߪ̪O vbird1 ABڭ̨ϥ sh -c "@O" Ӱ檺I |
sudo iHAӶiYȡAҦpWӽdҡCdҤ@Aڭ̪ root ϥ sshd vhiYȡI n`NA]ڭ̵LkϥΡy su - sshd zhtαb (]tαb shell O /sbin/nologin)A oӮɭ sudo uOL X nΤFIߨH sshd vb /tmp UإɮסId\@UɮvANAѷNqաI ܩdҤGhϥΦhO (zL ; өOi)Aϥ sh -c kӰ@sꪺOA puOnKI
O sudo w]Ȧ root ϥΰڡIOH] sudo Oo˪y{G
ҥHAsudo 檺IOGy_ϥ sudo n /etc/sudoers ]wȡA
ӥiϥ sudo ̬OzLJϥΪ̦ۤvKXӰOzIѩ_ϥλP /etc/sudoers A
ҥHڭ̷Mnhs sudoers ɮװաILA]ɮתeO@wWdA]ϥ vi hsOnC
ɡAڭ̱onzL visudo hקoɮ׳I
qWڭ̥iHDAF root ~LbAYQnϥ sudo ݩ root vOAh root ݭnϥ visudo hק /etc/sudoers AӱbϥΥγ root O\Cnϥ visudo OHoO] /etc/sudoers O]wykApG]w~|yLkϥ sudo O}GC]~|ϥ visudo hקA æb}קeɡAtη|h /etc/sudoers ykNOFC
@ӻAvisudo ]w觋X²檺kAUڭ̥HX²檺ҤlӤOG
[root@www ~]# visudo ....(eٲ).... root ALL=(ALL) ALL <==o@Ajb 76 楪k vbird1 ALL=(ALL) ALL <==o@OAnsWI ....(eٲ).... |
ϥΪ̱b nJ̪ӷDW=(i) iUFO
root ALL=(ALL) ALL <==oOw]
|
[vbird1@www ~]$ tail -n 1 /etc/shadow <==`NIO vbird1 tail: cannot open `/etc/shadow' for reading: Permission denied # ]O root IҥHMd /etc/shadow [vbird1@www ~]$ sudo tail -n 1 /etc/shadow <==zL sudo We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. <==o̶ȬO@ǻPĵܶ #2) Think before you type. #3) With great power comes great responsibility. Password: <==`NڡIo̿JOy vbird1 ۤvKX z pro3:$1$GfinyJgZ$9J8IdrBXXMwZIauANg7tW0:14302:0:99999:7::: # ݡIvbird1 MiHd shadow I |
[root@www ~]# visudo <==P˪AШϥ root ]w ....(eٲ).... %wheel ALL=(ALL) ALL <==jb 84 楪kAбNo檺 # I # b̥[W % AN᭱O@ӡysաzNI粒xs} [root@www ~]# usermod -a -G wheel pro1 <==N pro1 [J wheel 䴩 |
[pro1@www ~]$ sudo tail -n 1 /etc/shadow <==`NO pro1 ....(eٲ).... Password: <==J pro1 KXI pro3:$1$GfinyJgZ$9J8IdrBXXMwZIauANg7tW0:14302:0:99999:7::: [pro2@www ~]$ sudo tail -n 1 /etc/shadow <==`NO pro2 Password: pro2 is not in the sudoers file. This incident will be reported. # JӬݿ~TLOo pro2 b /etc/sudoers ]wI |
[root@www ~]# visudo <==P˪AШϥ root ]w ....(eٲ).... %wheel ALL=(ALL) NOPASSWD: ALL <==jb 87 楪kAбN # I # b̥[W % AN᭱O@ӡysաzNI粒xs} |
[root@www ~]# visudo <==`NO root myuser1 ALL=(root) /usr/bin/passwd <==̫Oȥε| |
[myuser1@www ~]$ sudo passwd myuser3 <==`NAO myuser1 Password: <==J myuser1 KX Changing password for user myuser3. <==U諸O myuser3 KXIoˬOT New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. [myuser1@www ~]$ sudo passwd Changing password for user root. <==I|h root KXH |
[root@www ~]# visudo <==`NO root myuser1 ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \ !/usr/bin/passwd root |
[root@www ~]# visudo <==`NO root User_Alias ADMPW = pro1, pro2, pro3, myuser1, myuser2 Cmnd_Alias ADMPWCOM = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, \ !/usr/bin/passwd root ADMPW ALL=(root) ADMPWCOM |
[root@www ~]# visudo User_Alias ADMINS = pro1, pro2, pro3, myuser1 ADMINS ALL=(root) /bin/su - |
ڭ̫e@ͨ쪺jhO@먭ϥΪ̻Ptκz (root) ާ@A ӥBjhOQinJtΪbӻCӨQApGڤѷQnإߪA O@ӡyȯϥ mail server lAȪbAӸӱbänJ Linux DzOHpG൹ӱb@ӱKXAӱbNLkϥΨtΪU귽AM]]A mail 귽A ӦpG@ӱKXAӱbNiiHnJ Linux DڡI˸a ҥHAUڭ̨ӽͤ@ͳoǦ쪺DoI
t~AbeͨL /etc/login.defs ɮפAKXӹw]O
5 ӦrסAOڭ̤W]ͨAӳ]wȤwgQ PAM ҲթҨNFA PAM
OHLiHvTڭ̨ϥΪ̪nJOHo̤]nӽͽͪI
b@}Y passwd ɮc̭ڭ̴NLtαboNAoN shell NOϥ /sbin/nologin AIbtαbOݭnnJIҥHڭ̴NLoӵLknJXk shellC ϥΤFo shell ΤYϦFKXAAQnnJɥL]LknJA]|X{pUTG
This account is currently not available. |
ڭ̩ҿתyLknJzȬOGyoӨϥΪ̵Lkϥ bash ΨL shell ӵnJtΡzӤwA äOoӱbNLkϥΨLtθ귽I |ҨӻAUӨtαbACLu@ lp oӱbbzA WWW Aȥ apache oӱbbzA L̳iHitε{Ǫu@AOyNOLknJDzӤwաI^_^
ӨרӷQApGڪ Linux DѪOlAȡAҥHAbo Linux DWbA jOΨӦDHӤwAäݭnnJDOI oӮɭԡAڭ̴NiHҼ{¨ϥ mail bH /sbin/nologin L̪ shell A oˡA̰_XڪDQշQnnJtΥHo shell ҮɡAiHڵӱbOI
t~ApGڷQnYӨ㦳 /sbin/nologin ϥΪ̪DAL̤nJDɡA ڥiHإߡy /etc/nologin.txt zoɮסA åBboɮפnJ]AUoӨϥΪ̷QnnJtήɡA ùWX{N|O /etc/nologin.txt oɮתeAӤOw]eFI
DG
ϥΪ̹էQί mail b (Ҧp myuser3) ɡAQ /etc/nologin.txt
iϥΪ̤nQθӱbnJtΡC
G
H vi sɮסAeiHOoˡG
|
bLhAڭ̷Qn@ӨϥΪ̶i{ (authentication)AonnDϥΪ̿JbKXA MzLۦ漶g{ӧP_ӱbKXO_TC]]pAڭ̱``oϥΤPӧP_bKXA ҥHd@DW֦hӦUO{ҨtΡA]ybKXiणPBҰDI FѨMoӰD]F PAM (Pluggable Authentication Modules, OJҲ) I
PAM iHO@Mε{ (Application Programming Interface, API)ALѤF@sꪺҾAunϥΪ̱NҶqݨDi PAM A PAM N^ϥΪҪG (\Υ)Cѩ PAM ȬO@MҪASiHѵL{ҩIsޥΡA]קAϥΤ{AiHϥ PAM ӶiҡAp@ӡANbKXΪ̬OL觋Ҩ㦳@PGI]{]pvKBzҪDI (5)
pWzϥܡA PAM O@ӿWߪ API sbAun{ݨDɡAiHV PAM oXҭnDqA PAM gL@sꪺҫANҪG^ӵ{AMӵ{NQҪGӶiinJܨLLkϥΪTC o]NOAAiHbg{ɭԱN PAM Ҳժ\[JANQ PAM ҥ\oC ]ثeܦh{|Q PAM IҥHڭ̤~nӾDzߥLڡI
PAM ΨӶiҪƺ٬Ҳ (Modules)AC PAM Ҳժ\ೣӬۦPC|ҨӻA ٰOoڭ̦bϥ passwd OɡApGHKJrW䪺쪺rA passwd N|^~TFIoOOHoNO PAM pam_cracklib.so Ҳժ\ILP_ӱKXO_br̭I æ^KXק{AɴNAѧAKXjפFC
ҥHAAݭnP_O_brKXrɡANiHϥ pam_cracklib.so oӼҲըҡI îھҪ^GӼgA{OIo˻AiHz PAM \FaHSI PAM Ҳդ]Oܭn@I
PAM ǥѤ@ӻP{ۦPɦW]wɨӶi@sꪺ{ҤRݨDCڭ̦P˥H passwd oӫOIs PAM ӻnFC A passwd Ao{Is PAM y{OG
qWYAڭ̷|DIO /etc/pam.d/ ̭]wɡAHγ]wɩҩIs PAM Ҳնi檺Ҥu@I JM@ͨ passwd oӱKXקOAڭ̴NӬݬ /etc/pam.d/passwd oӳ]wɪeO˧aI
[root@www ~]# cat /etc/pam.d/passwd #%PAM-1.0 <==PAMӤwI auth include system-auth <==C@泣O@ҪL{ account include system-auth password include system-auth O з PAM ҲջPӼҲժѼ |
boӳ]wɷAFĤ@ŧi PAM ~ALy # z}YOѡAӨC@泣O@ӿWߪҬy{A C@iHϤTAOOO(type)Bз(flag)BPAMҲջPӼҲժѼơC Uڭ̥ӽͽOPзdzoⶵƧaI
A|o{bڭ̤WX{Oy include (]A) zorALNOyЩIs᭱ɮרӧ@oOҡzA ҥHAWzC@泣nƩIs /etc/pam.d/system-auth ɮרӶiҪNIODn|ءAOpUG
o|Ҫq`OǪAL]ҥ~NOFC
|Ǫ]OA(1)ڭ`OonҨ (auth) A
(2)tΤ~ǥѨϥΪ̪AvPv]w (account)AӥB(3)nJPnXҤ~ݭn]wA
]~ݭnOnJPnXT (session)CpGbB@ݭnKXqɡA(4)~ password OCo˻_ӡA
۵MOݭnIǧaI
yҪX(control flag)zSOH²檺ALNOyҳqLзǡzաI obޱҪ觋ADn]|ر觋G
pGNoDZXХHϥܪ觋tX\P_øϡA|IUoˡG
{B@L{JҮɤ~|hIs PAM A PAM ҤSܦhPAPXЩҦ^TäۦPC pWϩҥܡA requisite ѴN^Fä|~A sufficient hO\N^F]|~C ܩҵҦ^Tq`Oysucces failure zӤwAy{ٻݭnӵ{P_~~C
ͧF]wɪykA{bڭ̨Ӭd\@U CentOS 5.x Ѫ PAM w]ɮתeOԣaI ѩڭ̱``ݭnzLUؤ觋nJ (login) tΡA]NӬݬݵnJһݭn PAM y{G
[root@www ~]# cat /etc/pam.d/login #%PAM-1.0 auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so auth include system-auth account required pam_nologin.so account include system-auth password include system-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session include system-auth session required pam_loginuid.so session optional pam_console.so # pam_selinux.so open should only be followed by sessions... session required pam_selinux.so open session optional pam_keyinit.so force revoke # ڭ̥iHݨA login ]Ish system-auth AҥHUCXӳ]w [root@www ~]# cat /etc/pam.d/system-auth #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so account required pam_unix.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet \ use_uid session required pam_unix.so |
WoӪϥΨD`h PAM ҲաACӼҲժ\ೣӬۦPAԲӪҲձiHbAtΤG
ҦpϥΥ update L CentOS 5.2 Apam_nologin ɦbG /usr/share/doc/pam-0.99.6.2/txts/README.pam_nologinCAiHۦd\@UӼҲժ\C o̶²椶дXӸ`ϥΪҲաAԲӪTٱonzVOd\ѦҮѩOI ^_^
AѤFoǼҲժjP\AkǡAQפ@U login PAM Ҿy{Oo˪G
`ANO̾O (type) ӬݡAM login ]wȥhd\ApGX{y include system-auth z N system-auth ɮפۦPOAhoB~Ҭy{NOFCMAU@OA̲ױNҦҶ]I No PAM ҰաI
gLo˪Ҭy{A{bADԣ /etc/nologin sb|DA]|DAϥΤ@ǻݳsuɡA ѬOLkϥ root nJDFaHSIoO PAM ҲմѪ\աI
DG
root LkH telnet nJtΡAOoϥ ssh nJH
G
@ӻA telnet |ޥ login PAM ҲաA login Ҷq| /etc/securetty I
ѩݳsuݩ pts/n (n Ʀr) ʺAݾ˸mW١AèSgJ /etc/securetty A
] root LkH telnet nJݥDCܩ ssh ϥΪO /etc/pam.d/sshd oӼҲաA
AiHd\@UӼҲաAѩӼҲժҶqèS[J pam_securetty A]NS /etc/securetty
IGiHqݪsuAݡC
t~A telnet P ssh ӳAаѦ Linux pеAg |
Fe@p`ͨ쪺 /etc/securetty |vT root inJwݾA /etc/nologin
|vT@ϥΪ̬O_nJ\ध~Aڭ̤]D PAM ]wɦb /etc/pam.d A
b /usr/share/doc/pam-() AҲչڦb /lib/security/ C٦S PAM ɮשOH
OADnb /etc/security oӥؿIڭ̩UдXӥi|Ψ쪺]wɳI
ڭ̦bĤQ@ͨ쪺 ulimit \तA FקϥΪ̪ ~/.bashrc ]wɤ~AtκziHΤ@ǥ PAM ӺzI NO /etc/security/limits.conf oɮת]wFCoɮת]w²AAiHۦѦҤ@UɮפeC ڭ̳o̶ȧ@²檺СG
dҤ@Gvbird1 oӥΤuإ 100MB ɮסABj 90MB |ĵi [root@www ~]# vi /etc/security/limits.conf vbird1 soft fsize 90000 vbird1 hard fsize 100000 #b ̾ # Ĥ@쬰bAΪ̬OsաIYsիheݭn[W @ AҦp @projecta # ĤG쬰̾ڡAOY(hard)A٬OȬĵi(soft)F # ĤT쬰AҤɮeqA # ĥ|쬰ȡAbҤ쬰 KBC # YH vbird1 nJAipUާ@h|X{I [vbird1@www ~]$ ulimit -a ....(eٲ).... file size (blocks, -f) 90000 ....(᭱ٲ).... [vbird1@www ~]$ dd if=/dev/zero of=test bs=1M count=110 File size limit exceeded [vbird1@www ~]$ ll -k test -rw-rw-r-- 1 vbird1 vbird1 90000 Mar 4 11:30 test # GMF dҤGG pro1 oӸsաACȯ@ӨϥΪ̵nJt (maxlogins) [root@www ~]# vi /etc/security/limits.conf @pro1 hard maxlogins 1 # pGnϥθsե\ܡAoӥ\Glsդ~ijI # ӦpGAզh pro1 nJɡAĤGӥHNLknJFC # ӥBb /var/log/secure ɮפٷ|X{pUTG # pam_limits(login:session): Too many logins (max 1) for pro1 |
oɮ쪺AӥBO]wNͮĤFAAέsҰʥAȪI
O PAM ӯSaAѩLOb{Isɤ~H]wA]Aק粒ơA
wnJtΤϥΪ̬OSĪGAnLAnJɤ~|ͮijIt~A
Wz]wЦbէߨѱA_hUoӨϥΪ̵nJN|oͨdz\DաI ^_^
pGoͥLknJΪ̬Oͤ@ǧALkw~ɡAѩ PAM Ҳճ|NưOb /var/log/secure AҥHoͤFDаȥɮפhdߤ@UDII|ҨӻA ڭ̦b limits.conf ФdҤGANͨhnJ~iH /var/log/secure d\FI o˧A]NDĤG pro1 LknJաI^_^
ͤFohbDA`Oӭnͤ@͡ApwtΤWϥΪ̶idߧaH
QXӪAApGAb Linux Wާ@ɡAnLϥΪ̤]nJDAAQnL͡AӦpOnH
AQnDYӱbTAӦpd\HIIIUڭ̴NӲ@
pdߤ@ӨϥΪ̪ƩOHo٤²Aڭ̤eNLF id, finger OFAiHzAѨ@ӨϥΪ̪TաIQnDϥΪ̨쩳ԣɭԵnJOH ²iHϥ last ˬdڡIoӪNڭ̤]b ĤQ@ bash LFA ziHۦeѦҰڡI²檺ܡC
Red Hat tΪA last ȷ|CX몺nJ̸TALbڭ̪ CentOS 5.x HA last iHCXqtΫإߤثeҦnJ̸TIoO]nɽ]wPҭPC ԲӪiHѦҫĤQEn²CpGAQnDثewnJbtΤWϥΪ̩OHiHzL w who Ӭd߳IpUdҩҥܡG
[root@www ~]# w 13:13:56 up 13:00, 1 user, load average: 0.08, 0.02, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/1 192.168.1.100 11:04 0.00s 0.36s 0.00s -bash vbird1 pts/2 192.168.1.100 13:15 0.00s 0.06s 0.02s w # Ĥ@ܥثeɶB} (up) h[AXӨϥΪ̦btΤWtF # ĤGuOUӶتA # ĤTHACN@ӨϥΪ̡CpWҥܡAroot nJèoݾW pts/1 NC [root@www ~]# who root pts/1 2009-03-04 11:04 (192.168.1.100) vbird1 pts/2 2009-03-04 13:15 (192.168.1.100) |
t~ApGzQnDCӱb̪nJɶAhiHϥ lastlog oӫOI lastlog |hŪ /var/log/lastlog ɮסAGNƿXpUG
[root@www ~]# lastlog Username Port From Latest root pts/1 192.168.1.100 Wed Mar 4 11:04:22 +0800 2009 bin **Never logged in** ....(ٲ).... vbird1 pts/2 192.168.1.100 Wed Mar 4 13:15:56 +0800 2009 ....(HUٲ).... |
o˴NDCӱb̪nJɶo ^_^
ڬO_iHtΤWϥΪ̽ͤѻaOHMiHաIQ write oӫOYiC write iHNTǵoI|ҨӻAڭ̪ Linux ثe vbird1 P root ӤHbuWA ڪ root n vbird1 ܡAiHo˰G
[root@www ~]# write ϥΪ̱b [ϥΪ̩Ҧbݤ] [root@www ~]# who root pts/1 2009-03-04 11:04 (192.168.1.100) vbird1 pts/2 2009-03-04 13:15 (192.168.1.100) <==ݨ vbird1 buW [root@www ~]# write vbird1 pts/2 Hello, there: Please don't do anything wrong... <==oO root gTI # ɡAЫU [crtl]-d ӵJCɦb vbird1 eA|X{G Message from root@www.vbird.tsai on pts/1 at 13:23 ... Hello, there: Please don't do anything wrong... EOF |
ǩǡߨ|T^ vbird1 IL...... vbird1 bdơAzI oǰT|ߨ襕_ vbird1 쥻u@IҥHApG vbird1 oӤHQnTAUFoӰʧ@G
[vbird1@www ~]$ mesg n [vbird1@www ~]$ mesg is n |
LAo mesg \ root ǰeӪTSתOIҥHpGO root ǰeTA vbird1 ٬OonUC OpG root mesg O n A vbird1 g root T|ܳoˡG
[vbird1@www ~]$ write root
write: root has messages disabled
|
AѥGHpGQnѶ}ܡAAUFy mesg y zNnաIQnDثe mesg AAUFy mesg zYiIAIH ۹ write OȰw@ӨϥΪ̨Ӷǡy²TzAڭ٥iHyҦtΤWϥΪ̶ǰe²T (s)z pUFH wall YiڡILyk]O²檺I
[root@www ~]# wall "I will shutdown my linux server..."
|
MAN|o{ҦH|o²TOI
ϥ wall, write nϥΪ̦buW~iASL觋pڡH OC Linux DWϥΪ̳㦳@ mailbox ܡH ڭ̥i_HHϥΪ̰ڡIIMiHڡIڭ̥iHHB mailbox HOI @ӻA mailbox |mb /var/spool/mail ̭A@ӱb@ mailbox (ɮ)C |ҨӻAڪ vbird1 N㦳 /var/spool/mail/vbird1 o mailbox I
ڸӦpHXHOHNϥ mail oӫOYiIoӫOΪk²檺AoˤUFGy mail username@localhost -s "lD" zYiI @ӻApGOHWϥΪ̡AWAsy @localhost zμgաI |ҨӻAڥH root HH vbird1 AHDOy nice to meet you zAhG
[root@www ~]# mail vbird1 -s "nice to meet you" Hello, D.M. Tsai Nice to meet you in the network. You are so nice. byebye! . <==o̫ܭnAɡA̫@JpI . YiI Cc: <==o̬OҿתyƥzAݭnHLHAҥH [Enter] [root@www ~]# <==X{ܦrAܿJFI |
p@ӡAANwgHX@ʫH vbird1 oϥΪoAӥBAӫHDG nice to meet youAHeNpPW쪺CLAAγ\|ıo mail oӵ{nΡ ]bHsgL{ApGgrӫU Enter iJAe@檺ƫRI HSYաIڭ̨ϥθƬyɦVڡIIQΨӤpŸ ( < ) NiHFNLJnDFC]NOAAiH vi NHesnA MAH mail vbird1 -s "nice to meet you" < filename ӱNɮפeǿYiC
DG
бNAaؿUܼ (~/.bashrc) HۤvI
G
mail -s "bashrc file content" vbird < ~/.bashrc
|
W쪺OyHHzDApGOnHOHIP˪ϥ mail ڡI ]ڥH vbird1 nJDAMJ mail A|o줰H
[vbird1@www ~]$ mail Mail version 8.1 6/6/93. Type ? for help. "/var/spool/mail/vbird1": 1 message 1 new >N 1 root@www.vbird.tsai Wed Mar 4 13:36 18/663 "nice to meet you" & <==o̥iHJܦhOApGnd\AJ ? YiI |
b mail ܦrO & ŸAOdFJ mail AڥiHݨڦ@ʫHA oʫHe > NثeBzHAӦbjŸk䨺 N NӫʫH|ŪLA pGڷQnDo mail OǡAiHb & Jy ? zANiHݨpUeG
& ?
Mail Commands
t <message list> type messages
n goto and type next message
e <message list> edit messages
f <message list> give head lines of messages
d <message list> delete messages
s <message list> file append messages to file
u <message list> undelete messages
R <message list> reply to message senders
r <message list> reply to message senders and all recipients
pre <message list> make messages go back to /usr/spool/mail
m <user list> mail to specific users
q quit, saving unresolved messages in mbox
x quit, do not remove system mailbox
h print out active message headers
! shell escape
cd [directory] chdir to directory or home if none given
|
<message list> OCʶl䨺ӼƦrաIӴXӤ`OOG
O | Nq |
h | CXHYFpGnd\ 40 ʫHkHYAiHJy h 40 z |
d | RHXARʬOy d10 zAR 20~40 ʫhy d20-40 zC LAoӰʧ@nͮĪܡAntX q oӫO~(ѦҩU)I |
s | NHxsɮסCҦpڭnN 5 ʫHes ~/mail.file:ys 5 ~/mail.filez |
x | Ϊ̿J exit iHCoӬOy@ʧ@} mail {zNC קARFHAΪŪLAϥ exit |} mailAҥHi檺RP\Ūu@|LġC pGzuOd\@UlӤwܡA@ӻAijϥγo}աIDAunRYǫHC |
q | ۹ exit Oʧ@}A q h|iⶵʧ@G 1. NRHX mailbox ~F 2. N観\ŪLHsJ ~/mbox ABX mailbox ~Cq`ܳwϥ q }A ]AܮeѰOŪLNNɭPHLX mailbox |
ѩŪLHYϥΡy q z} mail ɡA|NӫHʨ ~/mbox AҥHAiHo˷QG /var/spool/mail/vbird1 vbird1 ysXzA /home/vbird1/mbox hyXzNC pŪ /home/vbird1/mbox OHNϥΡymail -f /home/vbird1/mboxzYiC
@ӻAڭ̤ܫijjaϥΤʪ觋ӷsWϥΪ̡AOH ]ϥΪ̪إ߯AΨ GID/UID vYAӥBAPɮ/ؿv]YA ϥ useradd iHڭ̦۰ʳ]wn UID/GID aؿHήaؿv]wA OAʨӼW[ɭԡAi|ѪFѦAGɭP@ǧxZo͡C
LAnAѾӨtΡA̦n٬OʨӭקLnAܤ֧ڭ̪bDiH̷ӦۤvNhqA
ӤENtΪw]ȰڡIOA٬Oni|@UB̡ͭAnʳ]wbɡA
znuAѦۤvb@AרOPv]w譱InaIUNڭ̨Ӫ@o ^_^
JMnʭקb]wɡA@ˬdsաBbONiDڡ
רOӱKXഫ pwconv pwuconv oӪNinܩOIUڭ̵yLФ@UoǫOaI
pwck oӫObˬd /etc/passwd oӱb]wɤTAPڪaؿO_sbTA ٥iH /etc/passwd /etc/shadow TO_@PAt~ApG /etc/passwd ~ɡA|ܨϥΪ̭qC @ӻAڥuOQγoӪNˬdڪJO_TNOFC
[root@www ~]# pwck
user adm: directory /var/adm does not exist
user uucp: directory /var/spool/uucp does not exist
user gopher: directory /var/gopher does not exist
|
@IWȬOiڡAoDZbèSaؿAѩDZbjOtαbA
T]ݭnaؿAҥHAOy`~IzIzLC ^_^C
۹sˬdiHϥ grpck oӫOաI
oӫODnتObyN /etc/passwd bPKXAʨ /etc/shadow Iz Unix tηèS /etc/shadow OAҥHAϥΪ̪nJKXOb /etc/passwd ĤGAӬFtΦwA~NKXƲʨ /etc/shadow Cϥ pwconv AiHG
@ӻApGz`ϥ useradd W[ϥΪ̮ɡAϥ pwconv ä|ʧ@A] /etc/passwd P
/etc/shadow ä|WzIDڡI ^_^CLApGʳ]wbAo pwconv NܭnoI
۹ pwconv A pwunconv hOyN /etc/shadow KXƼg^ /etc/passwd A
åBR /etc/shadow ɮסCzoӫObA̦nnϥΰաI
]L|NA /etc/shadow RIpGAѰOƥAS|ϥ pwconv ܡAYOI
chpasswd OӮ쪺OALiHyŪJ[KeKXAåBgL[KA N[K᪺KXgJ /etc/shadow CzoӫOܱ`QϥΦbjqظmbpI LiH Standard input ŪJơACƪ榡Oy username:password zC |ҨӻAڪtηӨϥΪ̱b dmtsai AڷQnsLKX (update) A pLKXO abcdefg ܡAڥiHo˰G
[root@www ~]# echo "dmtsai:abcdefg" | chpasswd -m
|
_aIo˴NiHsFOIbw]pA chpasswd ϥΪO DES [Kkӥ[KA ڭ̥iHϥ chpasswd -m Өϥ CentOS 5.x w] MD5 [KkCoӫOMwgܦnΤFAL CentOS 5.x wgѤFy passwd --stdin zﶵAѹ껡Ao chpasswd iHϥΤFCҼ{Lo| --stdin passwd oӫOAҥHz٬OonAѤ@UoӫOγ~I
bڭAѤF UID/GID PbYAWAzAѤFAԣڭ̤ijϥί¼ƦrbFI]ܦhɭԡAtη|dMռƦrOybz٬Oy UID zAoOܦnա]]AbYǪUAOSkϥμƦrӫإ߱bCҦpb Red Hat 9 ҤA ϥΡy useradd 1234 zL|ܡy useradd: invalid user name '1234' zAѤFܡH
bs distribution A¼ƦrbwgiHQ useradd إߤFCL٬OD`ijϥί¼ƦrbC Ҧpb setfacl ]wȤAYϥΡy setfacl -m u:501:rwx filename z 501 NO UID ٬ObH ] setfacl ]wO䴩ϥ UID αbA¼ƦrbܮeytΪ~ѡILAɭԡAxRO @_@ ٬Oonإ߳o譱bAӦpOnH IMiHʨӫإ߳o˪bաILAFtΦw_A٬Oijϥί¼ƦrbաI ]AUdҷAڭ̨ϥΤʪ觋ӫإߤ@ӦW normaluser bA ӥBoӱbݩ normalgroup oӸsաCOKIӨBJӦpOnOH ѫeӬݡAzAѤFbPsլOP /etc/group, /etc/shadow, /etc/passwd, /etc/gshadow A]AӰʧ@Oo˪G
1. إ߸s normalgroup A] 520 o GID SQϥΡIåBPB gshadow [root@www ~]# vi /etc/group # b̫@[JUo@I normalgroup:x:520: [root@www ~]# grpconv [root@www ~]# grep 'normalgroup' /etc/group /etc/gshadow /etc/group:normalgroup:x:520: /etc/gshadow:normalgroup:x:: # ̫Tw /etc/group, /etc/gshadow sboӸsդ~IdwsoI 2. إ normaluser oӱbA] UID 700 SQϥαI [root@www ~]# vi /etc/passwd # b̫@[JUo@I normaluser:x:700:520::/home/normaluser:/bin/bash 3. PBƱKXAåBإ߸ӨϥΪ̪KX [root@www ~]# pwconv [root@www ~]# grep 'normaluser' /etc/passwd /etc/shadow /etc/passwd:normaluser:x:700:520::/home/normaluser:/bin/bash /etc/shadow:normaluser:x:14307:0:99999:7::: # Tw /etc/passwd, /etc/shadow t normaluser TFIOKX٤ [root@www ~]# passwd normaluser Changing password for user normaluser. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. 4. إߨϥΪ̮aؿAåBqvI [root@www ~]# cp -a /etc/skel /home/normaluser [root@www ~]# chown -R normaluser:normalgroup /home/normaluser [root@www ~]# chmod 700 /home/normaluser |
OháIo˴NdwF@ӱb]wFI qHAAiHإߥW٪bo㤣LA٬Oijz]w@ǫܩǫܩǪbWٰաI
ѩ CentOS 5.x passwd wgѤF --stdin \A]pGڭ̥iHѱbKXܡA N²檺ظm_ڭ̪bKXFCUs@@²檺 script ӰsWΤ᪺\I
[root@www ~]# vi account1.sh #!/bin/bash # o{Ψӫإ߷sWbA\G # 1. ˬd account1.txt O_sbAñNɮפbXF # 2. إߤWzɮתbF # 3. NWzbKXqyjĤ@iJݭnקKXz榡C # 2009/03/04 VBird export PATH=/bin:/sbin:/usr/bin:/usr/sbin # ˬd account1.txt O_sb if [ ! -f account1.txt ]; then echo "һݭnbɮפsbAЫإ account1.txt AC@ӱbW" exit 1 fi usernames=$(cat account1.txt) for username in $usernames do useradd $username <==sWb echo $username | passwd --stdin $username <==PbۦPKX chage -d 0 $username <==jnJקKX done |
Uӥunإ account1.txt oɮקYiIإ߳oɮ̭@QAAiHۦإ߸ɮסI eC@@ӱbC`NA̲תG|OCӱb㦳PbۦPKXAB즸nJA ns]wKX~AnJϥΨtθ귽I
[root@www ~]# vi account1.txt std01 std02 std03 std04 std05 std06 std07 std08 std09 std10 [root@www ~]# sh account1.sh Changing password for user std01. passwd: all authentication tokens updated successfully. ....(᭱ٲ).... |
o²檺}AiHbpUsUG
t~A script Ob zh_TW.big5 ytUإߪApGAݭnনUX (utf8) sX榡A ФUWzɮAQĤQͨ쪺 iconv ӳBzytDI
e@p`ewgiHܦhBͪbظmkFALAYǮɭԤWz script ٬Oܳ·СI ]ݭnʽs account1.txt IpGOǮճoؾǸD`bɡAS֪סH ~ApGݭnCӯZŦPݩ@ӸsաAPZŪsդPASӦpظmHoO·аաI
ثeܦhѤjqإ߱buAҦpxnߪsjvG
ѪnΪ cmpwd {AOpTjv{ȨѾdzNϥΡA@ӤHOLvϥΪ(ѦҤWzsv)C LAڭ̤]iHQ²檺 script ڭ̹FIҦpUo{A L浲GPpTjvѪ{thաO]ڬOH useradd ӷsWA ҥHAYϤA UID A]OiHAΪա{SOG
k]²檺nRЦۦѦҪաIAhϥήɽЪ`NAnbaϥΪDWiաA]..... o{|jqإ߱bI^_^
#!/bin/bash # # o{DnbzإߤjqbΡAhϥΤkаѦҡG # http://vbird.org.cn/linux_basic/0410accountmanager.php#manual_amount # # {ۦ}oAb CentOS 5.x WϥΨSDA # Oҵ|oͿ~IϥήɡAЦۦt᭷I # # History: # 2005/09/05 VBird ~gAϥάݬݥ # 2009/03/04 VBird [J@ǻytקPAקKXͤ觋 ( openssl) export LANG=zh_TW.big5 export PATH=/sbin:/usr/sbin:/bin:/usr/bin accountfile="user.passwd" # 1. ibJI echo "" echo "Ҧpڭ̱Xs|ުǸG 4960c001 4960c060 AG" echo "b}YNX G4" echo "bhũΦ~Ŭ G960c" echo "XƦrƬ(001~060)G3" echo "b}lX G1" echo "bƶq G60" echo "" read -p "b}YNX ( Input title name, ex> std )======> " username_start read -p "bhũΦ~ ( Input degree, ex> 1 or enter )=> " username_degree read -p "XƦr ( Input \# of digital )======> " nu_nu read -p "_lX ( Input start number, ex> 520 )========> " nu_start read -p "bƶq ( Input amount of users, ex> 100 )=====> " nu_amount read -p "KXз 1) PbۦP 2)üƦۭq ==============> " pwm if [ "$username_start" == "" ]; then echo "SJ}YNXAAI" ; exit 1 fi # P_Ʀrt testing0=$(echo $nu_nu | grep '[^0-9]' ) testing1=$(echo $nu_amount | grep '[^0-9]' ) testing2=$(echo $nu_start | grep '[^0-9]' ) if [ "$testing0" != "" -o "$testing1" != "" -o "$testing2" != "" ]; then echo "JXաIDƦreI" ; exit 1 fi if [ "$pwm" != "1" ]; then pwm="2" fi # 2. }lXbPKXɮסI [ -f "$accountfile" ] && mv $accountfile "$accountfile"$(date +%Y%m%d) nu_end=$(($nu_start+$nu_amount-1)) for (( i=$nu_start; i<=$nu_end; i++ )) do nu_len=${#i} if [ $nu_nu -lt $nu_len ]; then echo "ƭȪ($i->$nu_len)wgA]w($nu_nu)٤jI" echo "{Lk~" exit 1 fi nu_diff=$(( $nu_nu - $nu_len )) if [ "$nu_diff" != "0" ]; then nu_nn=0000000000 nu_nn=${nu_nn:1:$nu_diff} fi account=${username_start}${username_degree}${nu_nn}${i} if [ "$pwm" == "1" ]; then password="$account" else password=$(openssl rand -base64 6) fi echo "$account":"$password" | tee -a "$accountfile" done # 3. }lإ߱bPKXI cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd -m chpasswd < "$accountfile" pwconv echo "OKIإߧI" |
pGݭnإߦP@ZŨ㦳P@sժܡAiHϥ groupadd إ߸sիA NӸsե[Jy cat "$accountfile" | cut -d':' -f1 | xargs -n 1 useradd -m -g groupname zIo}iHbUsUG
pGȬOզӤwAQnNإߪϥΪ̾ӧRAhiHϥΦpU}ӶiRI
[root@www ~]# vi delaccount2.sh #!/bin/bash usernames=$(cat user.passwd | cut -d ':' -f 1) for username in $usernames do echo "userdel -r $username" userdel -r $username done [root@www ~]# sh delaccount2.sh |
`AbzOܭnIƱWjaIUաI
[root@www ~]# grep mail /etc/group [root@www ~]# grep youcan /etc/group [root@www ~]# groupadd youcan |
[root@www ~]# vim popuser.sh #!/bin/bash for username in pop1 pop2 pop3 do useradd -g mail -s /sbin/nologin -M $username echo $username | passwd --stdin $username done [root@www ~]# sh popuser.sh |