使用者管理
useradd (預設是是最大的ID号向下加一)
-u UID 尚未制定大于等于500
-g GID (基本組)必須事先存在 也可以使用組名,useradd -g two one id one
-G GID 附加組 可以有多個
-c "COMMENT" 制定注釋資訊
-d 家目錄 需要制定目錄
-s shell 路徑 最好是/etc/shells檔案中的shell
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
-m -k 建立家目錄 強行複制 /etc/skel檔案,其實預設建立使用者就會自動複制skel檔案
-M 不建立家目錄,不代表不能登陸
-r 添加系統使用者
/etc/skel 其實預設建立使用者就會自動複制skel目錄下的檔案到使用者家目錄
/etc/login.defs 是/etc/shadow檔案的預設配置檔案,用于定義預設
環境變量:
PATH
HISTSIZE
SHELL 儲存目前使用者shell
id
-u 使用者ID
-g 基本組ID
-G 附加組ID
-n 顯示使用者名配合其他三個選項
finger 檢視使用者賬戶屬性資訊
userdel 預設不會删除使用者家目錄 但一個使用者被删除以後,此前屬主為此使用者的檔案變為删除使用者的UID
-r 同時删除家目錄
修改使用者賬号屬性
usermod
-u 修改使用者ID
-g GID 必須存在 基本組
-a -G GID 不使用-a選項會覆寫之前的附加組,如果之前有附加組的話。
-c 制定注釋資訊
-d -m 為使用者制定新的家目錄 以前原家目錄檔案至新家目錄中
-s 修改使用者shell
-l 修改使用者名字
-e 定義使用者過期時間 YYYY-MM-DD
-f 密碼過去還沒禁用時間
-L 鎖定賬戶
-U 解鎖使用者
chsh 修改使用者shell
chfn 修改finger資訊,修改注釋資訊
passwd 修改使用者密碼,普通使用者自己修改自己的密碼,管理者可以制定修改其他使用者,禁止空密碼登陸。
--stdin 标準輸入讀取密碼,可以從其他檔案帶起鍵盤 echo "redhat | passwd --stdin user1
-l 鎖定使用者賬戶
-u 解鎖使用者賬戶
-d 删除使用者密碼
-n 密碼最短使用期限
-x 最長使用期限
-w 警告時間
-i 非活動時間
chage 也可以修改使用者密碼時間,類似passwd
-d 最近一次的修改時間
-E 過期時間
-I 非活動時間
-m 最短使用期限
-M 最長使用期限
-W 警告時間
pwck 檢查使用者賬号的完整性
組管理
groupadd 建立組
-g gid
-r 添加為系統組
groupamod 修改組名或者ID
-n GRPNAME
groupdel 删除組
gpasswd 為組設定密碼,一個使用者建立檔案的屬主是這個使用者自身,而屬組則是這個使用者賬戶的基本組
newgrp 切換組,如果使用者本來就輸入切換組的附加組,就不需要密碼,切換完成之後此組成為使用者的基本組。
newgrp為一個登陸屬性,可以用exit推出。
練習題
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<code>1.建立一個使用者mandriva,其ID号位2002,基本組為distro(組ID為3003),附加組為linux</code>
<code> </code><code>groupadd linux</code>
<code> </code><code>groupadd -g 3003 distro</code>
<code> </code><code>useradd</code> <code>-u 2002 -g distro -G linux mandriva</code>
<code>2.建立一個使用者fedora,其全名為Fedora Community,預設shell為tcsh</code>
<code> </code><code>useradd</code> <code>-c </code><code>"Fedora Community"</code> <code>-s </code><code>/bin/tcsh</code> <code>fedora</code>
<code>3.修改mandriva的ID号為4004,基本組為linux,附加組為distro和fedora</code>
<code> </code><code>usermod</code> <code>-u 4004 -g linux -G distro,fedora mandriva</code>
<code>4.給fedora加密碼,并設定其密碼最短使用期限為2天,最長為50天</code>
<code> </code><code>passwd</code> <code>-n 2 -x 50 fedora</code>
<code>5.将mandriva的預設shell改為</code><code>/bin/bash</code>
<code> </code><code>usermod</code> <code>-s </code><code>/bin/bash</code> <code>mandriva</code>
<code>6.将添加系統使用者hbase,且不運作其登陸</code>
<code> </code><code>useradd</code> <code>-r -s </code><code>/sbin/nologin</code> <code>hbase</code>
權限管理
r
w
x
三類使用者
o 屬主
g 屬組
o 其他使用者
chown 改變檔案屬主(隻有管理者可以用此指令)
chown username file
-R 修改目錄以及目錄中子目錄和檔案的屬主
--reference=/path/to/somefile file 設定新檔案跟參考檔案一樣的屬主和屬組
同時修改屬主和屬組
chown username:grpname file
chown username.grpname file
chown --reference=/tmp/abc test
--reference=/path/to/somefile file 設定新檔案跟參考檔案一樣的屬主和屬組
chgrp 改變檔案屬組(用法和chown用法一樣)
-R
--reference=/path/to/somefile file
chmod 修改檔案的權限 操作範圍越來越精細
修改三類使用者的權限
chmod mode file
-R 遞歸
--reference=/path/to/somefile file
chomod 750 file
位數不夠就從左往右識别
75 075
5 005
修改某類使用者或某些類使用者權限
u,g,o,a rxw
chmod 使用者類别=rwx file
chmod go=rw file
chmod g=rx,o=r file
chmod g=rx,o= file 不寫權限就是沒有權限
修改某類使用者某位或某些位權限
chmod u-x,g+x file
chmod a+x file 等于 chmod +x file
chmod u-wx file
umask 遮罩碼
root預設建立檔案權限 644
預設建立目錄權限 755 0022
user預設建立檔案權限 664
預設建立目錄權限 775 0002
umask 023
檔案 666-023=643 實際是644 預設不能有執行權限,有了就自動+1
目錄 777-023=754
練習
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<code>1、建立一個沒有家目錄的使用者openstack</code>
<code> </code><code>useradd</code> <code>-M openstack</code>
<code>2、複制</code><code>/etc/skel</code><code>為</code><code>/home/openstack</code>
<code> </code><code>cp</code> <code>-r </code><code>/etc/skel</code> <code>/home/openstack</code>
<code>3、改變</code><code>/home/openstack</code><code>及其内部檔案的屬主均為openstack</code>
<code> </code><code>cp</code> <code>-R openstack</code>
<code>4、</code><code>/home/openstack</code><code>及其内部的檔案,屬組和其他使用者沒有任何通路權限</code>
<code> </code><code>chmod</code> <code>go= -R </code><code>/home/openstack</code>
<code> </code><code>su</code> <code>- openstack 手動建立使用者,其他人沒有權限通路openstack的家目錄</code>
<code> </code><code>linux 任何權限對root是無效的 是以可以修改密碼儲存此檔案中</code>
<code> </code><code>ls</code> <code>-l </code><code>/etc/shadow</code>
<code> </code><code>-r-------- 1 root root 1197 Jul 23 16:13 </code><code>/etc/shadow</code>
<code> </code><code>普通使用者也可以修改自己的密碼,如何實作的?</code>
<code> </code><code>ls</code> <code>-l $(</code><code>which</code> <code>passwd</code><code>)</code>
<code> </code><code>-rwsr-xr-x 1 root root 22960 Jul 17 2006 </code><code>/usr/bin/passwd</code>
<code>5、手動添加使用者hive,基本組為hive(5000),附加組為mygroup</code>
<code> </code><code>vi</code> <code>/etc/group</code> <code>hive:x:5000: mygroup:x:504:user2,hive</code>
<code> </code><code>vi</code> <code>/etc/passwd</code> <code>hive:x:5000:5000:Hive:</code><code>/home/hive</code><code>:</code><code>/bin/bash</code>
<code> </code><code>vi</code> <code>/etc/shadow</code> <code>hive:!!:15909:0:99999:7:::</code>
<code> </code><code>cp</code> <code>-r </code><code>/etc/skel</code> <code>/home/hive</code>
<code> </code><code>chown</code> <code>-R hive:hive </code><code>/home/live</code>
<code> </code><code>chmod</code> <code>-R go= </code><code>/home/live</code>
<code> </code><code>密碼生成</code>
<code> </code><code>whatis </code><code>passwd</code> <code>中檢視由sslpasswd</code>
<code> </code><code>man</code> <code>sslpasswd</code>
<code> </code><code>-1 Use the MD5 based BSD password algorithm 1.</code>
<code> </code><code>-salt string (雜質)</code>
<code> </code><code>Use the specified salt. When reading a password from</code>
<code> </code><code>the terminal, this implies -noverify.</code>
<code> </code><code>openssl </code><code>passwd</code> <code>-1 -salt </code><code>'12345678'</code>
<code> </code><code>Password:123</code>
<code> </code><code>$1$12345678$tRy4cXc3kmcfRZVj4iFXr/ </code><code>"/"</code><code>也屬于</code><code>hash</code><code>的元素</code>
<code> </code><code>雜質預設8位,不代表必須輸入8位,但不同雜質計算相同密碼等到的</code><code>hash</code><code>一定不同。</code>
<code> </code><code>openssl </code><code>passwd</code> <code>-1 -salt </code><code>'1234567'</code>
<code> </code><code>$1$1234567$Y8QuHrN2po5VtIYAWSZOn/</code>
特殊權限
[hadoop@localhost testsgid]$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 23420 Aug 3 2010 /usr/bin/passwd
啟動程序之後程序的身份不是在是發起程序者,而是發起程序前檔案本身的屬主,者就叫做SUID
SUID:運作某程式時,相應程序的屬主是程式檔案自身的屬主,而不是啟動者。
chmod u+s file 如果file本身原有執行權限顯示為s,否則顯示為S
不到萬不得已,一定不要給它SUID
SGID運作某程式時,相應程序的屬主是程式檔案自身的屬組,而不是啟動者所屬的基本組
應用場景 developteam:hadoop,hive 之間可以互相編輯檔案
chmod g+s file
chmod g-s file
mkdir /tmp/testsgid
useradd hadoop
useradd hive
groupadd developteam
usermod -a -G developteam hadoop 附加組
usermod -a -G developteam hive
id hadoop 檢視是否添加成功
chown -R :developteam /tmp/testsgid 雖然目錄屬組已為developtem,但沒有w權限,使用者依然無法建立檔案
chmod -R g+w /tmp/testsgid hadoop,hive可以建立檔案,但建立檔案預設的屬主和屬組是自己,是以無法互相修改檔案内容
chmod g+s /tmp/testsgid SGID成功,2個使用者預設建立檔案的屬組為developteam,是以可以互相修改彼此檔案
chmod o+t /tmp/testsgid 2使用者此時不能删除對方檔案,依然可以互相修改,那些屬主屬組都是自己的使用者不再可以強行編輯和删除對方檔案
Sticky 在一個公共目錄,每個人都可以建立檔案,删除自己的檔案,但不能删除别人的檔案。冒險位
chmod o+t DIR
chmod o-t DIR
三位組合 suid sgid sticky
000
001 *
110 * *
chmod 1755 /tmp/testdir sticky
2755 sgid
3755 sgid sticky
4755 suid
5755 suid sticky
6755 suid sgid
7755 suid sgid sticky
umask 0002
FACL 适用場景
jerry通路tom檔案時候需要相應權限,應該如何設定呢?
如果使用者是把jerry設為tom的others是一種辦法,但others範圍太廣,不隻是jerry一個人。
如果把jerry屬組改為tom也可以,但是普通使用者沒有權限使用chown指令改變自己的屬組。
那該怎麼辦呢?FACL的作用就展現出來了。
FACL:Filesystem Access Control List
利用檔案擴充屬性儲存額外的通路權限
注意:複制檔案,歸檔檔案,很可能丢失屬性,除非使用相關指令的特殊選項。
普通檔案權限生效過程:Owner-->Group-->Ohter
如何知道檔案是否有FACL?
ls -l filename
-rw-rw-r--+
右側結尾帶有+号則說明此檔案有FACL擴充屬性
FACL指令
getfacl 檢視
filename
setfacl 設定
-m設定
u:username:permfilesetfacl 使用者
-m u:hadoop:rw inittab
g:groupname:permfilesetfacl 組
-m g:developteam:rw inittab
#目錄下的檔案繼承該目錄的FACL
d:u:username:permfilesetfacl
-m d:u:hadoop:rw inittab
d:g:username:permfilesetfacl
-m d:g:hadoop:rw inittab
-x取消
u:username filesetfacl
-x u:hadoop inittab
g:groupname filesetfacl
-x g:developteam inittab
注意:檔案權限(perm+FACL):Owner-->FACL,User-->Group-->FACL,Group-->Other
本文轉自 ftmoonfans 51CTO部落格,原文連結:http://blog.51cto.com/soulboy/1259057