1. 程式人生 > >用戶與權限

用戶與權限

學習linux第3課

一、 輸入輸出的重定向
輸入重定向把文件導入命令中
輸出重定向原本輸出到屏幕的數據寫入到文本中
標準輸入重定向 STDIN 文件描述符0 默認從鍵盤輸入
標準輸出重定向 STDOUT 描述符1 默認輸出到屏幕
錯誤輸出重定向 STDERR 描述符2 默認輸出到屏幕
[root@thinkmo ~]# ll test.sh
-rw-r--r--. 1 root root 85 May 9 04:52 test.sh
[root@thinkmo ~]# ll xxxxxxx
ls: cannot access xxxxxxx: No such file or directory

輸入重定向 <
符號 作用

命令<文件 將文件作為命令的標準輸入
命令<<分界符 從標準輸入中讀入,直到遇見分界符才停止
命令<文件1>文件2 將文件1作為命令的標準輸入並將標準輸出到文件2

輸出重定向 >
技術分享圖片

二、 環境變量
技術分享圖片

[root@thinkmo ~]# echo $HOME
/root
[root@thinkmo ~]# echo $SHELL
/bin/bash
[root@thinkmo ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@thinkmo ~]#

1.輸入變量---->系統判斷用戶輸入是以絕對路徑還是相對路徑方式輸入?
2.檢測命令是否為別名命令 使用alias命令對命令重名了
alias 別名=命名 取消明明unalias
[root@thinkmo ~]# rm readme.txt
rm: remove regular empty file `readme.txt‘? y

[root@thinkmo ~]# alias rm
alias rm=‘rm -i‘
[root@thinkmo ~]# unalias rm
[root@thinkmo ~]# alias rm
-bash: alias: rm: not found

[root@thinkmo ~]# rm readme.txt
[root@thinkmo ~]# ll
total 112
-rw-------. 1 root root 1174 Apr 2 18:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 118 May 9 06:40 chkhost.sh
-rw-r--r--. 1 root root 155 May 9 07:31 chkkeys.sh
-rw-r--r--. 1 root root 233 May 9 07:03 chkscore.sh
drwxr-xr-x. 2 root root 4096 Apr 14 07:19 Desktop
drwxr-xr-x. 2 root root 4096 Apr 14 07:19 Documents
drwxr-xr-x. 2 root root 4096 Apr 14 07:19 Downloads
-rw-r--r--. 1 root root 329 May 9 08:14 guess.sh
-rw-r--r--. 1 root root 27794 Apr 2 18:59 install.log
-rw-r--r--. 1 root root 7572 Apr 2 18:57 install.log.syslog
-rw-r--r--. 1 root root 69 May 9 07:11 mkcdrom.sh
drwxr-xr-x. 2 root root 4096 Apr 14 07:19 Music
-rw-r--r--. 1 root root 310 May 9 07:49 passwd.sh
drwxr-xr-x. 2 root root 4096 Apr 14 07:19 Pictures
drwxr-xr-x. 2 root root 4096 Apr 14 07:19 Public
drwxr-xr-x. 2 root root 4096 Apr 14 07:19 Templates
-rw-r--r--. 1 root root 85 May 9 04:52 test.sh
-rw-r--r--. 1 root root 141 May 9 07:59 user.sh
-rw-r--r--. 1 root root 23 May 9 07:36 users.txt
drwxr-xr-x. 2 root root 4096 Apr 14 07:19 Videos
[root@thinkmo ~]#

3.bash解釋器 判斷命令是內部--直接執行還是外部(需要處理)
通過type命令查看
[root@thinkmo ~]# type cat
cat is hashed (/bin/cat)
[root@thinkmo ~]# type his
-bash: type: his: not found
[root@thinkmo ~]# type history
history is a shell builtin
[root@thinkmo ~]#

4.系統在多個路徑中查找用戶輸入的命令文件 定於路徑的變量就是PATH
可以用. 寫入PATH嗎?
.當前目錄!!!
但是不那麽做!!
/tmp目錄 公共目錄---->命令叫ls 黑客-木馬病毒文件ls
進入/tmp 執行 .ls
[root@thinkmo ~]# echo $HOME
/root
[root@thinkmo ~]# su - abby
[abby@thinkmo ~]$ echo $HOME
/home/abby
[abby@thinkmo ~]$


三、 用戶與用戶組
多用戶多任務操作系統
文件的所有者(屬主)、所屬組(數組)和其他人對文件進行的讀(r)寫(w)執行(x)操作
添加、刪除、修改用戶信息
使用特殊權限SUID SGID SBIT更加靈活控制權限

3.1用戶身份和能力
安裝系統時 設置root密碼
默認root超級用戶(Linux Unix系統都是超級用戶)
root不一定是超級用戶
UID GID
UID --用戶ID 唯一的
GID --組ID 惟一的
一個用戶 具備一個UID 同時會有一個同名組GID

Linux中有三類用戶--->/etc/passwd文件保存賬戶信息
1.超級用戶root 默認 真實的具備UID=GID=0的用戶
2.系統用戶UID範圍1-499 ,使某些服務具備特殊的用戶單獨負責
apache用戶(web服務)
3.普通用戶通過root用戶創建的 默認從500開始
用戶和組的關系---->
一對一 一對多 多對一 多對多
對於用戶和用戶組的增刪改查
增加:useradd 和groupadd
技術分享圖片
修改:usermod 和groupmod
用於修改用戶屬性
技術分享圖片
passwd命令
用於修改用戶密碼
技術分享圖片
普通用戶只能使用passwd修改自己的密碼
root用戶可以修改所有人密碼
[root@thinkmo ~]# passwd
Changing password for user root.
New password:
[root@thinkmo ~]# passwd abby
Changing password for user abby.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@thinkmo ~]#

刪除:userdel 和groupdel
技術分享圖片

四、 文件權限和歸屬
Linux下都是文件
4.1文件類型:f /- 普通文件
d 目錄
l 鏈接----軟鏈--相當於快捷方式、硬鏈---完整復制
b 塊文件---設備--硬盤光盤 U盤
c 字符文件----虛擬終端
s 數據庫文件

4.2文件普通權限:一共九位
前三位:rwx 滿位 ---空位 ---->屬主(文件所有者)
中三位:rwx 滿位 ---空位 ---->屬組(文件所有組)
後三位:rwx 滿位 ---空位 ---->其他人
技術分享圖片
技術分享圖片

a b c 三個人 --->文件屬於a屬主 屬於ab組(組內成員ab 屬組) 其他人c
技術分享圖片

4.3文件特殊權限
4.3.1 SUID--->setUID
針對二進制程序設置的 讓二進制程序執行者臨時擁有屬主權限
例如:所有用戶都可以執行passwd 修改密碼
用戶名和密碼保存在/etc/passwd文件下
[root@thinkmo ~]# ll /etc/passwd
-rw-r--r--. 1 root root 1800 May 9 07:51 /etc/passwd
權限只能支持root修改---->意味著普通用戶改不了密碼
[root@thinkmo ~]# which passwd
/usr/bin/passwd
[root@thinkmo ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 17 2012 /usr/bin/passwd
[root@thinkmo ~]#
作用就是讓普通用戶臨時獲得屬主權限
值4000
如果文件本身具備x權限 那麽就是s 如果沒有x 就是S
[root@thinkmo ~]# stat /usr/bin/passwd
File: `/usr/bin/passwd‘
Size: 30768 Blocks: 64 IO Block: 4096 regular file
Device: 802h/2050d Inode: 531843 Links: 1
Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2018-05-08 21:27:05.407083241 +0800
Modify: 2012-02-17 16:23:29.000000000 +0800
Change: 2018-04-02 18:53:13.544999578 +0800
[root@thinkmo ~]# chmod 4655 /usr/bin/passwd
[root@thinkmo ~]# ll /usr/bin/passwd
-rwSr-xr-x. 1 root root 30768 Feb 17 2012 /usr/bin/passwd
[root@thinkmo ~]#

