У меня сложная файловая иерархия, и я не хочу проверять разрешения для каждого каталога. Есть ли способ сразу узнать, доступен ли данный пользователь для чтения одному файлу? (вне входа в систему как этот пользователь)
Это будет работать, только если у вас есть права root
если у пользователя есть действующая оболочка входа
su username -c 'ls /long/dir/user/filename'
если у пользователя есть оболочка nologin /sbin/nologin
и подобное:
su username -s /bin/sh -c 'ls /long/dir/user/filename'
Чтобы узнать почему пользователь не может получить доступ к файлу (строит удобное для чтения дерево вывода с разрешениями):
# namei -om /home/someuserhomedir/Maildir/ f: /home/someuserhomedir/Maildir/ dr-xr-xr-x root root / drwxr-xr-x root root home drwx------ someuser somegroup someuserhomedir drwx------ someuser somegroup Maildir