【Liunx】權限操做

用戶提權命令之-sudo

sudo命令用來以其餘身份來執行命令,預設的身份爲root。在/etc/sudoers中設置了可執行sudo指令的用戶。若其未經受權的用戶企圖使用sudo,則會發出警告的郵件給管理員。用戶使用sudo時,必須先輸入密碼,以後有5分鐘的有效期限,超過時限則必須從新輸入密碼。python

語法:linux

複製代碼
sudo 【選項】【參數】
-b:在後臺執行指令;
-h:顯示幫助;
-H:將HOME環境變量設爲新身份的HOME環境變量;
-k:結束密碼的有效期限,也就是下次再執行sudo時便須要輸入密碼;。
-l:列出目前用戶可執行與沒法執行的指令;
-p:改變詢問密碼的提示符號;
-s<shell>:執行指定的shell;
-u<用戶>:以指定的用戶做爲新的身份。若不加上此參數,則預設以root做爲新的身份;
-v:延長密碼有效期限5分鐘;
-V :顯示版本信息。
複製代碼

實例nginx

這個sudo命令用在何時呢?git

看圖shell

 

怎麼辦?權限不夠,這時候須要sudo ls /root  以root身份去運行,chaoge權利小,root總能夠了吧!!django

這是因爲配置sudo必須編輯/etc/sudoers文件,而且只有root才能修改,我們能夠經過visudo命令直接編輯sudoers文件,使用這個命令還能夠檢查語法,比直接編輯 vim /etc/sudoers更安全vim

visudo 編輯sudoers文件

寫入
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
chaoge  ALL=(ALL)       ALL   #容許chaoge在任何地方,執行任何命令
此時切換chaoge用戶
#su命令用於切換當前用戶身份到其餘用戶身份,變動時須輸入所要變動的用戶賬號與密碼。
su - chaoge
已經可使用sudo ls /root 命令
若想取消用戶的sudo這個權限 在sudoeres將該用戶刪除便可

文件目錄與權限

Linux權限的目的是(保護帳戶的資料)windows

Linux權限主要依據三種身份來決定:centos

  • user/owner 文件使用者,文件屬於哪一個用戶
  • group 屬組,文件屬於哪一個組
  • others 既不是user,也再也不group,就是other,其餘人

什麼是權限

在Linux中,每一個文件都有所屬的全部者,和全部組,而且規定了文件的全部者,全部組以及其餘人對文件的,可讀,可寫,可執行等權限。

對於目錄的權限來講,可讀是讀取目錄文件列表,可寫是表示在目錄內新增,修改,刪除文件。可執行表示能夠進入目錄

解讀上圖:瀏覽器

  1. 權限,第一個字母爲文件類型,後續9個字母,每3個一組,是三種身份的權限
  2. 文件連接數
  3. 文件擁有者-屬主
  4. 文件擁有組-屬組
  5. 文件大小
  6. 最後一次被修改的時間日期
  7. 文件名 

先來分析一下文件的類型

-    通常文件
d    文件夾
l    軟鏈接(快捷方式)
b    塊設備,存儲媒體文件爲主
c    表明鍵盤,鼠標等設備

文件權限

r    read可讀,能夠用cat等命令查看
w    write寫入,能夠編輯或者刪除這個文件
x    executable    能夠執行

目錄權限

權限這裏測試不要用root實驗!!!!root太牛逼了

請用普通用戶執行!!!!!測試文件、文件夾權限操做,請用普通用戶!

r    能夠對此目錄執行ls列出全部文件
w    能夠在這個目錄建立文件
x    能夠cd進入這個目錄,或者查看詳細信息

權限與數字轉化

修改文件權限屬性

普通用戶只能修改本身的文件名,時間與權限(注意)
所以修改其餘用戶權限,只能用最nb的root用戶
複製代碼
當前文件信息
-rw-r--r--. 1 root root      0 Jun 28 14:36 小護士電話.txt


修改屬主:
chown roo 小護士電話.txt
查看信息:
-rw-r--r--. 1 roo root      0 Jun 28 14:36 小護士電話.txt

