Izin direktori lokal Linux sebagai tanda tanya untuk non-root

8

Oke, itu yang baru. Saya telah melihat kasus seperti itu dengan perangkat penyimpanan yang salah, dengan kesalahan dalam penyimpanan jarak jauh (SAN, NAS), saya pikir saya bahkan telah melihat sesuatu yang serupa yang disebabkan oleh izin pemasangan. Tapi ini pertama kalinya saya melihat ini terjadi pada sistem file yang sama dengan homedir saya ....

Saya sangat ingin tahu tentang itu ... Permision macam apa yang muncul di sini? Jelas bukan mount (saya menggunakan filesystem ext4 yang sama), bukan SELinux, bukan ACL. Lalu apa???

Saya tidak ingat bagaimana direktori ini dibuat. Kemungkinan itu dibuat oleh beberapa jenis perangkat lunak.

Bagi saya yang paling aneh adalah bahwa direktori tersebut bahkan tidak diizinkan untuk melihat info orang tuanya (perintah terakhir) ...

Linux Mint Sarah

user01@MyPC ~/somedirectory $ ls -l ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
ls: negaliu pasiekti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace': Permission denied
viso 0
d????????? ? ? ? ?            ? workspace
user01@MyPC ~/somedirectory $ ls -ld ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
drw-r--r-- 3 user01 user01 4096 Rgs 27  2016 ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:
user01@MyPC ~/somedirectory $ 
user01@MyPC ~/somedirectory $ 
user01@MyPC ~/somedirectory $ ls -l ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
ls: negaliu pasiekti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace': Permission denied
viso 0
d????????? ? ? ? ?            ? workspace
user01@MyPC ~/somedirectory $ 
user01@MyPC ~/somedirectory $ 
user01@MyPC ~/somedirectory $ sudo file ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:: directory
user01@MyPC ~/somedirectory $ sudo ls -l ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
viso 4
drwxr-xr-x 3 user01 user01 4096 Rgs 27  2016 workspace
user01@MyPC ~/somedirectory $ sudo stat ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
  File: './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:'
  Size: 4096        Blocks: 8          IO Block: 4096   aplankas
Device: 807h/2055d  Inode: 3937216     Links: 3
Access: (0644/drw-r--r--)  Uid: ( 1000/ user01)   Gid: ( 1000/ user01)
Access: 2017-09-21 12:57:33.990819052 +0300
Modify: 2016-09-27 11:18:38.309775066 +0300
Change: 2017-03-13 14:56:40.960468954 +0200
 Birth: -
user01@MyPC ~/somedirectory $ sudo getfacl ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
# file: deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:
# owner: user01
# group: user01
user::rw-
group::r--
other::r--

user01@MyPC ~/somedirectory $ stat ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:
  File: './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:'
  Size: 4096        Blocks: 8          IO Block: 4096   aplankas
Device: 807h/2055d  Inode: 3937216     Links: 3
Access: (0644/drw-r--r--)  Uid: ( 1000/ user01)   Gid: ( 1000/ user01)
Access: 2017-09-21 12:57:33.990819052 +0300
Modify: 2016-09-27 11:18:38.309775066 +0300
Change: 2017-03-13 14:56:40.960468954 +0200
 Birth: -
user01@MyPC ~/somedirectory $ stat ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:/workspace
stat: nepavyksta patikrinti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace': Permission denied
user01@MyPC ~/somedirectory $ sudo stat ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:/workspace
  File: './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace'
  Size: 4096        Blocks: 8          IO Block: 4096   aplankas
Device: 807h/2055d  Inode: 3937217     Links: 3
Access: (0755/drwxr-xr-x)  Uid: ( 1000/ user01)   Gid: ( 1000/ user01)
Access: 2017-09-21 12:58:46.845727190 +0300
Modify: 2016-09-27 11:18:38.309775066 +0300
Change: 2016-12-02 13:56:08.298109826 +0200
 Birth: -
user01@MyPC ~/somedirectory $ stat .
  File: '.'
  Size: 4096        Blocks: 8          IO Block: 4096   aplankas
Device: 807h/2055d  Inode: 3278479     Links: 23
Access: (0755/drwxr-xr-x)  Uid: ( 1000/ user01)   Gid: ( 1000/ user01)
Access: 2017-09-21 09:46:22.102269130 +0300
Modify: 2017-09-20 17:33:04.564009275 +0300
Change: 2017-09-20 17:33:04.564009275 +0300
 Birth: -
user01@MyPC ~/somedirectory $ ll ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:/
ls: negaliu pasiekti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace': Permission denied
ls: negaliu pasiekti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/.': Permission denied
ls: negaliu pasiekti './deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/..': Permission denied
viso 0
d????????? ? ? ? ?            ? ./
d????????? ? ? ? ?            ? ../
d????????? ? ? ? ?            ? workspace/
user01@MyPC ~/somedirectory $ 

Atribut:

user01@MyPC ~/somedirectory $ sudo lsattr ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:/
-------------e-- ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace
user01@MyPC ~/somedirectory $ sudo lsattr ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D\:/workspace
-------------e-- ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D:/workspace/directory2
user01@MyPC ~/somedirectory $ 
netikras
sumber
Bagaimana sistem file di-mount? Apa jenis sistem file itu?
Raman Sailopal
Semua ini pada sistem file ext4 yang sama - sistem file saya / home. Ini disebutkan dalam posting
netikras
2
Tolong jangan memposting gambar teks. Dan tolong hanya tunjukkan informasi yang relevan. Paling tidak, Anda dapat menghapus perintah yang salah! Ini sangat sulit untuk mengikuti cara Anda menunjukkannya.
terdon
haruskah saya mengedit posting?
netikras
2
Bagaimana dengan kemungkinan filesystem yang rusak dan kesulitan membaca inode? Apakah dmesg melaporkan sesuatu?
Raman Sailopal

