Linux面試時遇到的問題

來源:互聯網
上載者:User

平時用的不多的或者確實本身就有點模糊的,非常感謝面試官的解釋,這裡記錄下:

 

檔案許可權 4755的涵義 = 檔案許可權中s/S的意義?

chmod是Linux下設定檔案許可權的命令,後面的數字表示不同使用者或使用者組的許可權。

一般是三個數字:

第一個數字表示檔案所有者的許可權

第二個數字表示與檔案所有者同屬一個使用者組的其他使用者的許可權

第三個數字表示其它使用者組的許可權

許可權分為三種:讀(r=4),寫(w=2),執行(x=1)。綜合起來還有可讀可執行(rx=5=4+1)、可讀可寫(rw=6=4+2)、可讀可寫可執行(rwx=7=4+2+1)。

所以,chmod 755 設定使用者的許可權為:

1.檔案所有者可讀可寫可執行

2.與檔案所有者同屬一個使用者組的其他使用者可讀可執行

3.其它使用者組可讀可執行

chmod 4755與chmod 755 的區別在於開頭多了一位,這個4表示其他使用者執行檔案時,具有與所有者相當的許可權。

 

文章Linux中的檔案特殊許可權中通過執行個體很好地解釋了這裡的4的含義:

先看個執行個體,查看你的/usr/bin/passwd 與/etc/passwd檔案的許可權

[root@MyLinux ~]# ls -l /usr/bin/passwd /etc/passwd

-rw-r--r--1 root root 154908-1913:54/etc/passwd

-rwsr-xr-x 1 root root 229842007-01-07/usr/bin/passwd

眾所周知,/etc/passwd檔案存放的各個使用者的帳號與密碼資訊,/usr/bin/passwd是執行修改和查看此檔案的程式,但從許可權上看,/etc/passwd僅有root許可權的寫(w)權,可是為什麼每個使用者都可以直接調用/usr/bin/passwd來寫/etc/passwd從而達到修改自己的密碼呢?注意這裡的s代替了x( -rwsr-xr-x 1 root root 229842007-01-07/usr/bin/passwd) , 這裡的s使得其他的使用者執行/usr/bin/passwd時具有與owner root相當的許可權。

 

這裡的4或s是特殊的檔案許可權,其實s可以用在user或group,還有另一種特殊許可權t:

再看個執行個體,查看你的/tmp目錄的許可權

[root@MyLinux ~]# ls -dl /tmp
drwxrwxrwt 6 root root 4096 08-22 11:37 /tmp

 tmp目錄是所有使用者共有的臨時檔案夾,所有使用者都擁有讀寫權限,這就必然出現一個問題,A使用者在/tmp裡建立了檔案a.file,此時B使用者看了不爽,在/tmp裡把它給刪了(因為擁有讀寫權限),那肯定是不行的。

 

有t特權的目錄下的檔案或目錄只有owner和root才可以刪除和修改,其他的人即使有寫入權限也不能刪除。 

 

如何設定以上特殊許可權:
setuid:chmod u+s xxx
setgid: chmod g+s xxx
stick bit : chmod o+t xxx

或者使用八進位方式,在原先的數字前加一個數字,三個許可權所代表的進位數與一般許可權的方式類似,如下:

suid   guid    stick bit
  1        1          1

所以:
suid的二進位串為:100,換算十進位為:4
guid的二進位串為:010,換算十進位:2
stick bit 二進位串:001,換算十進位:1

於是也可以這樣設:
setuid:chmod 4755 xxx
setgid:chmod 2755 xxx
stick bit:chmod 1755 xxx

最後,在一些檔案設定了特殊許可權後,字母不是小寫s或者t,而是大寫的S和T,那代表此檔案的特殊許可權沒有生效,是因為你尚未給它對應使用者的x許可權.

 

永久連結和軟串連的大小?

通過下面的測試,永久連結與源檔案是相同的inode節點,指向相同的檔案,肯定是相同的大小;軟串連可以理解為檔案內容中儲存了源檔案的地址或路徑,所以有自己的大小。

