Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Какие права файл получает при запуске?

Скачал бинарники нового обновления Sublime text 3. Они имеют владельца root с правами на запуск для всех. Если я запущу бинарник из-под обычного пользователя, какие права получит бинарник? И как правильнее устанавливать такие бинарные сборки под никсами?
Ответ:
смотря что имеется ввиду под выражением "права":
есть "старые и добрые" uid, gid, euid, egid, и т.п. - все они стандартизировано вычислятся в зависимости от разрешений файловой системы (filesystem permissions) и др. подобных традиционных настроек.
но если установлена и включена система защиты типа SELinux/AppArmor (или др. система типа RSBAC и т.п.), то вероятны нежелаемые "глюки", не зависящие от традиционных параметров безопасности.
напр., 
  • редактор не может просматривать файлы находящиеся вне какого-то каталога, несмотря на то, что у пользователя права просмотра "вроде-бы" и есть.
  • самообновление/скачивание плагинов/расширений - не работает
  • и т.п.



Вопрос: Парадокс в правах на файл или нет ?

Добрый день!

Такая ситуация:

файл style.css находится в директории css.

Права файла:
---------- 1 myuser www-data 3709 May 30 12:52 style.css

Права директории:
drwx------ 2 myuser www-data 4096 May 30 12:52 css


Правильно ли я понимаю, что если у файла style.css прав нет вообще, то никто кроме root ничего не может с ним сделать ни при каких условиях ?

Однако по фтп от юзера myuser я могу спокойно редактировать/заменять этот файл style.css

Это какой-то парадокс или как это можно объяснить ?
Ответ:
Сообщение от Dmitry
суровая дыра в безопасности. чаще всего попадались описания настроек фтп-сервера, работающего от специально созданного для него юзера
В том же vsftpd, например, основной процесс от рута. Когда подключаются юзеры - запускаются еще процессы - от специального пользователя ftp, от nobody, или от того, кто залогинился, если это системный юзер. Все зависит от настроек.
Как в proftpd уже не помню, в tftpd - от рута.
Выше я написал о руте, поскольку ему легче всего следить за правами.
Вопрос: Архиватор 7z — права распакованных каталогов

Всем привет!
Ubuntu 16.04.
Через sftp заливаю (от имени пользователя user1) файлы и каталоги.
Права файлов получаются: -rw-rw-r--
Права каталогов получаются: drwxrwxr-x
Это понятно, ибо значение umask для пользователя user1 равно 0002.
Затем установливаю архиватор 7z:
Bash
1
apt install p7zip-full
Через sftp заливаю (от имени пользователя user1) файл архива arhiv.7z, распаковываю (тоже от имени user1):
Bash
1
7z x arhiv.7z
Права распакованных файлов при этом получаются: -rw-rw-r--, как и в случае обычной заливки,
а вот права распакованных каталогов почему-то получаются: drwx------.
Вопрос 1: Почему при распаковке 7z права на каталоги получаются такие странные?
Вопрос 2: Как сделать, чтобы права на каталоги получались как при обычной заливке?


P.S. Значение umask для рута равно 0022.
Ответ: Архив ZIP разархивировал обычным unzip-ом вообще без опций, и каталоги стали с нормальными правами.
Видимо, только у архиватора 7z нет такой возможности, а жаль.
Спасибо за подсказку!
Вопрос: Создание пользователя в терминале и добавление ему прав

Здравсвуйте.
Поделитесь опытом, по созданию в терминале пользователей и назначение им прав.
Кто может написать код по этому вопросу:

Доступ пользователя на чтение и запись, доступ группы на чтение и выполнение, доступ только на чтение для остальных

P.s создал пользвователя
Bash
1
 adduser user1
Ответ: Вообщем с тяжелым трудом справился сам) спасибо тем кто мне помог т.е мне самому)


1. Создайте пользователя user1.
Для создания нового пользователя используем команду под правами суперпользователя «adduser user1» в терминале:
2. Войдите от имени созданного пользователя, используя виртуальный терминал.
Для входа под пользователем user1 можно вызвать терминал используются комбинации клавиш <Ctrl>+<Alt>+<F1>указать логин и пароль или воспользоваться командой sudo –su user1, где так же потребуется ввод пароля.

