即使在同一組中也無法讀取文件

即使在同一組中也無法讀取文件

我為使用者建立了指向一個檔案(位於另一個使用者主目錄中)的新符號連結。但即使同組使用者且檔案權限為755也無法讀取。

[lmurugan@localhost ~]$ ls -lrt
total 0
lrwxrwxrwx. 1 root       root       34 Feb 16 16:36 3000.log -> /home/dkanagaraj/.forever/f3-w.log
lrwxrwxrwx. 1 dkanagaraj dkanagaraj 34 Feb 16 16:38 3030.log -> /home/dkanagaraj/.forever/z_lZ.log
[lmurugan@localhost ~]$ less 3030.log
3030.log: Permission denied


[lmurugan@localhost ~]$ ls -lrt
total 0
lrwxrwxrwx. 1 root       root       34 Feb 16 16:36 3000.log -> /home/dkanagaraj/.forever/f3-w.log
lrwxrwxrwx. 1 dkanagaraj dkanagaraj 34 Feb 16 16:38 3030.log -> /home/dkanagaraj/.forever/z_lZ.log

[lmurugan@localhost ~]$ id
uid=1006(lmurugan) gid=1000(dkanagaraj) groups=1000(dkanagaraj)

[lmurugan@localhost ~]$ id dkanagaraj
uid=1000(dkanagaraj) gid=1000(dkanagaraj) groups=1000(dkanagaraj),10(wheel)

[dkanagaraj@localhost .forever]$ ls -lrt /home/dkanagaraj/.forever/f3-w.log
-rwxr-xr-x. 1 dkanagaraj dkanagaraj 425361 Feb 16 16:46 /home/dkanagaraj/.forever/f3-w.log

[dkanagaraj@localhost .forever]$ ls -lrt /home/dkanagaraj/.forever/z_lZ.log
-rwxr-xr-x. 1 dkanagaraj dkanagaraj 570027 Feb 16 16:46 /home/dkanagaraj/.forever/z_lZ.log

答案1

您混淆了命令的輸出。

首先,「3030.log」是一個鏈接

[lmurugan@localhost ~]$ ls -lrt 
total 0 
lrwxrwxrwx. 1 root       root       34 Feb 16 16:36 3000.log -> /home/dkanagaraj/.forever/f3-w.log
lrwxrwxrwx. 1 dkanagaraj dkanagaraj 34 Feb 16 16:38 3030.log -> /home/dkanagaraj/.forever/z_lZ.log

第一個位置中的「l」與「-> /home/dkanagaraj/.forever/z_lZ.log」一樣顯示這一點

因此顯示您連結到的檔案的權限以及父目錄 dkanagaraj 和 .forever 的權限

ls -l /home/dkanagaraj/.forever/z_lZ.log

http://linuxcommand.org/lts0070.php有關文件和目錄權限的討論。

答案2

bodhi.zazen 的答案是正確的,但我想以不同的方式回答它:權限附加到 inode,並且符號連結及其目標都有自己的 inode。考慮問題, 以下:

$ ls -l foo issues
lrwxrwxrwx 1 jklowden jklowden    6 Feb 18 16:46 foo -> issues
-rw-rw-r-- 1 jklowden jklowden 2380 Jan 29 14:02 issues

$ stat foo
  File: ‘foo’ -> ‘issues’
  Size: 6               Blocks: 0          IO Block: 4096   symbolic link
Device: 811h/2065d      Inode: 11406493    Links: 1
Access: (0777/lrwxrwxrwx)  Uid: ( 1000/jklowden)   Gid: ( 1000/jklowden)
Access: 2016-02-18 16:46:52.224805576 -0500
Modify: 2016-02-18 16:46:40.905398163 -0500
Change: 2016-02-18 16:46:40.905398163 -0500
 Birth: -

$ stat issues 
  File: ‘issues’
  Size: 2380            Blocks: 8          IO Block: 4096   regular file
Device: 811h/2065d      Inode: 11405468    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/jklowden)   Gid: ( 1000/jklowden)
Access: 2016-01-29 14:05:26.122808636 -0500
Modify: 2016-01-29 14:02:52.106866058 -0500
Change: 2016-01-29 14:02:52.106866058 -0500
 Birth: -

通常,檔案的權限控制您可以使用它執行的操作,但正如大多數系統上發生的那樣,符號連結檔案的權限不控制任何內容。 (你可以chmod 0 foo, 還是ln -sf foo 酒吧有效。

[以下內容已更正。感謝 dave_thompson_085 的澄清評論。

在您的範例中,真實文件(不是符號連結)當然是f3-w.log.由於它屬於您的群組 dkanagaraj,並且具有群組讀取權限,因此您希望能夠讀取其內容,無論您使用什麼符號連結。

讀取該檔案的權限是由它的路徑控制。 存取檔案時,需要對路徑名中列出的所有目錄具有執行權限。Linux程式介面,第 15.4.3 節,第 297 頁)。因為符號連結使用其目標的絕對路徑名,德卡納加拉吉群體需求執行每個路徑名組件的權限:/homedkanagaraj.forever。路徑權限約束適用於任何文件,包括符號連結本身,但我認為您已經涵蓋了這一點。

相關內容