命令替換、權限、chmod、特殊權限

命令替換

把字符串裏面的命令先執行再把該字符串輸出,與PHP的「」裏面的變量被執行同樣。程序員

  • $(COMMAND)服務器

  • `COMMAND`網站

[root@jiakang ~]# echo "The directory is $(pwd)"
The directory is /root
[root@jiakang ~]# touch ./file-$(date +%F-%H-%M-%S).txt
[root@jiakang ~]# ls
a                             install.log
anaconda-ks.cfg               install.log.syslog
file-2017-03-30-19-52-22.txt
[root@jiakang ~]# echo "The directory is `pwd`"        
The directory is /root

權限

文件:ui

  • r:可讀,能夠用相似cat等命令查看文件內容code

  • w:可寫,能夠編輯或刪除此文件進程

  • x:可執行,能夠命令提示符下看成命令提交給內核運行開發

目錄:字符串

  • r:能夠對此目錄執行ls列出內部全部文件it

  • w:能夠在此目錄建立文件test

  • x:可使用cd切換進此目錄,也可使用ls -l查看詳細信息

用數字表示:

  • 0 000 ---:無權限

  • 1 001 --x:執行

  • 2 010 -w-:寫

  • 3 011 -wx:寫和執行

  • 4 100 r--:讀

  • 5 101 r-x:讀和執行

  • 6 110 rw-:讀和寫

  • 7 111 rwx:讀寫執行

chmod命令

修改文件的權限

修改三類用戶的權限

chmod MODE file

  • -R

  • --reference=/path/somefile file 參考修改【修改和前面的somefile的權限同樣】

[root@jiakang tmp]# chmod 057 yum.log

修改某類用戶或某些類用戶的權限

u,g,o,a

chmod 用戶類別=MODE file,...

[root@jiakang tmp]# chmod u=rwx /tmp/yum.log
[root@jiakang tmp]# chmod g=r,o=r /tmp/yum.log
[root@jiakang tmp]# chmod go=r /tmp/yum.log 
[root@jiakang tmp]# ls -l /tmp/yum.log
-rwxr--r--. 1 tom root 0 3月  25 07:01 /tmp/yum.log

修改某類用戶的某位或者某些位的權限

u,g,o,a

chmod 用戶類別+|-MODE file

[root@jiakang tmp]# chmod go+w /tmp/yum.log
[root@jiakang tmp]# ls -l /tmp/yum.log     
-rwxrw-rw-. 1 tom root 0 3月  25 07:01 /tmp/yum.log
[root@jiakang tmp]# chmod +x /tmp/yum.log  
[root@jiakang tmp]# ls -l /tmp/yum.log   
-rwxrwxrwx. 1 tom root 0 3月  25 07:01 /tmp/yum.log

特殊權限(難)

SUID:運行某程序時,相應的進程的屬主是文件自身的屬主,而不是啓動者;

  • chmod u+s FILE

  • chmod u-s FILE
    若是該FILE自己原來有執行權限則SUID顯示爲s,原來沒有執行權限顯示爲S

注意:SUID用於二進制可執行文件,對目錄和非二進制可執行文件沒什麼意義

【如今rm的權限】
[root@jiakang tmp]# ls -l /bin/rm
-rwxr-xr-x. 1 root root 58960 10月 15 2014 /bin/rm
[root@jiakang tmp]# ls -l abc
-rw-r--r--. 1 root root 0 4月   2 19:55 abc

【普通用戶刪除abc】
[jiakang@jiakang ~]$ rm /tmp/abc
rm:是否刪除有寫保護的普通空文件 "/tmp/abc"?y
rm: 沒法刪除"/tmp/abc": 不容許的操做

【給rm添加s權限,注意看我當前操做的用戶】
[root@jiakang tmp]# ls -l /bin/rm
-rwsr-xr-x. 1 root root 58960 10月 15 2014 /bin/rm

【再次刪除,沒有abc文件了】
[jiakang@jiakang ~]$ rm /tmp/abc   
[jiakang@jiakang ~]$ ls /tmp
def             keyring-V2LdqH      rc.d
inittab         keyring-ydeVD8      rc.local

SGID:運行某程序時,相應的進程的屬組是文件自身的屬組,而不是啓動者所屬的基本組;

用法和上面的同樣【g+s , g-s】,如今介紹一種經常使用的用法【用於目錄】:

公司如今多個程序員開發一個網站,每一個人都有本身登錄服務器的帳號,要求是項目目錄下的文件每一個人都共享,就是在該目錄下能夠互相編輯每一個文件,無論是誰開發的

解決方法:

  1. 每一個用戶的基本組都相同,這樣建立的文件基本組也都同樣【添加一個附加組是不行的,那樣每一個用戶再建立文件時屬組是不同的】

    注意:用戶有基本組和附加組usermod進行修改;文件和目錄只有一個屬組,默認是用戶的基本組,chown進行修改,在這容易混淆

  2. 添加一個附加組【developteam】,把該目錄【project】的GID加s權限,在該目錄下建立的文件的基本組就會是該目錄的基本組【developteam】而非用戶自己的基本組,這樣每一個文件的組都相同了,文件能夠相互訪問

[root@jiakang tmp]# groupadd developteam
[root@jiakang tmp]# mkdir /tmp/project
[root@jiakang tmp]# chown -R :developteam /tmp/project【修改屬組】
[root@jiakang tmp]# chmod g+s project【加SGID】
[root@jiakang tmp]# ls -ld project
drwxr-sr-x. 2 root developteam 4096 4月  11 13:04 project
[root@jiakang tmp]# usermod -a -G developteam jiakang【追加附加組developteam】
[root@jiakang tmp]# id jiakang
uid=500(jiakang) gid=500(jiakang) 組=500(jiakang),5001(developteam)
[root@jiakang tmp]# chmod g+w project【組內用戶+w權限】
[jiakang@jiakang tmp]$ cd project
[jiakang@jiakang project]$ touch ss.txt
touch: 沒法建立"ss.txt": 權限不夠
[jiakang@jiakang project]$ exit【須要退出從新登錄才能生效】
logout
[root@jiakang ~]# su - jiakang
[jiakang@jiakang project]$ touch s.txt
[jiakang@jiakang project]$ ls -l s.txt
-rw-rw-r--. 1 jiakang developteam 0 4月  11 13:26 s.txt【屬組自動就是developteam】

sticky:在上面建立的那個公共目錄裏,每一個用戶都能建立、刪除本身的文件,可是不能刪除他人的文件

  • chmod o+t DIR

  • chmod o-t DIR

這樣權限修改的時候用數字表示就又多了一位:

  • 000

  • 001【o+t】

  • 011【g+s,o+t】
    ...

  • 111【u+s,g+s,o+t】

chmod 5755 /tmp/test【5表明:u+s,o+t】umask 0022 也是同理

相關文章
相關標籤/搜索