Изменить разрешения для файлов в Linux

582
Manish Mathai

Есть ли способ изменить права доступа к файлу в Linux без использования команды chmod?

1
В случае, если пометка mouviciel не достаточно очевидна, «почему» отсутствует в этом вопросе: потому что это мое домашнее задание. blahdiblah 15 лет назад 0
Технически это вопрос, ответ на который может принести мне немного очков. Кажется, что общее согласие состоит в том, что это не может быть сделано. Manish Mathai 15 лет назад 0

6 ответов на вопрос

2
Satanicpuppy

Вы можете сделать это автоматически с помощью команды umask . Кроме этого, я не уверен, что понимаю вопрос. Сколько способов вам нужно изменить права доступа к файлам?

1
innaM

Очевидным ответом на этот вопрос будет другой вопрос: ПОЧЕМУ?

Но ради чего бы то ни было, вы можете изменить свой текущий umask, сделать копию файла, удалить файл и, наконец, переименовать копию, чтобы она соответствовала оригиналу.

ОБНОВИТЬ:

Обратите внимание, что это будет работать только при изменении текущих разрешений на более строгие. Другой способ, похоже, не работает.

Зачем? Возможно, команда chmod заблокирована или удалена из соображений безопасности, чтобы пользователи не могли изменять флаги файлов. (Не то чтобы я намекал что-либо, заявляя об этом.) Torben Gundtofte-Bruun 15 лет назад 0
Это домашний вопрос. Это правильная последовательность команд? umask 0777 (скажем) cp file file.bk rm file mv file.bk file Manish Mathai 15 лет назад 0
Умуаск 0777 сделает файл разрешений 000. John T 15 лет назад 0
1
John T

Помните, что при использовании umask значение вычитается из 777. Поэтому, если вы хотите, чтобы файл имел разрешения 777, например:

$ umask 000 $ cp oldfile newfile $ rm oldfile 
Вы пробовали это? Это не работает для меня. innaM 15 лет назад 0
you could always touch a new file to create it with 777 permissions. Then `cat oldfile > newfile`. John T 15 лет назад 0
1
Kazimieras Aliulis

Вы можете написать свою собственную программу с той же функциональностью :)

1
Kyle Brandt

Любая программа собирается использовать семейство системных вызовов chmod () (см. man 2 chmodРаздел 2 для системных вызовов), которое изменяет права доступа к файлу. Так что это единственный практический способ, вы можете теоретически редактировать раздел напрямую, если вы являетесь пользователем root, но это отчасти безумие.

Когда вы используете команду cp, вы создаете другой файл - вы копируете его. Так что эти примеры umask не меняют права доступа к файлу.

Я хотел бы убедить своего профессора, что это невозможно сделать без использования chmod. Manish Mathai 15 лет назад 0
Это возможно, просто сумасшедший :) Kazimieras Aliulis 15 лет назад 0
Manish: Well if he says the umask is the answer, show him the output of `stat file1` and `stat file2`, and show him how the inodes are different, they are different files. So all you are really doing is creating another file with different permissions, that happens to have the same data. Kyle Brandt 15 лет назад 0
0
dertoni

Я думаю, вы могли бы использовать то, что когда-либо Filemanager установлен с вашим графическим интерфейсом рабочего стола, если он установлен.

Если вы щелкнете правой кнопкой мыши по файлу или каталогу, там должна быть запись типа «Свойства» или что-то в этом роде. Это должно привести к появлению окна, где вы можете изменить права и увидеть некоторые другие данные.

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