修改屬組:
chgrp roo 小護士電話.txt
查看信息:
-rw-r--r--. 1 roo roo      0 Jun 28 14:36 小護士電話.txt
複製代碼

修改文件權限

咱們已知三種身份權限(屬主,屬組,其餘人),每種身份都有rwx的三種權限,系統還提供了數字計算權限。

r    read          4
w    write        2
x    execute     1

每種身份最低是0分,最高是r+w+x 7分

所以三種身份,最高權限是777,最低是000

-rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
所以可知pyyu.txt的權限是
屬主是6 r+w(4+2)
屬組是6 r+w(4+2)
其餘人是4 r(4)

命令:

chmod

chmod [身份]   [參數]   [文件]
    u(user)   +(添加)  
    g(group)   -(減去)
    o(other)  =(賦值)
    a(all)

例如:

複製代碼
當前權限
-rw-rw-r-- 1 root root 0 8月  11 16:41 11.txt
方法1
減去屬主的寫權限
chmod u-w 11.txt
查看權限
-r--rw-r-- 1 root root 0 8月  11 16:41 11.txt

方法2
屬主添加可讀可寫可執行權限
chmod 700 11.txt

屬主可讀可寫可執行
屬組可讀可執行
其餘人可讀可執行
chmod 755 11.txt
複製代碼

軟連接

軟鏈接也叫作符號連接,相似於windows的快捷方式。

經常使用於安裝軟件的快捷方式配置,如python,nginx等

複製代碼
ln -s 目標文件  軟鏈接名

1.存在文件/tmp/test.txt
[root@master tmp]# ls -l
-rw-r--r-- 1 root root     10 10月 15 21:23 test.txt

2.在/home目錄中創建軟鏈接,指向/tmp/test.txt文件
ln -s /tmp/test.txt my_test

3.查看軟鏈接信息
lrwxrwxrwx 1 root root 13 10月 15 21:35 my_test -> /tmp/test.txt

4.經過軟鏈接查看文件
cat my_test

my_test只是/tmp/test.txt的一個別名,所以刪除my_test不會影響/tmp/test.txt,可是刪除了本尊,
快捷方式就無心義不存在了
複製代碼

PS1變量

Linux命令提示符由PS1環境變量控制

複製代碼
[root@oldboy_python ~]# echo $PS1
[\u@\h \W]\$
必定要用單引號設置
能夠自行調整全局變量/etc/profile文件用於永久生效 PS1='[\u@\h \W\t]\$'
\d  日期
\H  完整主機名
\h  主機名第一個名字
\t  時間24小時制HHMMSS
\T  時間12小時制
\A  時間24小時制HHMM
\u  當前用戶帳號名
\v  BASH的版本
\w  完整工做目錄
\W  利用basename取得工做目錄名
\#  下達的第幾個命令
\$  提示字符,root爲#,普通用戶爲$
PS1 > 變量名
$PS1 > 查看變量內容
PS1=新內容 從新賦值

變量賦值,查看
name='chaoge'
echo $name

PS1顯示ip地址
export PS1="[\u@\h `/sbin/ifconfig ens33 | sed -nr 's/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'` \w]\$"
複製代碼

linux的網絡端口管理命令

複製代碼
netstat [選項]
-t或--tcp:顯示TCP傳輸協議的連線情況;
-u或--udp:顯示UDP傳輸協議的連線情況;
-n或--numeric:直接使用ip地址,而不經過域名服務器;
-l或--listening:顯示監控中的服務器的Socket;
-p或--programs:顯示正在使用Socket的程序識別碼和程序名稱;
-a或--all:顯示全部連線中的Socket;
複製代碼

linux進程管理

複製代碼
ps -ef  顯示全部進程
經過進程id號管理

#殺死進程的命令
kill  進程id

kill還有一個參數 -9 參數 
 
kill -9  用於殺死不重要的殭屍進程 ,強制殺死進程

批量殺死進程的命令
pkill 進程的名字
複製代碼

tree

安裝:yum install -y tree

複製代碼
tree命令以樹狀圖列出目錄的內容。