Jawaban:

17

Pada file cukup baca untuk memeriksa izin. Anda perlu membaca DAN menjalankan di folder untuk ls mereka.

chmod -R a+X ./deploy_dir

Capital X hanya mengatur eksekusi pada folder (dan file yang telah memiliki bit eksekusi).

HoD
sumber
5
Saya pernah menghabiskan setengah hari pada masalah yang sama, mudah untuk dilewatkan!
HoD
7

Membaca izin suatu file memerlukan pemanggilannya stat(2), dan itu memerlukan izin eksekusi / akses pada direktori yang berisi (semua direktori di jalur). Ini sebenarnya sama dengan setiap panggilan sistem lain yang menggunakan nama file. Namun, membaca isi direktori (daftar nama file) hanya memerlukan akses baca pada direktori.

Dalam cuplikan sampel Anda:

~/somedirectory $ ls -l .../bin/D\:
ls: negaliu pasiekti '.../bin/D:/workspace': Permission denied
viso 0
d????????? ? ? ? ?            ? workspace

lsmencoba menelepon stat(".../bin/D:/workspace"), mendapat kesalahan dan mengeluh. Pada beberapa sistem Anda dapat memperoleh informasi parsial dari readdir/ getdentspanggilan bersama dengan nama file, tanpa perlu menggunakan stat. Seperti di sini, workspaceditampilkan sebagai direktori.

Dan di sini kita melihat tidak ada x bit untuk pengguna mana pun:

~/somedirectory $ ls -ld .../bin/D\:
drw-r--r-- 3 user01 user01 4096 Rgs 27  2016 .../bin/D:

Sebagai root, Anda mendapatkan daftar lengkap, karena menjadi root mengabaikan bit izin sepenuhnya.

ilkkachu
sumber
Bisakah Anda melakukan hal yang sama, tetapi dengan LC_ALL=Cmengekspor ke lingkungan Anda?
CVn
1

Untuk melihat atribut file, seseorang perlu hak untuk membaca direktori. Jika ini tidak memungkinkan, tanda tanya akan ditampilkan.

Untuk alasan mengapa pengguna itu tidak dapat membaca informasi, lihat atribut direktori (di .../D:/.atas). Penyebab lain yang mungkin terjadi adalah jika direktori telah dihapus atau tidak dapat diakses (misalnya sistem file jaringan, basi pegangan) karena alasan yang berbeda dari mode akses.

Ned64
sumber
Memperbarui pertanyaan. Atribut semuanya sama dengan D: \, anak-anaknya, orangtuanya dan my ~ /. direktori.
netikras
Dan direktori ini sudah ada selama berbulan-bulan sekarang. Itu tidak menghilang di mana pun. Jelas mengatakan bahwa kecuali saya root saya tidak bisa masuk ke dalam: / Itu tidak akan bekerja dengan mengepakkan media atau
menangani file
Coba juga periksa semua direktori induk, apakah ada di antara mereka yang memiliki atribut yang menimbulkan masalah (lihat apakah llgagal seperti user01pada orangtua mana pun yang di-root). Tidak perlu memposting output, cukup beri tahu kami hasilnya.
Ned64
1
Saya baru saja tar'ed direktori, scp'ed ke server lain dan melakukan lstes yang sama . Hasilnya identik
netikras
2
Anda tidak xmengibarkan bendera, jadi HoD benar. Saya belum melihat itu dalam output Anda yang berantakan. straceakan memberitahumu itu. terlalu.
Ned64
0

Hari ini saya memiliki masalah yang sangat mirip, dengan gejala yang sama: tanda tanya di bidang izin dan kepemilikan, dan bahkan dengan root / sudo saya tidak dapat mengubah semua ini. Lalu saya akhirnya ingat bahwa direktori khusus ini sebenarnya adalah titik tunjuk ke direktori pada berbagi file Windows, yang telah saya buat beberapa minggu yang lalu (dalam sesi percobaan untuk melihat apakah Samba / CIFS ada gunanya untuk proyek saya) dan tampaknya itu dilepas sementara itu. Setelah menerbitkan kembali mount.cifsperintah dan memasukkan kredensial saya untuk bagian Windows dari jaringan kami, 'ls' melaporkan izin normal dan informasi kepemilikan pada direktori. Karena gejalanya tampak persis seperti Anda, saya ingin tahu apakah Anda berada dalam situasi yang sama, juga karena "D:" terlihat sangat Windows-ish.

davino
sumber
Hai, tanda centang hijau berarti pengguna yang mengajukan pertanyaan telah menandai jawaban sebagai "diterima". Oleh karena itu kita setidaknya dapat mengasumsikan hak akses yang dapat diubah menggunakan chmod. Direktori ini berada di bawah direktori home pengguna ( ~). Plus mereka sudah sadar bahwa masalah seperti ini dapat disebabkan oleh masalah pemasangan dengan penyimpanan jarak jauh.
sourcejedi
Perhatikan juga, statperintah mengkonfirmasi ini. Bandingkan Devicebidang untuk stat .vs sudo stat ./deploy_dir/liferay-portal-6.1.1-ce-ga2/tomcat-7.0.27/bin/D \: File: './deploy_dir/liferay-portal-6.1.1-ce -ga2 / tomcat-7.0.27 / bin / D: '`. Sama. Output ini adalah bukti yang baik bahwa mereka berada di sistem file yang sama.
sourcejedi
Ah benar! Maaf untuk kebisingan ...
davino