4.3.2SGID=setGID
仿照SUID,設置的屬組的特殊權限
如果文件本身具備x權限 那麽就是s 如果沒有x 就是S
值2000
[root@thinkmo ~]# chmod 2655 /usr/bin/passwd
[root@thinkmo ~]# ll /usr/bin/passwd
-rw-r-sr-x. 1 root root 30768 Feb 17 2012 /usr/bin/passwd

4.3.3SBIT 粘滯位
作用確保用戶只能刪除自己的文件 對別人不能刪除
drwxrwxrwt. 5 root root 4096 May 9 03:24 tmp
如果文件本身具備x權限 那麽就是t 如果沒有x 就是T
值1000
創建目錄和文件
默認權限是多少:
命令:755
文件:644
為什麽????
默認情況目錄權限滿位777
文件權限滿位666
文件666 每個位上缺少x --->可執行 是所有文件腳本?
都缺少022權限---網絡掩碼---反掩碼
umask 默認022
文件的權限修改有兩個命令
chmod 對權限修改(rwx suid sgid sbit)
兩種授權形式:
1.數字授權; chmod 777(rwxrwxrwx) 文件名
chmod 777 -R 目錄名---->-R參數用於權限遞歸

2.表達式授權:a所有 u用戶 g用戶組 o其他人
+賦予權限 -撤銷權限 =覆蓋權限
chown 對文件所有者/所有組修改

5.su命令和sudo命令
su用於用戶切換
從root用戶切換到普通用戶是不需要密碼的 但是從普通切換到root是需要密碼的
使用- 進入到用戶的家目錄/home/linux
不使用 還是在root用戶家目錄 /root ~

如何使用sudo命令把特定的命令的執行權限賦予指定用戶
保證普通用戶能夠完成特定的工作
避免暴露root密碼
sudo命令用於給普通用戶提供額外權限來完成本來由root用戶才能完成的任務
技術分享圖片
功能:限制用戶執行指定命令
記錄用戶執行每一條命令
配置文件/etc/sudoers 提供集中的用戶管理、權限和主機參數
可以通過visudo去配置用戶權限 只有root可以使用(poweroff reboot)
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
誰可以用 允許使用的主機= 以誰的身份 可以執行的命令

用戶與權限