3. Комбинацией клавиш <Ctrl>+<Alt>+<F7> перейдём к графическому терминалу.
4. Проверьте текущие права доступа к файлу.
Используем пакетный файл с названием «cp.sh», и расположенный в: /home/black/KP.
Для просмотра прав файла используем команду: «ls cp.sh –l»:
Установлены следующие права:
Владелец – r - чтение, w - запись, x - выполнение
Группа – r - чтение, w - запись, x - выполнение
Прочие – r – чтение.

5. Запускаем файл cp.sh от имени пользователя user1.
Из-за того, что для остальных пользователей доступно только чтение, то файл запускается, но не может вносить изменения. Поэтому получаем отказ в доступе.

6. От имени пользователя black назначьте права доступа к файлу -
Указываем команду: chmod u=rw, g=rx, o=r cp.sh

7. Попытайтесь запустить указанный файл от имени пользователя user1. Объясните полученный результат.
Отказано в доступе т.к доступ остальным только на чтение.

8. Измените пользователя user1, переместив его в ту же группу, к которой принадлежит black. Для редактирования информации о пользователях используем команду usermod с правами суперпользователя. В качестве параметров укажем –g (первичная группа пользователя), название группы и имя пользователя:

9. Завершили сеанс пользователя user1 (команда logout или exit - для графического терминала) и снова вошли в систему от его имени.

10. Снова запускаем пакетный файл cp.sh.
Объясните полученный результат.

После перемещения пользователя user1 в группу black, пакетный файл cp.sh открылся на чтение и выполнение т.к доступ для группы rx.

11. Удалите пользователя user1.
Для того, чтобы удалить пользователя используем команду userdel с правами суперпользователя и указанием имени удаляемого пользователя:

Доступ пользователя на чтение и запись, доступ группы на чтение и выполнение, доступ только на чтение для остальных
Абсолютный вид: chmod 00654 cp.sh
Символьный вид: chmod u=rw,g=rx,o=r cp.sh
Вопрос: Как сохранить все права при копировании коммандой rsync на cygwin ?

Пользуюсь windows, но периодически нужно делать бэкапы большой по размеру директории. Я делаю это так:

1) Загружаюсь с флешки Linux
2)
Bash
1
rsync -avP --size-only --delete /media/диск1/откуда /media/диск2/куда
Но мне надоело это делать (загружаться с флешки). Хочу делать тоже самое из под windows. Скачал cygwin пакет rsync под windows. И далее делаю так:
1) Запускаю терминал cygwin
2)
Bash
1
rsync -avP --size-only --delete /cygdrive/диск1/откуда /cygdrive/диск2/куда
С виду это работает. Действительно, происходит копирование отличающихся файлов. Но, при таком способе rsync (из под Windows) портятся права доступа к файлам, в то время как при использовании rsync с флешки Linux все нормально и права доступа остаются как были. Как можно в месте назначении сохранять оригинальные права файлов и папок при rsync windows?

P.S. Мне нужен именно rsync или его аналоги, потому что размер папок очень большой, в то время как изменяются случайным образом небольшие обьемы данных. И простое копирование всей очень большой папки не подходит, потому что это занимает много времени, в то время как rsync копирует только изменения, и это быстро. Причем использование других програм не желательно. Утилитой rsync я пользуюсь уже несколько лет и доверяю ей.
Ответ:
Сообщение от gng
Пробовали и acl и noacl?
Перемонтировал с noacl, вроде стало нормально, спасибо. Добавил опцию noacl при монтировании по умолчанию:
Bash
1
2
3
4
5
6
7
8
# /etc/fstab
#
#    This file is read once by the first process in a Cygwin process tree.
#    To pick up changes, restart all Cygwin processes.  For a description
#    see [url]https://cygwin.com/cygwin-ug-net/using.html#mount-table[/url]
 
# This is default anyway:
none /cygdrive cygdrive binary,noacl,posix=0,user 0 0
Вопрос: Debian&Apache2 Непонятки с правами на файлы

Есть сайт на php, поднимался на Debian etch. Решил переустановить систему, поставил свежий Debian wheezy ( 8.0 ), установил Apache2 (2.4.12-2), libapache2-mod-php5 (5.6.7+dfsg-1) и тут появились непонятные глюки, в админке сайта в меню аплоада не отображаются загруженные файлы.
Проблема вроде ясна, ковыряй права на структуру сайта, но есть один единственный " НО " :

1. Делаю chmod -R 777 ./* не отображаются файлы в админке
2. Ставлю права массовым выделением в midnight commander - появляется последний выделенный файл
3. Делаю снова chmod -R 777 ./* файлы исчезают из списка
4. Делаю chmod указывая конкретные файлы - файлы появляются
5. в коммандере открываю права на файл и ничего не изменяя выхожу - файл на который смотрелись права появился в списке., а сделаю опять chmod на все файлы, они снова исчезнут.

Можно было бы грешить на apache, на php или php модуль для апача, но никак не улавливаю связи с простым просмотром прав через коммандер, как только зайду в редактирование прав, при этом повторюсь ничего не меняя, то файл появляется.

Кто нибудь сталкивался с чем нибудь подобным?
Ответ: Есть сайт на php, поднимался на Debian etch. Решил переустановить систему, поставил свежий Debian wheezy ( 8.0 ), установил Apache2 (2.4.12-2), libapache2-mod-php5 (5.6.7+dfsg-1) и тут появились непонятные глюки, в админке сайта в меню аплоада не отображаются загруженные файлы.
Проблема вроде ясна, ковыряй права на структуру сайта, но есть один единственный " НО " :

1. Делаю chmod -R 777 ./* не отображаются файлы в админке
2. Ставлю права массовым выделением в midnight commander - появляется последний выделенный файл
3. Делаю снова chmod -R 777 ./* файлы исчезают из списка
4. Делаю chmod указывая конкретные файлы - файлы появляются
5. в коммандере открываю права на файл и ничего не изменяя выхожу - файл на который смотрелись права появился в списке., а сделаю опять chmod на все файлы, они снова исчезнут.

Можно было бы грешить на apache, на php или php модуль для апача, но никак не улавливаю связи с простым просмотром прав через коммандер, как только зайду в редактирование прав, при этом повторюсь ничего не меняя, то файл появляется.

Кто нибудь сталкивался с чем нибудь подобным?
Вопрос: Получить доступ к системным файлам

Как получить полный доступ к всем файлам компьютера? Зашел в папку /var/www/ там есть папку html, я не могу её удать, или вырезать, в чем проблема?
Ответ: Начните с основ:


Поскольку Linux — система многопользовательская, вопрос об организации разграничения доступа к файлам и каталогам является одним из существенных вопросов, которые должна решать операционная система. Механизмы разграничения доступа, разработанные для системы UNIX в 70-х годах (возможно, впрочем, они предлагались кем-то и раньше), очень просты, но они оказались настолько эффективными, что просуществовали уже более 30 лет и по сей день успешно выполняют стоящие перед ними задачи.

В основе механизмов разграничения доступа лежат имена пользователей и имена групп пользователей. Вы уже знаете, что в Linux каждый пользователь имеет уникальное имя, под которым он входит в систему (логируется). Кроме того, в системе создается некоторое число групп пользователей, причем каждый пользователь может быть включен в одну или несколько групп. Создает и удаляет группы суперпользователь, он же может изменять состав участников той или иной группы. Члены разных групп могут иметь разные права по доступу к файлам, например, группа администраторов может иметь больше прав, чем группа программистов.

В индексном дескрипторе каждого файла записаны имя так называемого владельца файла и группы, которая имеет права на этот файл. Первоначально, при создании файла его владельцем объявляется тот пользователь, который этот файл создал. Точнее — тот пользователь, от чьего имени запущен процесс, создающий файл. Группа тоже назначается при создании файла — по идентификатору группы процесса, создающего файл. Владельца и группу файла можно поменять в ходе дальнейшей работы с помощью команд chown и chgrp


В любой Linux системе обязательно есть один привилегированный пользователь — root. Этот пользователь имеет права на выполнение любых действий, удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны, все остальные пользователи системы обычно не имеют большинства необходимых прав, например, прав на установку программ, поскольку это является административной операцией, права на которую есть только у root. Ещё одной распространённой операцией, доступной только суперпользователю, является копирование и изменение файлов в системных папках, куда обычный пользователь доступа не имеет.

Раньше данная проблема решалась достаточно просто: при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду su. Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе, такая схема работает неплохо, однако у неё есть много существенных недостатков, в частности, невозможно никак (точнее, очень сложно) ограничивать административные привилегии только определённым кругом задач.

Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита sudo.

В Ubuntu по умолчанию root аккаунт вообще отключён, т.е. вы никаким способом не сможете попасть под root, не включив его. root именно что отключён, т.е. он присутствует в системе, под него всего лишь нельзя зайти. Если вы хотите вернуть возможность использовать root, смотрите ниже пункт о включении root аккаунта.

Что такое sudo
sudo — это утилита, предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию, при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий, что и root. Однако такое поведение sudo легко изменить, об этом см. ниже в пункте про настройку sudo.
Вопрос: Восстановление прежних прав доступа

Здравствуйте. По запарке выполнил каманду:
Код Code
1
 sudo chmod -R 777 /*
Теперь не знаю, что делать... По рутом ничего не могу сделать. Пытаюсь выполнить какую-нибудь команду по рутом, получаю:
sudo: /usr/bin/sudo должен принадлежать пользователю с uid 0 и иметь бит setuid
Пытаюсь изменить права на данный каталог:
chown: изменение владельца «/usr/bin/sudo»: Операция не позволена
Пытаюсь авторизовать под root'ом:
$ su
setgid: Операция не позволена
Можно ли что-нибудь сделать, и как все вернуть в исходное состояние?
Ответ: Загрузиться с какого-нибудь liveCD или liveUSB и оттуда менять права. Но какие именно были права у каждого файла - это уже потерянная информация. При большом желании можно дать права на запуск файлам в /bin, /sbin, /usr/bin и /usr/sbin (возможно, ещё в lib)... после чего операционка должна начать работать. Потом можно будет установить новый такой же дистрибутив на виртуалку и написать софт, который прочитает все права с той свежей ОС и сохранит в файл. А потом по этому файлу выставить права на вашей ОС. Но придётся потратить немного времени. Кроме того, у вас могут быть установлены другие программы и файлы, которых не будет на свежеустановленной ОС и эти файлы останутся со "сломанными" правами.
Вопрос: Права доступа на директории при чтении, изменении и удалении файлов

Всем привет , помогите разобраться с правами доступа.
У нас есть 5 директорий и 5 файлов , нужно удалить 3 и 5 директоии вместе с файлами , файл из второй директории записать в конец файла из первой , а первую первую директорию объединить с четвертой .



насколько я понимаю для всех подходит rwx, но нужно написать минимальные а знаний на это не хватает(
Ответ: Вам следует помнить, что директории — это суть файлы, со списком содержимого. При перемещении файла из одной директории в другую физического перемещения данных файла не происходит — только изменяются два списка: дир_источник и дир_получатель.
Т.е для того чтобы «файл из второй директории записать в конец файла из первой» необходимо для 1дир иметь права на запись, обеим права на вход, 2файл право на чтение, 1файл право на запись.
Вопрос: Права на файлы

Здравствуйте.

Изучаю linux (ubuntu). Читал про права на файлы и в общем разобрался что к чему.
Но не могу понять одну вещь.
Во вложении скрин (ssh). Там у index.php например нет прав на исполнение. Но apache его запускает и выполняет.
Не могу разобраться почему.

Спасибо.
Ответ:
Сообщение от furyon
а на запуск надо правами обладать
На запуск чего? Интепретатора php? Если ты права на конкретно интерпретатор php не менял, то почему нужны права для его запуска? У тебя же есть права для запуска ls -l. Вот и php так же запустится, как ls. Потому что это такая же обычная программа как ls и доступная на запуск всем. Ну а остальное контролируется уже правами на конертный файл. Если чтение доступно, то программа-интерпретатор его прочитает и выполнит. Как в твоем случае.

Добавлено через 1 минуту
Сообщение от furyon
Все кажется понял, спасибо. Точно он же просто читает. Спасибо.
Nice!