Chmod невозможно получить доступ к нет такого файла или каталога
Я скачал игру (Shank), но файл bin не запускается. Ошибка, которая отображается при попытке запустить исполняемый файл:
Спасибо за ваш ответ. Я выполнил команду, которую вы сказали Agent86, но у меня тот же результат. Я также скачал файл .deb, но есть проблема. Я не знаю, в чем проблема этой игры.
Пожалуйста, подтвердите, используете ли вы 64-битную установку (это наиболее распространенный случай для этой проблемы).
Вероятно, вы пытаетесь запустить 32-разрядный двоичный файл в 64-разрядной системе, в которой не установлена 32-разрядная поддержка.
- Файл не существует. Я предполагаю, что вы проверили, что файл существует (возможно, потому что оболочка завершает его).
- Файл с таким именем существует, но это свисающая символическая ссылка.
- Файл существует, и вы даже можете прочитать его (например, команда file shank-linux-120720110-1-bin отображает что-то вроде «ELF 32-битный исполняемый файл LSB…»), и все же, когда вы пытаетесь выполнить его, вам говорят, что файл не существует.
Команда file скажет вам, что это за двоичный файл. За некоторыми исключениями, вы можете запустить только двоичный файл для архитектуры процессора, для которой предназначен ваш выпуск Ubuntu. Основным исключением является то, что вы можете запускать 32-битные (x86, aka IA32) двоичные файлы в 64-битных (amd64, aka x86_64) системах.
Поскольку в 11.10 (oneiric) появилась поддержка multiarch , вы все равно можете установить ia32-libs , но вы можете выбрать более детальный подход, которого достаточно получить (плюс любую другую необходимую библиотеку). libc6-i386
Спасибо за отличный ответ, Жиль. Хотя я еще не сталкивался с этой проблемой (пока!), Я оставил ваш ответ для дальнейшего использования.
Спасибо за исчерпывающий ответ! Файл bin, который я скачал, был единственным, доступным в этом формате (bin). Так что я думаю, что это хорошо для всех архитектур. Я также скачал файл .deb для моей архитектуры (64 бита), но с другой ошибкой. На данный момент я думаю, что на игру влияют некоторые ошибки, или я не могу установить эту игру. Сейчас я пытаюсь загрузить libc6-i386 и все еще пытаюсь установить его. Я напишу снова, если будут значительные изменения. Спасибо за ваше время.
@Francesco Пожалуйста, опубликуйте решение! Это может помочь другим людям, пытающимся запустить Shank на Ubuntu. Это нормально, чтобы ответить на свой вопрос .
Вы можете использовать, ldd чтобы проверить, если вы пропустили библиотеку. ldd kgio_ext.so может сказать что-то подобное libruby.so.2.3 => not found среди других
64-битные системы Ubuntu Multiarch
Следуйте этому ответу, только если вывод file file-name показывает,
Для того, чтобы запустить 32 - битный исполняемый файл в 64 битном мульти-арочной системы Ubuntu, вы должны добавить i386 архитектуру , а также вы должны установить libc6:i386 , libncurses5:i386 , libstdc++6:i386 эти три библиотеки пакетов.
Я бы использовал sudo для последней команды: запуск 32-битного двоичного файла (так что очевидно, что он не скомпилирован вами или Ubuntu), поскольку sudo может быть рискованным. (ну, даже не как root, восхищенно)
Следует отметить, что если вы используете CentOS или RedHat, этот ответ не применяется. Был скинут на несколько часов из-за этого.
Установив deb для 32-битной системы, я понял, что мне не хватает некоторых библиотек (в дополнение к ia32-libs и libc6). Сначала я решил эту проблему, дав следующую команду:
Тогда я получил еще одну ошибку:
Очевидно, что эти библиотеки были правильно установлены. Не вдаваясь в детали, мне пришлось связывать библиотеки вручную. Тогда я понял, что через Synaptic можно было бы также проще установить следующие пакеты:
Надеюсь это кому-нибудь пригодится. Если вам нужна дополнительная помощь или более подробная информация, пожалуйста, не стесняйтесь связаться со мной.
После установки libc6: i386 все начинает улучшаться .
Чтобы завершить работу, вам может понадобиться определить и установить дополнительные библиотеки по одной за раз .
Чтобы расширить ответ @Gilles, есть как минимум три сценария, приводящие к этой ошибке:
Категории проблем с загрузчиком:
Загрузчик исполняемого файла не существует. Вы можете проверить это с помощью команды file и посмотреть, существует ли загрузчик. Например
Обратите внимание interpreter /lib64/ld-lsb-x86-64.so.3 ; если этот файл не существует, вам необходимо установить его. Для данного конкретного загрузчика 16.04 ответ оказался sudo apt-get install lsb .
Проблемы с загрузчиком скрипта (см. Этот ответ ).
Загрузчик не существует может быть из-за несоответствия 32/64 бит или по другой причине. Могут быть и другие ошибки загрузчика, о которых я не знаю.
В Unix каждому файлу соответствует набор прав доступа, представленный в виде 9-ти битов режима. Он определяет, какие пользователи имеют право читать файл, записывать в него данные или выполнять его. Вместе с другими тремя битами, влияющими на запуск исполняемых файлов, этот набор образует код режима доступа к файлу. Двенадцать битов режима хранятся в 16-битовом поле индексного дескриптора вместе с 4-мя дополнительными битами, определяющими тип файла. Последние 4 бита устанавливаются при создании файлов и не подлежат изменению. Биты режима (далее права) могут изменяться либо владельцем файла, либо суперпользователем с помощью команды chmod.
Существует три пути управления доступом к файлу или каталогу. Было определено, что каждый файл должен иметь владельца (owner), группового владельца (group owner), а также может потребоваться доступ для всех остальных пользователей (everyone). Эти названия обычно приводятся как пользователь/группа/остальные (user/group/others) или коротко ugo. Реализация управления доступом к файлам и каталогам в Unix позволяет или запрещает доступ по трем флагам: флаг чтения (Read), флаг записи (Write), флаг выполнения (eXecute). Они представляются следующим образом:
Флаг типа (flag) может быть одним из следующих:
Флаг | Описание |
---|---|
- | Отсутствие флага |
l - лат. «л» | Символическая ссылка (symbolic link) |
d | Директория (directory) |
b | Блочное устройство (block device) |
c | Символьное устройство (character device) |
p | Канал, устройство fifo (fifo device) |
s | Unix сокет (unix domain socket) |
Расширенные права
Очевидно, что использование стандартных прав Unix недостаточно при реализации сложных схем доступа. Они не так гибки как хотелось бы. Даже используя различные биты доступа в сочетании со стандартными правами, желаемого эффекта в большинстве случаев не добиться.
В больших сетях, с многоуровневыми схемами доступа применяется более гибкая реализация назначения прав, именуемая как ACL - Списки контроля доступа.
Можно читать/изменять/запускать(если разрешено правами на сам файл), а также создавать/удалять/переименовывать файл, но только если вы знаете его имя. Узнать имена файлов в каталоге - нет никакой возможности
Обратите внимание, что применение прав к объектам в подкаталогах произойдет только в том случае, если сам подкаталог начинает именоваться на z. Т.е. рекурсия будет применяться только и только к тем объектам, которые удовлетворяют регулярному выражению.
Обратите внимание, в этом примере основная группа пользователя allexserv - это группа root (идентификатор 0) - при создании этого пользователя ему была явно указана принадлежность к группе root.
Обратите внимание, что, если вы устанавливаете биты SGID и SUID посредством восмеричного назначения прав, с их заменой, то регистр символа будет строчный.
В отличии от установки sticky на каталог, на файл такой бит устанавливать уже не имеет смысла. Многие современные ядра попросту игнорируют sticky на файле. На файлах он использовался на старых системах с малой ОЗУ и был очень важен в те времена. Он запрещал выгрузку программ из памяти.
Даже если имеют права 7 (rwx), хотя писать (создавать) файлы в таких каталогах они могут, при условии что имеют права 7 (rwx)
program exited with code: 126 , Эта проблема всегда возникает, когда я пытаюсь выполнить свой код. Какое может быть решение?
Когда я делаю это, он говорит мне, что chmod: не может получить доступ к `geany_run_script.sh ': нет такого файла или каталога. Должен ли я запустить его из терминала или как?
Если вы хотите пропустить их (пока, конечно), вы можете создать каталог / папку в вашем домашнем каталоге пользователя и работать там над своими C программами (или другими).
Вы можете открыть терминал (нажмите Ctrl + Alt + T ) и cd в целевой каталог:
Чтобы дать файлу «the_file_name» разрешение на выполнение (если файловая система позволяет вам с правами RW):
Проблема в том, как я могу это сделать? Я новый пользователь Ubuntu, которого я недавно переключил с Windows.
.. каков твой рабочий каталог т.е. где находится ваш файл исходного кода? ..У вас есть опыт работы с Windows CLI?
@ wkhwilo-012, пожалуйста, скопируйте исполняемый файл Area_circumference и вставьте его (путь к файлу будет вставлен), чтобы обновить тело вашего вопроса .
Вам нужно дать только разрешение на выполнение. Следовать этому:
Когда мы создаем новый файл скрипта, он по умолчанию имеет права на чтение и запись. Но если мы хотим выполнить их, мы должны дать разрешение на выполнение, как показано выше.
Откройте приложение терминала, нажав CTRL + ALT + T или с помощью соответствующей комбинации клавиш в графической среде (например, Terminal или xTerm ).
В стандартном окне, которое появляется на экране, вы увидите мигающий символ, это terminal cursor : просто нажмите на окно и напишите, чтобы ввести текст (обычно команды), и нажмите, ENTER чтобы подтвердить ввод.
Перед курсором всегда указывается ваша текущая позиция в файловой системе из root directory ("/"), а ваш дом (где находятся ваши личные файлы) называется "~".
Для изменения каталога / папки используйте cd EXISTENTFOLDER (замените EXISTENTFOLDER на имя папки); если вы чувствуете себя потерянным, просто напишите, cd чтобы в мгновение ока вернуться в свой домашний каталог!
В настоящее времядавайте решим вашу проблему :
Используйте cd команду, чтобы найти каталог с вашим исходным кодом. Используйте, TAB чтобы помочь вам. Если вы выполните ls -lh , вы увидите список возможных путей и файлов для выполнения.
Когда вы найдете заблокированный файл, выполните команду chmod +x FILENAME (замените FILENAME на имя файла исходного кода).
Если у вас есть несколько заблокированных файлов, выполните chmod +x * команду, чтобы разблокировать все файлы в текущем каталоге. Никогда не используйте chmod + x опасные или незащищенные файлы .
Выполнить, ./FILENAME YOUREVENTUALARGUMENTS чтобы выполнить ваш исполняемый файл.
Помните, что если ваша скомпилированная программа пытается читать / записывать вне вашего домашнего каталога, вам нужно будет выполнить ее как root с помощью sudo ./FILENAME YOUREVENTUALARGUMENTS .
Если вы хотите иметь руководство для выполнения команды man COMMAND (замените COMMAND на точное имя команды, Linux чувствителен к регистру).
В некоторых оболочках есть Open terminal here команда, упрощающая вашу жизнь, ищите ее в будущем и помните, что командная оболочка может стать вашим лучшим другом, если вы ее хорошо используете. :-D
Это все. Если вам нужна дополнительная помощь, прокомментируйте здесь.
Если я помогаю вам, нажмите стрелку вверх слева; если вы решили пометить этот ответ как лучший ответ.
Приятного общения с Linux и Ubuntu.
Большое спасибо. Теперь я могу работать в домашнем каталоге. Операция, которую вы спрашивали ранее, не может быть разрешена. Там написано, что у меня нет разрешения, но все равно спасибо за предложение.
по вайфаю я соеденил и по вайфаю мне пришел файл для настройки:
Но запустить не получилось, не знаю что именно запускать надо
Перемещено tazhate из general
В архиве есть Readme.txt
нужно .sh скрипты запускать. cmd емним для виндовса
Нееет! Ты повел его по самому сложному пути
я так и сделал, но я не селен в терминале, в общем вот:
karyzhkov@Book:~$ chmod +x /home/karyzhkov/Рабочий стол/startkbd.sh
chmod: невозможно получить доступ к «/home/karyzhkov/Рабочий»: Нет такого файла или каталога
chmod: невозможно получить доступ к «стол/startkbd.sh»: Нет такого файла или каталога
ты же видишь, что путь не совсем таков, какой тебе нужен? Экранируй пробел \
мне нужен: Рабочий стол -> startkbd.sh
это как понять «Экранируй пробел \»
причитал, но ни чего не понял(((
Что только не пробывал, скинул в домашнюю папку:
karyzhkov@Book:~$ chmod +x /usr/startkbd.sh\
karyzhkov@Book:~$ chmod +x /usr/startkbd.sh
karyzhkov@Book:~$ chmod +x /startkbd.sh
karyzhkov@Book:~$ chmod +x /home/startkbd.sh
Чтобы научиться управлять компьютером с планшета, нужно научиться сначала обходиться без лишних прослоек между компом и пользователем, прослойкой, которая и так хлипка. Что не так в последних трех приведенных тобой командах?
karyzhkov@Book:~$ chmod +x /startkbd.sh chmod: невозможно получить доступ к «/startkbd.sh»: Нет такого файла или каталога
karyzhkov@Book:~$ chmod +x /home/startkbd.sh chmod: невозможно получить доступ к «/home/startkbd.sh»: Нет такого файла или каталога
startkbd.sh - этот файл у меня в домашней папке и на рабочем столе
Допустим у тебя гном3. распакуй архив куда-нибудь. Правой кнопкой мыши на startkbd.sh свойства . закладка права, разрешить исполнение . Ок. Двойной клик - запустить.
сделал но ни чего не произошло((
minakov ★★★★★ ( 14.01.13 20:02:15 )
Последнее исправление: minakov 14.01.13 20:02:53 (всего исправлений: 1)
karyzhkov@Book:~$ cd karyzhkov@Book:~$ chmod +x startkbd.sh karyzhkov@Book:~$ ./startkbd.sh working directory is /home/karyzhkov 5383 karyzhkov@Book:~$ sh startkbd.sh working directory is /home/karyzhkov 5394
но ни чего не произошло( может проще
может в ручном режиме настроить проще? нужно ввести:
Адрес(имя или IP):
А вот последние циферки, это, насколько я понял, PID процесса. Поздравляю, дальше пинай свой пульт ДУ
Здравствуй, ЛОР. Не работает acpi_call_GUI. Не могу выполнить правильно install.sh. Делал все по мануалу - marcodallas.github.io/acpi_call_GUI/ (kwheezy 1.5) Логи:
Выполнял так же и от рута.
ты как распаковал архив?
Ark > extract > /home/user/
ты как то всё в одну папку намешал
install.sh не должен быть в папке acpi_call_GUI
Тогда cd acpi_call_GUI и sudo chmod +x install.sh несовместимы. Они разве не должны находится в одном каталоге?
забей на cd там ошибка в инструкции
вот моя инструкция
sudo chmod +x install.sh
что это за фигня
Разобрался без вашей инструкции :D
ДЛя выключения видеокарты. Аналог switcheroо.
Спасибо за помощь, Няш-мяш.:3
А чем bbswitch не устроил?
А у этой вундервафли точно нет своей репы для дебиана/бубунты с java пакетом и dkms для ведра?
// и отдельным оффтопиком - какого хрена оно на яве? без явы аналога не нашлось?
На оф репах дебиана этой проги нет. bbswitch и switcheroo - вот аналоги известные мне.
Права доступа
Посмотреть права доступа на объекты можно командой ls c ключем -l («л»). Также можно добавить ключ -a, для того,чтобы были отображены скрытые объекты:
Для назначения прав используются три группы флагов, первая определяет права для владельца, вторая - права для основной группы пользователя, третья - для всех остальных пользователей в системе.
Для файлов: r - право на чтение из файла; w - разрешает запись в файл (в частности перезапись или изменение); x - позволяет исполнить файл.
Для каталогов, флаги r w x имеют несколько отличный смысл: r - позволяет читать только имена файлов в каталоге; x - позволяет иметь доступ к самим файлам и их атрибутам (но не именам); w имеет смысл только в сочетании с x, и позволяет (в дополнение к x) манипулировать с файлами в каталоге (создавать, удалять и переименовывать). w без x - не имеет никакого эффекта.
Рассмотрим таблицу, чтобы было понятнее:
OCT | BIN | Mask | Права на файл | Права на каталог |
---|---|---|---|---|
0 | 000 | - - - | отсутствие прав | отсутствие прав |
1 | 001 | - - x | права на выполнение | доступ к файлам и их атрибутам 1) |
2 | 010 | - w - | права на запись | отсутствие прав |
3 | 011 | - w x | права на запись и выполнение | все, кроме доступа к именам файлов 2) |
4 | 100 | r - - | права на чтение | только чтение имен файлов |
5 | 101 | r - x | права на чтение и выполнение | чтение имен файлов и доступ файлам и их атрибутам 3) |
6 | 110 | r w - | права на чтение и запись | только чтение имен файлов |
7 | 111 | r w x | полные права | все права |
Для администрирования часто удобнее использовать не буквенное представление прав, а цифровое, в восьмеричном представлении (оно короче). Так, например, права на файл всем и вся, соответствуют записи 777 (что аналогично символьному представлению rwxrwxrwx).
Существуют также специальные биты, такие как SUID, SGID и Sticky-бит. SUID, SGID влияют на запуск файла, а Sticky влияет на определение владельца объектов в каталоге. При их применении необходимо использовать не три восьмеричных цифры, а 4. Зачастую, в различной технической литературе права обозначаются именно 4-мя цифрами, например 0744. Многие стараются не использовать специальные биты, сетуя на безопасность (и не без основательно), но, в некоторых ситуациях без них не обойтись. Поговорим о них несколько позже.
Давайте рассмотрим пример, итак:
Для первой строки:
Следующие три символа (rwx) обозначают права для владельца файла, в данном случае полные права для пользователя allexserv. 4)
Следующие три (- - -) - определяют права для группы nogroup, в нашем примере для всех пользователей группы nogroup доступ запрещен.
Ну и последние три символа (- - -) определяют права для всех остальных пользователей, в нашем случае доступ запрещен.
Восьмеричное обозначение прав для файла pro_ubuntu.zip: 0700.
Для второй строки (это каталог, о чем свидетельствует флаг «d»), по аналогии:
Восьмеричное обозначение в этом примере: 0755.
Для полноценного просмотра каталога, необходимы права на чтение каталога и доступ к файлам, а главное к их атрибутам, т.е. минимальные разумные права на каталог - 5 (r-x). Прав 4 (r–) хватит только на просмотр имен файлов, без атрибутов, т.е. не будут известны размер файла, права доступа, владелец.
На практике для каталогов используется только три режима: 7 (rwx), 5 (r-x) и 0 (—).
Очень любопытный режим доступа к каталогу - 3 (-wx): он позволяет делать в директории все, что угодно, но не позволяет прочитать имена объектов в директории. Т.е. если вам не известны названия объектов в этом каталоге, то вы сделать с ними ничего не сможете (даже удалить по маске * т.к. маску не к чему применять - имена то недоступны).
В каталоге с режимом доступа 3 (-wx) можно создавать новые, переименовывать и удалять файлы и каталоги (если вы знаете их имя); читать, изменять, запускать файл (если достаточно на него прав, и опять же - вы знаете его имя). Можно даже менять права доступа на файлы и каталоги (если вы знаете имя). Но самое интересное, что если вы сможете перейти (по cd 5) ) в подкаталог такого каталога (а для этого вам опять нужно знать его имя), то там у вас будет «все в ожуре» (если конечно у этого подкаталога будет нормальный режим доступа).
Никакой рекурсивный поиск/удаление тоже не сможет залезть внутрь такого каталога - ему ведь нужны названия - а их из такого каталога - никак не получить.
Но не надо думать, что такой каталог полноценно заменяет крипто-контейнер (т.е. может использоваться для хранения очень секретных данных). Да, имен объектов из такого каталога никак не получить, однако если попытаться создать объект с именем, которое уже существует, то такая операция закончится неудачей (т.е. мы получим подтверждение, что такое имя уже есть). Так же можно пытаться открыть (как файл или как каталог) объект с произвольным именем, если такого имени нет, то мы получим ошибку. Безусловно имя может быть очень длинным и шансы угадать его могут быть не велики, но не надо забывать, что права доступа могут сменить как владелец каталога так root. Да и пути доступа могут сохраниться в различных логах и файлах истории.
Биты SUID, SGID и Sticky
Unix отслеживает не символьные имена владельцев и групп, а их идентификаторы (UID - для пользователей и GID для групп). Эти идентификаторы хранятся в файлах /etc/passwd и /etc/group соответственно. Символьные эквиваленты идентификаторов используются только для удобства, например, при использовании команды ls, идентификаторы заменяются соответствующими символьными обозначениями.
1000 - идентификатор (GID) дополнительной группы allexserv пользователя allexserv 8)
Если при создании пользователя основная группа не указана явно, то основной группой пользователя будет группа с тем же именем, что и имя пользователя. Например:
Что касается процессов, то с ними связано не два идентификатора, а 4-е: реальный и эффективный пользовательский (UID), а также реальный и эффективный групповой (GID). Реальные номера применяются для учета использования системных ресурсов, а эффективные для определения прав доступа к процессам. Как правило, реальные и эффективные идентификаторы совпадают. Владелец процесса может посылать ему сигналы, а также изменять приоритет.
Процесс не может явно изменить ни одного из своих четырех идентификаторов, но есть ситуации когда происходит косвенная установка новых эффективных идентификаторов процесса. Дело в том, что существуют два специальных бита: SUID (Set User ID - бит смены идентификатора пользователя) и SGID (Set Group ID - бит смены идентификатора группы). Когда пользователь или процесс запускает исполняемый файл с установленным одним из этих битов, файлу временно назначаются права его (файла) владельца или группы (в зависимости от того, какой бит задан). Таким образом, пользователь может даже запускать файлы от имени суперпользователя.
Вобщем, одним словом установка битов SUID или SGID позволит пользователям запускать исполняемые файлы от имени владельца (или группы) запускаемого файла. Например, как говорилось выше, команду chmod по умолчанию может запускать только root. Если мы установим SUID на исполняемый файл /bin/chmod, то обычный пользователь сможет использовать эту команду без использования sudo, так, что она будет выполнятся от имени пользователя root. В некоторых случаях очень удобное решение. Кстати по такому принципу работает команда passwd, c помощью которой пользователь может изменить свой пароль.
Возьмите на заметку! Если установить SGID для каталога, то все файлы созданные в нем при запуске будут принимать идентификатор группы каталога, а не группы владельца, который создал файл в этом каталоге. Аналогично SUID. Одним словом, если пользователь поместил исполняемый файл в такой каталог, запустив его, процесс запустится от имени владельца (группы) каталога, в котором лежит этот файл.
Однако, в системе FreeBSD, если скомпилировать ядро с поддержкой suiddir, а так же смонтировать раздел с этой опцией, то, все объекты создаваемые в каталоге где установлен SUID будут иметь владельца этого каталога (наследование). Реализация подобного в Linux возможна (?) на файловой системе GFS2. Данная функция считается уязвимостью.
Установить SUID и SGID можно командой chmod:
chmod 4755 koshka.pl - устанавливает на файл koshka.pl бит SUID и заменяет обычные права на 755 (rwxr-xr-x).
chmod 2755 koshka.pl - устанавливает на файл koshka.pl бит SGID и заменяет обычные права на 755 (rwxr-xr-x).
Догадайтесь, что произойдет если выполнить такую команду:
Снять установленные биты можно различными способами:
Отображение SGID и SUID:
Видно, что для файла qwert установлен SGID, о чем свидетельствует символ «s» (-rwxrwsrwx). Символ «s» может быть как строчная буква (s), так и прописная (S). Регистр символа только лишь дает дополнительную информацию об исходных установках, т.е. был ли до установки SGID установлен бит, в данном случае на выполнение (rwxrwsrwx). Если s строчная, то права на выполнение у группы этого файла были до установки SGID. Если S прописная, то группа для этого файла ранее не имела прав на выполнение до установки SGID. 9)
Еще одно важное усовершенствование касается использования sticky-бита в каталогах. 10) Каталог с установленным sticky-битом означает, что удалить файл из этого каталога может только владелец файла или суперпользователь. Другие пользователи лишаются права удалять файлы. 11) Установить sticky-бит в каталоге может только суперпользователь. Sticky-бит каталога, в отличие от sticky-бита файла, остается в каталоге до тех пор, пока владелец каталога или суперпользователь не удалит каталог явно или не применит к нему chmod. Заметьте, что владелец может удалить sticky-бит, но не может его установить.
Установить sticky-бит на каталог можно используя команду chmod:
Убрать sticky-бит на каталог можно:
Отображение sticky-бит:
Видно, что sticky-бит установлен на каталоге allex, а также на файле qwert, о чем свидетельствует символ (t). Символ «t» может быть как строчная буква (t), так и прописная (T). Строчная буква отображается в том случае, если перед установкой sticky bit произвольный пользователь уже имел право на выполнение (х), а прописная (Т) — если такого права у него не было. Конечный результат один и тот же, но регистр символа дает дополнительную информацию об исходных установках.
Итак, использование sticky позволяет реализовать, например, т.н. каталоги-помойки. Пользователи смогут писать файлы в такие каталоги, но не смогут удалять чужие файлы.
Пример с каталогом на котором установлен sticky:
Команда chmod
Права устанавливаются командой chmod. Команда chmod поддерживает установку прав как в восьмеричном представлении, так и в символьном (маска режима доступа).
Синтаксис команды прост:
Опции
Из самых полезных и часто используемых опций можно выделить одну:
-R - рекурсивное назначение прав. Т.е. назначить права всем объектам, руководствуясь регулярным выражением.
chmod -R 700 z* - Назначить полные права для владельца и исключить права для группы и всех остальных для всех объектов, которые начинаются именоваться на z, находящиеся в текущем каталоге и его подкаталогах. 6)
Права
Права можно записывать как в восьмеричном представлении так и в символьном. В восьмеричном представлении, для стандартных прав, указываются 3 восьмеричные цифры (1-я для владельца, 2-я для группы, 3-я для всех остальных. См. таблицу выше).
chmod -R 775 sobaki - установит права на каталог sobaki и на все объекты, что внутри этого каталога, включая содержимое подкаталогов (r w x r w x r - x);
chmod 700 * - установит права только для владельца на все файлы и каталоги в текущем каталоге, включая подкаталоги и их объекты (rwx - - - - - -).
Другой способ назначения прав - это использование маски режима доступа (символьное представление). Помимо прав задается еще кому мы собираемся эти права выставлять:
Для назначения прав используются три знака: минус, плюс или равно:
chmod ug=rw spisok.doc - Выставить права на чтение и запись файлу spisok.doc для владельца и группы. Обратите внимание, что если у пользователя «все остальные» были какие-либо права, они сохранятся в неизменном виде.
Использование символьного представления позволяет редактировать права файлов более гибко:
chmod u+x,g+w-x koshki.txt - Добавить владельцу файла koshki.txt права на его выполнение, пользователям группы разрешить запись и запретить выполнение и оставить права остальных пользователей без изменений;
chmod u=rwx,g+w,go-x sobaki.doc - Установить полные права для владельца файла, разрешить пользователям группы запись и запретить выполнение всем пользователям, кроме владельца файла.
Символьное назначение окажет неоценимую услугу, если требуется добавить права на объект к уже существующим правам.
Массовое назначение прав
Иногда, бывает, нужно массово установить права на определенный тип объектов, например, только на каталоги или только на файлы. Простое использование опции -R (рекурсия) здесь не поможет т.к. chmod будет проходить по всем объектам удовлетворяющим маске, что иногда вовсе не то, что нужно.
Итак, чтобы массово установить права на определенный тип объектов можно использовать один из вариантов (вообще, их очень много):
где -type d - каталоги, -type f - файлы. В данном примере chmod установит, начиная от текущего каталога 7) , права на все каталоги (включая подкаталоги) разрешения 770 (rwx rwx- - -) при этом не трогая права на другие объекты.
Более длинный вариант аналогичной операции:
где -type d - каталоги, -type f - файлы. В данном варианте chmod установит разрешения 775 на все файлы включая файлы в подкаталогах начиная от текущего.
Читайте также: