佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Linux 高級用戶,組和權(quán)限介紹

Linux 高級用戶,組和權(quán)限介紹

熱門標(biāo)簽:家政服務(wù)網(wǎng)絡(luò) 硅谷的囚徒呼叫中心 美團 服務(wù)器配置 百度競價點擊價格的計算公式 解決方案 外呼系統(tǒng) 電話機器人搭建
下面先來了解一下關(guān)于用戶,組的四個文件
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
首先來了解一下/etc/passwd這個文件,
這個文件只是存放用戶的信息
[root@localhost ~]#
[root@localhost ~]# cat /etc/passwd | grep user1
user1:x:500:500::/home/user1:/bin/bash
[root@localhost ~]#
這里面總共有七個欄位,了解一下每個欄位的意義。
User1 用戶名
X 用戶的密碼位(如果這個位上面沒有這個X,就代表登陸這個用戶不需要密碼)
500 UID
500 GID
第五個是密碼的描述信息,這里沒有。
/home/user1 用戶的/home目錄
/bin/bash 用戶的shell
在這里有個比較特殊的shell /sbin/nologin
如果將用戶的shell改為/sbin/nologin,那么這兒用戶只可以登陸服務(wù),但是不可以登陸計算機。不允許交互式登陸。
再來了解一下/etc/shadow這個文件,
這個文件主要是用來保存用戶的密碼信息和策略。
[root@localhost ~]#
[root@localhost ~]# cat /etc/shadow | grep user1
user1:$1$2WJEp9K7$h.NRfJsaEm8VMksBQHZm7.:14668:0:99999:7:::
[root@localhost ~]#
現(xiàn)在來了解一下每個欄位的意義
User1 用戶名
第二個欄位是保存用戶的密碼,這個密碼是經(jīng)過MD5的加密的。
如果密碼位前面有個!,就代表這個用戶被鎖定了。
14668 密碼最后一次修改的時間
0 密碼最少的存活期(為0代表用戶可以隨時更改密碼)
99999 密碼過期時間(99999代表密碼永不過期)
7 密碼過期警告天數(shù)(在密碼過期的前七天警告用戶)
再來了解一下/etc/group這個文件,
這個文件主要是用于存放組的信息。
[root@localhost ~]#
[root@localhost ~]# cat /etc/group | grep user1
user1:x:500:
[root@localhost ~]#
現(xiàn)在來了解一下每個欄位的意義
User 組的名字
X 組的密碼位
500 GID
可以將用戶直接添加到冒號后面,就代表加入了這個組。
最后來了解一下/etc/gshadow這個文件,
這個文件主要是保存組密碼的信息。
[root@localhost ~]#
[root@localhost ~]# cat /etc/gshadow | grep user1
user1:!::
[root@localhost ~]#
User 組的名字
可以看到,這個組默認是沒有密碼的,現(xiàn)在我們給它設(shè)置一個密碼。
[root@localhost ~]#
[root@localhost ~]# gpasswd user1
Changing the password for group user1
New Password:
Re-enter new password:
[root@localhost ~]# cat /etc/gshadow | grep user1
user1:$1$ZxvTf/dQ$DWmf//MTxpwJIzTZIcYQZ/::
[root@localhost ~]#
可以看到,組現(xiàn)在也有了一個密碼,而且也是經(jīng)過MD5加密的。
下面來看下組的密碼有什么意義。
[root@localhost ~]#
[root@localhost ~]# useradd user2
[root@localhost ~]#
[root@localhost ~]# su – user2
[user2@localhost ~]$
[user2@localhost ~]$ newgrp user1
Password:
[user2@localhost ~]$ id
uid=501(user2) gid=500(user1) groups=500(user1),501(user2)
[user2@localhost ~]$
可以看到,我們user2現(xiàn)在加入到了user1,變成了user1組里面的成員,也就是說組密碼的意義在于,一個普通用戶只要有組的密碼,就可以加入到這個組里面來,成為這個組里面的成員。
用戶管理工具
Useradd 添加用戶
#useradd user1(用戶名)
[root@localhost ~]#
[root@localhost ~]# useradd user1
[root@localhost ~]#
[root@localhost ~]# id user1
uid=502(user1) gid=502(user1) groups=502(user1)
[root@localhost ~]#
User1就添加成功了。
Usermod 修改用戶
Userdel 刪除用戶
#userdel -r user1(用戶名)
[root@localhost ~]#
[root@localhost ~]# userdel -r user1
[root@localhost ~]#
[root@localhost ~]# id user1
id: user1: No such user
[root@localhost ~]#
User1就成功刪除了
-r 在刪除用戶的同時刪除用戶的/home目錄。
關(guān)于監(jiān)視登陸的工具
#w
[root@localhost ~]# w
15:27:32 up 15:31, 3 users, load average: 0.81, 0.25, 0.08
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 - 21Feb10 ?xdm? 3:07 0.30s /usr/bin/ gnome-
root pts/2 :0.0 15:27 0.00s 0.06s 0.01s w
root pts/1 192.168.0.20 15:27 13.00s 0.05s 0.05s - bash
[root@localhost ~]#
可以看到192.168.0.20正在連接我。
#last
[root@localhost ~]#
[root@localhost ~]# last
root pts/2 station20.exampl Sun Feb 28 15:32 still logged in
root pts/1 :0.0 Sun Feb 28 15:31 still logged in
root pts/2 :0.0 Fri Feb 26 17:21 – 00:32 (1+07:10)
root pts/1 :0.0 Mon Feb 22 23:07 – 21:46 (3+22:38)
root pts/2 :0.0 Mon Feb 22 18:31 - 23:07 (04:36)
root pts/2 :0.0 Mon Feb 22 14:33 - 14:33 (00:00)
root pts/1 :0.0 Sun Feb 21 17:33 - 18:31 (1+00:57)
root pts/1 :0.0 Sun Feb 21 17:28 - 17:33 (00:04)
root pts/1 :0.0 Sun Feb 21 13:30 - 17:28 (03:57)
root :0 Sun Feb 21 13:30 still logged in
root :0 Sun Feb 21 13:30 – 13:30 (00:00)
reboot system boot 2.6.18-164.el5 Sun Feb 21 13:29 (7+02:03)
root pts/1 :0.0 Sun Feb 21 21:22 – down (-7:-54)
root :0 Sun Feb 21 21:21 – down (-7:-54)
root :0 Sun Feb 21 21:21 – 21:21 (00:00)
reboot system boot 2.6.18-164.el5 Sun Feb 21 21:17 (-7:-50)
reboot system boot 2.6.18-164.el5 Sun Feb 21 21:14 (00:02)
wtmp begins Sun Feb 21 21:14:07 2010
[root@localhost ~]#
曾經(jīng)有那些用戶登陸過我的計算機。并且在我計算機上面登陸了多久,很多東西都可以查看的到。
#lastb
[root@localhost ~]#
[root@localhost ~]# lastb
root ssh:notty www.google.com. Mon Feb 22 15:50 – 15:50 (00:00)
root ssh:notty www.google.com. Mon Feb 22 15:50 – 15:50 (00:00)
root ssh:notty www.google.com. Mon Feb 22 15:50 – 15:50 (00:00)
btmp begins Mon Feb 22 15:50:50 2010
[root@localhost ~]#
這條命令顯示的結(jié)果是那些計算機曾經(jīng)登錄過我的計算機,但是沒有登錄成功的計算機。只會顯示沒有登錄成功的信息,并且它們是使用的什么方法嘗試連接我的計算機,這里面都很詳細。
默認權(quán)限(defaults perm)
默認的時候,我們在創(chuàng)建文件和目錄的時候,并不是繼承了上級目錄的權(quán)限,而是根據(jù)目錄和文件的UMASK值來決定的。
關(guān)于UMASK值
就是用來定義文件的默認權(quán)限的
如何在系統(tǒng)查詢UMASK值呢?
#umask
[root@localhost ~]#
[root@localhost ~]# umask
0022
[root@localhost ~]#
可以看到,系統(tǒng)中的umask值為0022
當(dāng)然這個umask也是可以修改的
#umask 0033
[root@localhost ~]#
[root@localhost ~]# umask 0033
[root@localhost ~]#
[root@localhost ~]# umask
0033
[root@localhost ~]#
系統(tǒng)的umask值被我們改成0033了。
Umask是怎么定義目錄和文件的權(quán)限的
對于不同用戶,umask定義都不一樣。
對于root uamsk值為022
對于普通用戶 umask值為002
那么我們在創(chuàng)建目錄和文件的時候默認權(quán)限是多少呢。
對于root 目錄 777-022 755
文件 666-022 644
對于普通用戶 目錄 777-002 775
文件 666-002 664
這就是我們的創(chuàng)建目錄和文件的默認權(quán)限。
注意 :我們在用最高權(quán)限減umask值的時候一定是用二進制的數(shù)值來減,而不是十進制的數(shù)值來減。
[root@localhost ~]#
[root@localhost ~]# umask
0022
[root@localhost ~]# mkdir test
[root@localhost ~]# touch test1
[root@localhost ~]# ll | grep test
drwxr-xr-x 2 root root 4096 Feb 28 16:42 test
-rw-r–r– 1 root root 0 Feb 28 16:43 test1
[root@localhost ~]#
可以看到,我們目錄的默認權(quán)限的確是755.文件的默認權(quán)限的確是644。
[root@localhost ~]#
[root@localhost ~]# su – user1
[user1@localhost ~]$
[user1@localhost ~]$ umask
0002
[user1@localhost ~]$ mkdir file
[user1@localhost ~]$
[user1@localhost ~]$ touch file1
[user1@localhost ~]$ ll | grep file
drwxrwxr-x 2 user1 user1 1024 Feb 28 16:44 file
-rw-rw-r– 1 user1 user1 0 Feb 28 16:44 file1
[user1@localhost ~]$
可以看到,在普通用戶的身份下面。我們創(chuàng)建的目錄的權(quán)限為775,文件的權(quán)限為664。
關(guān)于三個特殊的權(quán)限
1 .suid權(quán)限
如果在一個可執(zhí)行文件(命令或者腳本)運用了suid后,那么任何人在執(zhí)行該命令的時候會臨時擁有該命令的擁有人權(quán)限。
我們知道passwd這個命令管理員可以運行,還有普通用戶也可以運行。
還有如果我們利用passwd來修改密碼成功了,是要在/etc/shadow這個文件中去添加一個密碼位的,現(xiàn)在我們看看這個文件的權(quán)限。
[root@localhost ~]#
[root@localhost ~]# ls -l /etc/shadow
-r——– 1 root root 1050 Feb 25 23:01 /etc/shadow
[root@localhost ~]#
可以看到,這個文件普通用戶什么權(quán)限也沒有,連讀的權(quán)限都沒有,那么普通用戶是怎么修改自己的密碼,并且能夠?qū)⒚艽a寫在/etc/shadow文件里面的呢。
[root@localhost ~]#
[root@localhost ~]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22960 Jul 17 2006 /usr/bin/passwd
[root@localhost ~]#
我們可以看到passwd這個命令的權(quán)限位上面多了一個s,這個是我們以前從來沒有看見過的,這個就是suid。
當(dāng)普通用戶利用passwd來修改密碼的時候,由于passwd命令上面有suid權(quán)限,那么普通用戶就會臨時擁有該命令的擁有人root的權(quán)限,從而就可以往/etc/shadow這個文件里面去寫入密碼位了。
現(xiàn)在還有個問題,如果普通用戶因為suid原因可以修改密碼,那么普通用戶能否去修改別的用戶的密碼呢,我們來嘗試一下。
[user1@localhost ~]$
[user1@localhost ~]$ passwd user2
passwd: Only root can specify a user name.
[user1@localhost ~]$
我們可以看到,是不可以修改的。如果按照理論情況,我們的passwd命令因為具有suid權(quán)限,那么是可以修改別的用戶的密碼的。這里并不是passwd命令不具有suid功能,它也并沒有報權(quán)限拒絕。而是提示我們passwd這個命令只有root用戶才可以在后面接上用戶名,系統(tǒng)是從語法上面做了限制,而并不是suid,沒有生效。這也是系統(tǒng)為了保證安全。
我們在做一個試驗來了解suid的作用
先來看看系統(tǒng)中根的權(quán)限是什么
[root@localhost ~]#
[root@localhost ~]# ls -ld /
drwxr-xr-x 25 root root 4096 Feb 28 00:30 /
[root@localhost ~]#
可以看到,根的權(quán)限是755,也就是說一個普通用戶是沒有辦法往根里面寫入數(shù)據(jù)的,普通用戶是屬于其他人嗎。我們試試
[root@localhost ~]#
[root@localhost ~]# su – user1
[user1@localhost ~]$
[user1@localhost ~]$ cd /
[user1@localhost /]$ mkdir test
mkdir: cannot create directory `test’: Permission denied
[user1@localhost /]$
可以看到,我們的普通用戶user1對根沒有寫入的權(quán)限。
現(xiàn)在我們給mkdir這條命令加一個suid的權(quán)限??纯磿l(fā)生什么。
[root@localhost ~]#
[root@localhost ~]# which mkdir
/bin/mkdir
[root@localhost ~]# ll /bin/mkdir
-rwxr-xr-x 1 root root 29852 Jul 13 2009 /bin/mkdir
[root@localhost ~]#
[root@localhost ~]# chmod u+s /bin/mkdir
[root@localhost ~]#
[root@localhost ~]# ll /bin/mkdir
-rwsr-xr-x 1 root root 29852 Jul 13 2009 /bin/mkdir
[root@localhost ~]#
可以看到,mkdir這個命令的權(quán)限已經(jīng)多了一個s權(quán)限。
現(xiàn)在我們在使用普通用戶去根下面創(chuàng)建一個文件,
[root@localhost ~]#
[root@localhost ~]# su – user1
[user1@localhost ~]$
[user1@localhost ~]$ cd /
[user1@localhost /]$ mkdir file
[user1@localhost /]$
[user1@localhost /]$ ll -ld file/
drwxrwxr-x 2 root user1 4096 Feb 28 21:58 file/
[user1@localhost /]$
現(xiàn)在我們就可以在根下面創(chuàng)建目錄了,是因為我們普通用戶在使用mkdir這條命令的時候臨時變成了該命令的擁有人的權(quán)限,所有普通用戶就可以在根下面創(chuàng)建目錄,還可以看到,我們通過user1在根下面創(chuàng)建了一個文件,其擁有人也是root,這個也很好的說明了我們的確是使用root的身份去創(chuàng)建的file這個目錄。
還有一個問題,我們的mkdir這個命令因為多了一個s位,那么以前的x位權(quán)限到哪里去了呢。如果是S,代表以前是沒有x權(quán)限,如果是s,就代表以前有x權(quán)限。
[root@localhost ~]#
[root@localhost ~]# ll /bin/mkdir
-rwsr-xr-x 1 root root 29852 Jul 13 2009 /bin/mkdir
[root@localhost ~]# chmod u-x /bin/mkdir
[root@localhost ~]# ll /bin/mkdir
-rwSr-xr-x 1 root root 29852 Jul 13 2009 /bin/mkdir
[root@localhost ~]# chmod u+x /bin/mkdir
[root@localhost ~]# ll /bin/mkdir
-rwsr-xr-x 1 root root 29852 Jul 13 2009 /bin/mkdir
[root@localhost ~]#
可以看到,我們?nèi)サ袅藊權(quán)限,就變成了S,我們加上x權(quán)限,就又變成了s。
2.sgid權(quán)限
剛才我們的suid只可以運用在一個二進制文件上面,也就是命令上面。
而我們的sgid可以運用在命令和目錄上面。
下面先來看下sgid運用在命令上面
如果允許運用在命令上面,和剛才的suid一樣,只是變成了臨時擁有該命令擁有組的權(quán)限,就這點區(qū)別。
下面在來看下sgid運用在目錄上面
如果當(dāng)一個目錄運用的sgid權(quán)限,那么任何人在該目錄建立的文件和目錄就會繼承該目錄本身的組。
現(xiàn)在我們通過一個試驗來了解sgid的權(quán)限,
[root@localhost ~]#
[root@localhost ~]# mkdir /redhat
[root@localhost ~]#
[root@localhost ~]# chmod 777 /redhat/
[root@localhost ~]#
[root@localhost ~]# ll -ld /redhat/
drwxrwxrwx 2 root root 4096 Mar 1 21:26 /redhat/
[root@localhost ~]#
現(xiàn)在我們新建了一個redhat目錄,并且這個目錄的權(quán)限是777,現(xiàn)在普通用戶對這個目錄也應(yīng)該是rwx的權(quán)限,我們試試,
[root@localhost ~]#
[root@localhost ~]# su – user1
[user1@localhost ~]$
[user1@localhost ~]$ cd /redhat/
[user1@localhost redhat]$
[user1@localhost redhat]$ touch 1.txt
[user1@localhost redhat]$ ls
1.txt
[user1@localhost redhat]$
我們的確可以創(chuàng)建文件,那么這個文件的擁有人和擁有組會是誰呢,肯定是user1?,F(xiàn)在我們就在這個目錄上面添加一個sgid的權(quán)限。
[root@localhost ~]#
[root@localhost ~]# chmod g+s /redhat/
[root@localhost ~]#
[root@localhost ~]# su – user1
[user1@localhost ~]$
[user1@localhost ~]$ cd /redhat/
[user1@localhost redhat]$
[user1@localhost redhat]$ touch 2.txt
[user1@localhost redhat]$
[user1@localhost redhat]$ ll
total 0
-rw-rw-r– 1 user1 user1 0 Mar 1 21:28 1.txt
-rw-rw-r– 1 user1 root 0 Mar 1 21:30 2.txt
[user1@localhost redhat]$
當(dāng)我給redhat這個目錄添加了一個sgid的權(quán)限以后,我們利用普通用戶在redhat目錄里面創(chuàng)建的文件的擁有組就變成了root了。
現(xiàn)在我們再來理解一下sgid的權(quán)限,當(dāng)我們在redhat目錄上面運用了sgid的權(quán)限,那么普通用戶user1在redhat目錄下面創(chuàng)建的文件的擁有組就會繼承redhat目錄本身的組,不會隨著用戶的改變而改變。
還有一點,和剛剛一樣,如果有x權(quán)限,就會顯示s,如果沒有x權(quán)限,就會顯示S。
3. sticky權(quán)限
Sticky只可以運用在目錄上面
如果在一個目錄上面運用了sticky權(quán)限,那么僅root用戶和和文件的擁有人才能刪除該目錄中的文件。
現(xiàn)在我們通過一個試驗來了解sticky權(quán)限。
[root@localhost ~]#
[root@localhost ~]# ls -ld /redhat/
drwxrwxrwx 3 root root 4096 Mar 1 21:48 /redhat/
[root@localhost ~]#
Redhat目錄的權(quán)限是777,現(xiàn)在普通用戶應(yīng)該是可以向這個目錄里面創(chuàng)建文件的,我們來試試。
[root@localhost ~]#
[root@localhost ~]# su – user1
[user1@localhost ~]$ cd /redhat/
[user1@localhost redhat]$ touch 1.txt
[user1@localhost redhat]$ ls
1.txt
[user1@localhost redhat]$
我們使用user1在這個目錄中創(chuàng)建了一個1.txt的文件,那么我們的user2能否去刪除這個文件呢,肯定是可以的,因為我們的目錄權(quán)限是777,所有我們的普通用戶user2對這個目錄是有w的權(quán)限的,有w權(quán)限就意味著可以在這個目錄中創(chuàng)建和刪除文件。我們試下,
[root@localhost ~]#
[root@localhost ~]# su – user2
[user2@localhost ~]$
[user2@localhost ~]$ cd /redhat/
[user2@localhost redhat]$
[user2@localhost redhat]$ ls
1.txt
[user2@localhost redhat]$ rm -rf 1.txt
[user2@localhost redhat]$ ls
[user2@localhost redhat]$
OK,是沒有問題的,我們的確可以刪除由user1創(chuàng)建的文件1.txt。
現(xiàn)在我們給redhat目錄添加一個sticky,看看會發(fā)生什么。
[root@localhost ~]#
[root@localhost ~]# chmod o+t /redhat/
[root@localhost ~]# ls -ld /redhat/
drwxrwxrwt 2 root root 4096 Mar 1 23:19 /redhat/
[root@localhost ~]#
可以看到,redhat目錄已經(jīng)添加了一個t的權(quán)限,這個就是sticky權(quán)限。
和上面一樣,如果有x權(quán)限,就顯示t。如果沒有x權(quán)限,就顯示T。
我們在使用user1創(chuàng)建一個文件,然后使用user2刪除這個文件,
[root@localhost ~]#
[root@localhost ~]# su – user1
[user1@localhost ~]$
[user1@localhost ~]$ cd /redhat/
[user1@localhost redhat]$
[user1@localhost redhat]$ touch 2.txt
[user1@localhost redhat]$
[user1@localhost redhat]$ ls
2.txt
[user1@localhost redhat]$ su – user2
Password:
[user2@localhost ~]$ cd /redhat/
[user2@localhost redhat]$ ls
2.txt
[user2@localhost redhat]$ rm -rf 2.txt
rm: cannot remove `2.txt’: Operation not permitted
[user2@localhost redhat]$
可以看到,現(xiàn)在我們使用user1創(chuàng)建的文件,user2是不可以刪除的。
這個就是sticky權(quán)限的作用,
當(dāng)一個redhat目錄添加了一個sticky權(quán)限后,那么user1在redhat目錄里面創(chuàng)建的2.txt文件,就只有root用戶和user1才可以刪除該文件。
在我們系統(tǒng)中有個目錄就是運用了sticky權(quán)限。
[root@localhost ~]#
[root@localhost ~]# ls -ld /tmp/
drwxrwxrwt 15 root root 4096 Feb 28 00:28 /tmp/
[root@localhost ~]#
我們的/tmp目錄默認就有了sticky權(quán)限。
我們的特殊權(quán)限也可以用數(shù)字來表示。
Suid 4
Sgid 2
Sticky 1
總結(jié):
Suid權(quán)限用在命令上面,而且只能用在用戶上面。
Sgid權(quán)限用在命令和目錄上面,而且只能用在組上面。
Sticky權(quán)限用在目錄上面,而且只能用在其他人上面。
關(guān)于高級權(quán)限的問題就這么多,在133里面還會有關(guān)于用戶,組,權(quán)限的討論。

標(biāo)簽:烏蘭察布 韶關(guān) 臨沂 防城港 南昌 邢臺 北海 撫州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux 高級用戶,組和權(quán)限介紹》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    修文县| 清河县| 商水县| 江孜县| 宣城市| 鲜城| 静宁县| 黄梅县| 阳原县| 邹平县| 海盐县| 定州市| 即墨市| 敦煌市| 和平区| 鹤壁市| 门头沟区| 怀来县| 玉田县| 文成县| 嵊泗县| 桐庐县| 沛县| 仙游县| 邵武市| 卢湾区| 桐城市| 正镶白旗| 海林市| 建德市| 肇庆市| 肇源县| 张家口市| 张掖市| 二连浩特市| 鸡西市| 金溪县| 陵水| 张家口市| 武安市| 汾西县|