Как я могу проверить, существует ли файл в / root без su для root?

Upstart может подойти твоя работа. Создайте файл $ HOME / .config / upstart / firefox-with-yoururl.conf со следующим содержимым:

start on desktop-start
stop on desktop-end

exec firefox 

Ссылка: http://ifdeflinux.blogspot.in/2013/04/ upstart-user-sessions-in-ubuntu-raring.html

3
19.04.2016, 00:09
3 ответа

Очевидно, что корневой каталог / в вашей системе не имеет (по крайней мере) разрешений на «выполнение» для пользователя «yu» ни из-за членства в группе, ни из-за «других» битов. Таким образом, 'yu' не может перечислить содержимое корневого каталога /, чтобы определить, существует ли /root/1.txt или нет.

Дополнительное описание прав доступа к файлам и каталогам (в Linux, как вы упомянули Ubuntu) см .: Бит выполнения или чтения. Как работают права доступа к каталогам в Linux?

Если вы не желаете изменять права доступа в / root, вам необходимо повысить свои собственные (ну, test ) привилегии, чтобы читать каталог . Поскольку [ - это настоящая программа ( / usr / bin / []), а также встроенная оболочка, вы можете использовать sudo: sudo [-e / root / 1.txt] && echo да || эхо № . (В отличие от [[, который является только встроенной, а не внешней программой).

Если вы хотите изменить разрешения для / root, одно минимальное изменение будет заключаться в открытии «других» разрешений для добавления бита «выполнения» ( sudo chmod o + x / root , например). Это предотвращает общий список каталога, но позволяет вам проверять наличие определенных файлов:

user@host:~$ ls -ld /root
drwx-----x 2 root root 4096 Apr  3 04:55 /root
user@host:~$ [ -e /root/1.txt ] && echo yes
yes
user@host:~$ ls /root
ls: cannot open directory /root: Permission denied

Вариантом 'other + execute' будет 'group + execute', где вы добавляете разрешения на выполнение для группы и меняете группу / root к тому, членом которого является "ю".

Короче говоря, это утверждение:

Когда я использую код if [-e /root/1.txt], он возвращает false. Я знаю, что могу использовать su - root для смены пользователя и получения правильного результата.

неправильно употребляет слово «право». Разрешения файловой системы определяют, как ведет себя test . Не имеет значения, вы знаете, что файл существует; имеет значение, есть ли у программы разрешения на просмотр файла.

1
27.01.2020, 21:12

Не .

/ root / не доступен для чтения всем по очень веским причинам . Если вам действительно нужно поработать с этим файлом, положите его в другое место.

6
27.01.2020, 21:12

Если вы хотите сделать это с помощью sudo вместо su, вы можете сделать это:

sudo sh

Это зарегистрирует вас как root на терминале, тогда вы сможете делать то, что вы хочу сделать. Но я бы не советовал вам связываться с / root, потому что должна быть причина, по которой он не может быть оценен другими пользователями. Вам следует переместить '1.txt' в другое место.

0
27.01.2020, 21:12

Теги

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