[aaa@myvm ~]$ mkdir mytest
[aaa@myvm ~]$ cd mytest
[aaa@myvm mytest]$ echo "AAAAAAAAAAAAAAAAA" >hello
[aaa@myvm mytest]$ ln hello hello2
[aaa@myvm mytest]$ ln -s hello hello3
[aaa@myvm mytest]$ ls -lia
總計 16
5764989 drwxrwxr-x  2 aaa aaa 4096 11-25 16:03 .
5566272 drwx------ 23 aaa aaa 4096 11-25 16:02 ..
5765068 -rw-rw-r--  2 aaa aaa   18 11-25 16:03 hello
5765068 -rw-rw-r--  2 aaa aaa   18 11-25 16:03 hello2
5765116 lrwxrwxrwx  1 aaa aaa    5 11-25 16:03 hello3 -> hello
[aaa@myvm mytest]$ echo "BBBBBBBBBBB" >>hello
[aaa@myvm mytest]$ ls -lia
總計 16
5764989 drwxrwxr-x  2 aaa aaa 4096 11-25 16:03 .
5566272 drwx------ 23 aaa aaa 4096 11-25 16:02 ..
5765068 -rw-rw-r--  2 aaa aaa   30 11-25 16:04 hello
5765068 -rw-rw-r--  2 aaa aaa   30 11-25 16:04 hello2
5765116 lrwxrwxrwx  1 aaa aaa    5 11-25 16:03 hello3 -> hello

 

如何設定目前使用者建立檔案或目錄的預設許可權?

umask用來定義建立檔案或目錄的預設許可權,新的目錄的許可權為777-umask設定的值,建立檔案的許可權為666-umask設定的值。若要長期修改umask的值,可以把它寫進/etc/profile或~/.profile或~/.bash_profile中。

[aaa@myvm mytest]$ umask
0002
[aaa@myvm mytest]$ umask -S
u=rwx,g=rwx,o=rx
[aaa@myvm mytest]$ mkdir aa
[aaa@myvm mytest]$ touch bb
[aaa@myvm mytest]$ ls -la
總計 12
drwxrwxr-x  3 aaa aaa 4096 11-25 16:20 .
drwx------ 23 aaa aaa 4096 11-25 16:20 ..
drwxrwxr-x  2 aaa aaa 4096 11-25 16:20 aa
-rw-rw-r--  1 aaa aaa    0 11-25 16:20 bb
[aaa@myvm mytest]$ umask 022
[aaa@myvm mytest]$ mkdir aa2
[aaa@myvm mytest]$ touch bb2
[aaa@myvm mytest]$ ls -la
總計 16
drwxrwxr-x  4 aaa aaa 4096 11-25 16:29 .
drwx------ 23 aaa aaa 4096 11-25 16:20 ..
drwxrwxr-x  2 aaa aaa 4096 11-25 16:20 aa
drwxr-xr-x  2 aaa aaa 4096 11-25 16:29 aa2
-rw-rw-r--  1 aaa aaa    0 11-25 16:20 bb
-rw-r--r--  1 aaa aaa    0 11-25 16:29 bb2

find . -name "filename" 中的filename為啥必須加引號?但是ls中不需要?

find [-H] [-L] [-P] [path...] [expression]

ls [OPTION]... [FILE]...

 

因為這裡的"filename"其實是運算式中的一個pattern,所以必須要加“”來組織shell的解析。 例如find . -name "aa*" -exec rm {}。

 

如何快速地將遠程機器上的共用目錄下的所有檔案拷貝到本地供唯讀使用?

如果不拷貝,簡單地mount到本地目錄。但是這裡是要求拷貝到本地,所以這裡可以使用softlink來將對檔案的拷貝時間變為固定值。具體可以使用cp的-s參數。

 

Linux中檔案路勁可以用空格嗎?

windows中用雙引號就可以了,linux中用\加空格來表示。

 

mkdir my\ \ folder  (中間有2個空格)

 

cd my\ \ folder/

 

 

kill -9中的-9啥意思?

強行kill。

 

 完! 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.