Почему я не могу прочитать файл как другой пользователь с sudo

Я написал сценарий оболочки .scripter.sh и хотел имитировать выполнение сценария от имени другого пользователя без полномочий root. Я использовал sudo -u daemon bash .scripter.sh для этого, но там написано «нет разрешения». Затем я увидел, что не могу прочитать какой-либо файл как пользовательский демон, и на самом деле

stefan@stefan-HP-Laptop:~$ touch file
stefan@stefan-HP-Laptop:~$ ll file 
-rw-r--r-- 1 stefan stefan 0 Dez  4 19:01 file
stefan@stefan-HP-Laptop:~$ sudo -u daemon [ -r file ]; echo $?
1
stefan@stefan-HP-Laptop:~$

показывает, что у пользователя нет разрешения на чтение, хотя разрешение -rw-r--r-- указывает, что файл доступен для чтения любому. Я надеюсь, что кто-то может пролить свет на эту тайну. Спасибо

Редактировать: На самом деле, следующие работы

stefan@stefan-HP-Laptop:~$ cd test/
stefan@stefan-HP-Laptop:~/test$ ll -d .
drwxr-xr-x 2 stefan stefan 4096 Dez  4 19:40 ./
stefan@stefan-HP-Laptop:~/test$ touch file
stefan@stefan-HP-Laptop:~/test$ sudo -u daemon [ -r file ]; echo $?
[sudo] Passwort für stefan: 
0

Как писал Steeldriver, это имеет отношение к разрешению на выполнение в родительском каталоге файла. Действительно, мой домашний каталог не предоставил никаких прав, кроме меня.

Edit2: Кажется, вам нужно разрешение на выполнение для каждого каталога между вами и файлом, который вы хотите прочитать, включая ваш текущий рабочий каталог. Я не могу получить доступ к ~/test/file как другой пользователь из моей домашней папки, но я могу сделать это как другой пользователь, когда я нахожусь в каталоге ~/test. Это совпадает с этот ответ

2
задан 4 December 2017 в 22:12

1 ответ

Такое поведение может быть вызвано отсутствием разрешения на выполнение для родительского каталога файла

Пр. учитывая

$ ls -ld tests/{,file}
drwxrwxr-x 2 steeldriver steeldriver 4096 Dec  4 13:46 tests/
-rw-rw-r-- 1 steeldriver steeldriver  322 Dec  4 13:33 tests/file

затем

$ sudo -u daemon [ -r tests/file ]; echo $?
0

, но

$ chmod o-x tests
$ sudo -u daemon [ -r tests/file ]; echo $?
1

Вы можете рассматривать разрешение на выполнение для каталога как разрешение на открытие и просмотр содержимого каталога.

3
ответ дан 4 December 2017 в 22:12

Другие вопросы по тегам:

Похожие вопросы: