Я думаю, вы неправильно поняли, что делает -w
. Он не проверяет, есть ли у файла «права на запись», он проверяет, доступен ли для записи файл пользователю , вызвавшему .
Более конкретно, он вызывает access(2)
или аналогичный.
например, если скрипт имеет if [ -w /etc/shadow ]
, то если вы запустите strace
в скрипте, вы можете увидеть строку, похожую на
faccessat(AT_FDCWD, "/etc/shadow", W_OK)
Поскольку root
может записывать в файл, он возвращает 0.
например, как обычный пользователь:
faccessat(AT_FDCWD, "/etc/shadow", W_OK) = -1 EACCES (Permission denied)
Как root
faccessat(AT_FDCWD, "/etc/shadow", W_OK) = 0
И это несмотря на то, что /etc/shadow
имеет разрешение 000
на моей машине.
---------- 1 root root 4599 Jan 29 20:08 /etc/shadow
Теперь то, что вы хотите сделать, становится интересным и не таким простым.
Если вы хотите проверить простые разрешения, проверьте вывод ls
или вызовите stat
или что-то подобное. Но имейте в виду, что ACL могут превышать -эти разрешения.Тот факт, что файл имеет разрешение 400, не мешает ему быть доступным для записи...
Вам необходимо решить проблему с модулем pyaes:
error: invalid command 'bdist_wheel'
----------------------------------------
Failed building wheel for pyaes
Running setup.py clean for pyaes
Failed to build pyaes
Вhttps://stackoverflow.com/questions/34819221/why-is-python-setup-py-saying-invalid-command-bdist-wheel-on-travis-ciпредложено несколько решений. Скорее всего, решение:
sudo apt-get install gcc libpq-dev -y
sudo apt-get install python-dev python-pip -y
sudo apt-get install python3-dev python3-pip python3-venv python3-wheel -y
pip3 install wheel
После решения проблемы необходимо убедиться, что вся установка проходит без ошибок с нуля:
pip3 uninstall pysocks, pyaes, pyrogram
pip3 install pyrogram