-a:顯示全部文件和目錄;
-A:使用ASNI繪圖字符顯示樹狀圖而非以ASCII字符組合;
-C:在文件和目錄清單加上色彩,便於區分各類類型;
-d:先是目錄名稱而非內容;
-D:列出文件或目錄的更改時間;
-f:在每一個文件或目錄以前,顯示完整的相對路徑名稱;
-F:在執行文件,目錄,Socket,符號鏈接,管道名稱名稱,各自加上"*","/","@","|"號;
-g:列出文件或目錄的所屬羣組名稱,沒有對應的名稱時,則顯示羣組識別碼;
-i:不以階梯狀列出文件和目錄名稱;
-l:<範本樣式> 不顯示符號範本樣式的文件或目錄名稱;
-l:如遇到性質爲符號鏈接的目錄,直接列出該鏈接所指向的原始目錄;
-n:不在文件和目錄清單加上色彩;
-N:直接列出文件和目錄名稱,包括控制字符;
-p:列出權限標示;
-P:<範本樣式> 只顯示符合範本樣式的文件和目錄名稱;
-q:用「?」號取代控制字符,列出文件和目錄名稱;
-s:列出文件和目錄大小;
-t:用文件和目錄的更改時間排序;
-u:列出文件或目錄的擁有者名稱,沒有對應的名稱時,則顯示用戶識別碼;
-x:將範圍侷限在現行的文件系統中,若指定目錄下的某些子目錄,其存放於另外一個文件系統上,則將該目錄予以排除在尋找範圍外。
複製代碼

dns解析流程

#dns解析流程
1.瀏覽器輸入域名的時候,瀏覽器優先去hosts文件中尋找是否有對應記錄
2.沒有記錄就去dns本地緩存中尋找,是否有記錄
3.尋找是否配置了dns服務器,而後去公網中尋找記錄
4.找到了就緩存到本地dns記錄中,
5.解析結束
複製代碼
#dns域名解析系統 

做用:把域名解析爲ip地址,網絡中的一個超大電話簿

公網中,存在dns服務器,進行解析

在linux中的dns服務器配置文件是

/etc/resolv.conf 裏面定義了網絡中的dns

dns  : 
阿里巴巴: 223.5.5.5   223.6.6.6
騰訊的dns:119.29.29.29
谷歌的dns:8.8.8.8
114的dns:114.114.114.114


#hosts文件,強制解析了,也可能更換了你的dns記錄,用於測試本地的假域名
複製代碼

定時任務

什麼是計劃任務:
後臺運行,到了預約的時間就會自動執行的任務,前提是:事先手動將計劃任務設定好。這就用到了crond服務
crond服務相關的軟件包
[root@MiWiFi-R3-srv ~]# rpm -qa |grep cron
cronie-anacron-1.4.11-14.el7.x86_64
crontabs-1.11-6.20121102git.el7.noarch
cronie-1.4.11-14.el7.x86_64

這些包在最小化安裝系統時就已經安裝了,而且會開機自啓動crond服務,併爲咱們提供好編寫計劃任務的crontab命令。

crontab命令被用來提交和管理用戶的須要週期性執行的任務,與windows下的計劃任務相似

語法:

複製代碼
crontab (選項)(參數)
-e:編輯該用戶的計時器設置;
-l:列出該用戶的計時器設置;
-r:刪除該用戶的計時器設置;
-u<用戶名稱>:指定要設定計時器的用戶名稱。

存放定時任務的文件
/var/spool/cron
複製代碼

注意:

1 .查看計劃任務的執行:tail -f /var/log/cron

2. 寫計劃任務時,命令必須加上絕對路徑,不然會出現這種狀況:從日誌中看,確實觸發了計劃任務的執行,可是命令卻沒有執行成功,好比* * * * * reboot就會出現這種狀況,須要將reboot寫成/usr/sbin/reboot

3.  計劃任務執行的命令 是否存在,軟件是否安裝  

4. 確保crontab服務運行  

systemctl status cron

ps -ef|grep crond

5. 檢測crontab是否開機啓動

systemctl is-enabled crond

編輯定時任務:

crontab   -e  #編輯定時任務的文件

crontab   -l  #列出定時任務的規則

crontab配置文件:

在/etc目錄下有一個crontab文件,這個就是系統任務調度的配置文件
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
 分 時  日 月  周
View Code

crontab任務配置基本格式:

crontab任務配置基本格式:
*  *  *  *  *  command
分鐘(0-59) 小時(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0表明星期天)  命令

第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令

星號(*):表明全部可能的值,例如month字段若是是星號,則表示在知足其它字段的制約條件後每個月都執行該命令操做。
08 * * *  天天8.30去上班  
逗號(,):能夠用逗號隔開的值指定一個列表範圍,例如,「1,2,5,7,8,9」
中槓(-):能夠用整數之間的中槓表示一個整數範圍,例如「2-6」表示「2,3,4,5,6」
正斜線(/):能夠用正斜線指定時間的間隔頻率,例如「0-23/2」表示每兩小時執行一次。同時正斜線能夠和星號一塊兒使用,例如*/10,若是用在minute字段,表示每十分鐘執行一次。
*/3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com  每隔三分鐘執行下時間同步
View Code

全部命令必定要用絕對路徑來寫!

複製代碼
分  時   日  月  周   你要執行的命令的絕對路徑
*   *    *   *   *    

#每分鐘執行一次命令
*  *  *  *  *   命令絕對路徑 

#每小時的3,15分組執行命令
分   時   日  月  周   你要執行的命令的絕對路徑
3,15  *    *   *   *  


#每小時的整點執行命令 
0   *    *   *   *

#在上午8-11點的第3和第15分鐘執行
3,15  8-11  *  *  *   


#每晚21:30執行命令
30   21   *  *  *  

#每週6、日的下午1:30執行命令
30   13   *   *  6,0   


