Může mi někdo říct, co dělám špatně, co to je nebo jak to opravit? Používám Fedoru 18 a zobrazuje se mi chyba
[[email protected] /]# find . -name ngirc
find: `./run/user/1000/gvfs': Permission denied
[[email protected] /]#
[[email protected] /]# pwd
/
[[email protected] /]# ls -ltr ./run/user/1000
ls: cannot access ./run/user/1000/gvfs: Permission denied
total 0
d?????????? ? ? ? ? ? gvfs
lrwxrwxrwx. 1 root root 17 May 28 12:30 X11-display -> /tmp/.X11-unix/X0
drwx------. 2 kal kal 120 May 28 12:30 keyring-QjDw4b
drwx------. 2 kal kal 40 May 28 12:30 gvfs-burn
drwx------. 2 kal kal 60 May 28 12:30 krb5cc_5f0bcaf94f916d6b61696e2251a4dbb3
drwx------. 2 kal kal 60 May 28 18:25 dconf
Přijatá odpověď:
Neděláte nic špatného a není co opravovat. /run/user/$uid/gvfs
nebo ~$user/.gvfs
je přípojný bod pro rozhraní FUSE k GVFS. GVFS je implementace virtuálního souborového systému pro Gnome, která umožňuje aplikacím Gnome přistupovat ke zdrojům, jako jsou servery FTP nebo Samba, nebo k obsahu souborů zip, jako jsou místní adresáře. FUSE je způsob, jak implementovat ovladače souborového systému jako uživatelský kód (místo kódu jádra). Brána GVFS-FUSE zpřístupňuje ovladače souborového systému GVFS všem aplikacím, nejen těm, které používají knihovny Gnome.
Správa hranic důvěryhodnosti se souborovými systémy FUSE je obtížná, protože ovladač souborového systému běží jako neprivilegovaný uživatel, na rozdíl od kódu jádra pro tradiční souborové systémy. Aby se předešlo komplikacím, ve výchozím nastavení jsou souborové systémy FUSE přístupné pouze uživateli, který spouští proces ovladače. Ani root toto omezení neobejde.
Pokud hledáte soubor pouze na lokálních souborových systémech, předejte -xdev
find
. Pokud chcete procházet více lokálními souborovými systémy, vyjmenujte je všechny.
find / /home -xdev -name ngirc
Pokud je soubor přítomen od včerejška, můžete zkusit locate ngirc
místo toho (locate
prohledává databázi názvů souborů, která se obvykle aktualizuje každou noc).
Pokud chcete procházet přípojné body GVFS, musíte tak učinit jako příslušný uživatel.
find / -name ngirc -path '/run/user/*/gvfs' -prune -o -path '/home/*/.gvfs' -prune -o -name ngirc -print
for d in /run/user/*; do su "${d##*/}" -c "find $d -name ngirc -print"; done