#每週一到週五的凌晨1點,清空/tmp目錄的全部文件
0   1   *  *  1-5   /usr/bin/rm -rf /tmp/*


#每晚的21:30重啓nginx
30 21 *  *  *  /usr/bin/systemctl restart nginx


#每個月的1,10,22日的4:45重啓nginx
45   4    1,10,22  *  *  /usr/bin/systemctl restart nginx


#每一個星期一的上午8點到11點的第3和15分鐘執行命令
3,15  8-11  *  *  1  
複製代碼

 

配置阿里雲的yum源的步驟

1
2
3
#linux的yum倉庫目錄是:
cd  / etc / yum.repos.d /    這個目錄下,第一層中,全部以.repo結尾的文件,都會識別爲一個yum倉庫
(這個倉庫就是一個url),url中提供了各類rpm包的下載,yum工具回去查找
複製代碼
配置阿里雲的yum源的步驟
1.地址以下:https://opsx.alibaba.com/mirror

2.備份本來的yum倉庫文件
cd /etc/yum.repos.d  
#新建文件夾
mkdir  allrepo
#移動全部的repo文件到這個目錄下,咱不用它了
mv *  ./allrepo

3.下載新的阿里雲的yum倉庫文件

wget -O /etc/yum.repos.d/CentOS-Base.repo   http://mirrors.aliyun.com/repo/Centos-7.repo
#-O  表明把Centos-7.repo  下載到指定目錄,且更名 


4.配置額外的第三方倉庫
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo


5.能夠測試yum工具安裝一個nginx
yum install nginx  -y  

6.啓動nginx測試訪問
systemctl start nginx 
七、關閉nginx
systemctl stop nginx
複製代碼

yum還提供了哪些用法

複製代碼
yum repolist all        列出全部倉庫
yum list all            列出倉庫全部軟件包
yum info 軟件包名            查看軟件包信息
yum install 軟件包名        安裝軟件包
yum reinstall 軟件包名    從新安裝軟件包
yum update    軟件包名        升級軟件包
yum remove    軟件包名        移除軟件包
yum clean all            清楚全部倉庫緩存
yum check-update        檢查能夠更新的軟件包
yum grouplist            查看系統中已安裝的軟件包
yum groupinstall 軟件包組    安裝軟件包組


centos7用systemctl 管理服務
例如:
systemctl start/stop/reload/restart/  nginx

systemctl enable  nginx #設置nginx開機自啓
systemctl disable nginx  #禁止nginx開機自啓

systemctl stop firewalld  #臨時關閉防火牆服務
systemctl disable firewalld #永久關閉開機自啓 
複製代碼

python的虛擬環境工具安裝

 (注意,你的PATH變量,編譯安裝的python3必定要放在最前面)

複製代碼
一、下載虛擬環境工具(這裏是在物理環境下安裝的)
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

二、建立虛擬環境,分別運行一個django1和django2
    進入一個統一管理的目錄,管理虛擬環境例如/opt/allenv
    mkdir  /opt/allenv     
    cd /opt/allenv 
    # 建立虛擬環境命令
    virtualenv --no-site-packages --python=python3   venv1
  
#參數解釋
--no-site-packages  不要任何的第三方包
--python 是指定一個解釋器 咱們選的是python3
  venv1是虛擬環境文件夾的名字,自定義

三、進入虛擬環境目錄,激活虛擬環境
     source是linux的讀取命令,讀取一個腳本文件,激活虛擬環境
     source /opt/allenv/venv1/bin/activate

四、虛擬環境使用原理是,修改了PATH變量,根據pATH的優先級,使用解釋器
    echo $PATH

五、激活虛擬環境,在venv1下建立django1.11.9項目
     pip3 install django==1.11.9

六、再開一個窗口,建立venv2,用於建立django2的項目
     django-amind startproject mydjango01
七、退出虛擬環境的命令 
     deactivate         
複製代碼

解決python的環境一致性問題

(將windows中解釋器的模塊,導出到一個文件,而後發送給linux一個新的虛擬環境安裝便可)

複製代碼
1.在windows中導出全部的模塊信息
    pip3 freeze >  requirements.txt 

2.將次文件,發送給linux服務器,可選lrzsz 或scp 

3.在linux中安裝便可
# 相對路徑安裝
    pip3 install -i https://pypi.douban.com/simple -r requirements.txt
# 絕對路徑安裝
    pip3 install -i https://pypi.douban.com/simple -r /opt/Python-3.6.2/requirements.txt
複製代碼

window中也建立了虛擬環境,而且模塊都在虛擬環境下
想要導出這個虛擬環境中的模塊,給linxu

複製代碼
步驟:
1.第一步,在windows中激活虛擬環境,在虛擬環境下
pip3 freeze >  requirements.txt 

2.將次文件,發送給linux服務器,可選lrzsz 或scp 

3.在linux中安裝便可
pip3 install -i https://pypi.douban.com/simple -r requirements.txt
複製代碼

virtualenvwrapper工具

一、安裝工具(退出虛擬環境)

1
pip3 install  - i https: / / pypi.douban.com / simple  virtualenvwrapper

二、配置用戶我的變量配置文件,每次開機都加載這個virtualevnwrapper工具

1
2
3
4
5
6
7
8
9
10
11
12
13
#系統變量配置文件
/ etc / profile 
#我的用戶變量配置文件,在用戶家目錄下找到這個~/.bash_profile文件,寫入以下配置
vim  ~ / .bash_profile     #打開文件,寫入以下變量
 
#設置virtualenv的統一管理目錄
export WORKON_HOME = ~ / Envs  
#添加virtualenvwrapper的參數,生成乾淨隔絕的環境
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS = '--no-site-packages'  
#指定python解釋器
export VIRTUALENVWRAPPER_PYTHON = / opt / python36 / bin / python    
#只有這一步,纔是讓這個工具生效的!!!!!!!
source  / opt / python36 / bin / virtualenvwrapper.sh

三、退出會話,從新登陸,查看是否加載了virtualenvwrapper工具

1
deactivate

四、工具建立後,使用命令管理

1
2
3
4
5
4. 工具建立後,使用命令管理
#建立虛擬環境 
#建立虛擬環境後會自動激活
mkvirtualenv  django1
mkvirtualenv  django2

五、激活虛擬環境

1
2
#激活虛擬環境
workon  虛擬環境的名字(支持tab補全) 
lsvirtualenv   #列出全部虛擬環境的目錄

cdvirtualenv   #進入已激活的虛擬環境的目錄

cdsitepackages  #進入虛擬環境下的第三方模塊目錄
相關文章
相關標籤/搜索