LINUX.ORG.RU

umask

 


0

2

привет не пойму, вот для директории максимальное значение на выполнение 777 и 666 для файла. хочу для юзера разрешить чтение , запись и выполнение а для остальных ничего. 777 -это права на чтение и запись и исполнения для всех и юзер и группа и все. что нужно отнять от 777 или от 666 чтобы задать лишь владельцу права на все , а остальным -нет? если мне на все тогда у меня будет 700... тогда 777-700=077 umask 077 задаст мне все, а остальным ничего. так? или вот пусть всем и мне все. тогда 777-777=0 umask 0 =права на все всем, так? то есть я отнимаю от максимальных прав, те которые бы хотел получить 777- то, что хотел бы что бы было по правам. так?

А в чем вопрос то? Ты не отнимаешь, ты выставляешь бит, отнимание — это абстракция.

mandala ★★★★ ()

Твой поток создания сложно понимать. Соберись

привет не пойму, вот для директории максимальное значение на выполнение 777 и 666 для файла.

Максимум - 3777 в обоих случаях

Дефолт - 666 для файлов и 777 для каталогов

При создании новых файлов технически происходит не вычитание из дефолта. Происходит, ЕМНИП, побитовое AND дефолта с инверсией umask

router ★★★★★ ()
Ответ на: комментарий от router

технически происходит не вычитание из дефолта.

Вычитание происходит только на уровне абстракции в трехчисловом представлении прав.

Проще представить себе трафарет для рисования фломастером — это umask. Для файла трафарет на 666

000 000 000 

Среда проводит фломастером про трафарету (нули «дырки», единицы на трафарете «заклейки»; на бумаге нули — чисто, единица — нарисованный кружочек) и на бумаге остаются права файла:

111 111 111

Для 600

000 111 111

превращаются в

111 000 000

Информатика уровня старшей группы детского сада, ага.

mandala ★★★★ ()
Последнее исправление: mandala (всего исправлений: 1)

Автор, введите в поиск «побитовая конъюнкция» и всё должно проясниться, удачи!

backbone ★★★★★ ()
Ответ на: комментарий от mandala

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

linuxpc ()
Ответ на: комментарий от mandala

не поняли вы видомо мою проблему chmod , чтобы задать права на исполение чтение и запись владельцу в двоичной системе нужно записать так: 111 000 000 владелец может все, остальные ничего. или chmod 700 если я выставлю по маске umask 700, то все будет до наоборот. я и спрашиваю, что нужно вычесть и из чего, чтобы получить тот результат, который я пропишу в umask? то есть для директории я из 777 вычитаю, чтобы выщитать значение, те права, которые хотел бы , чтобы были заданы. то есть я хочу дать права для группы на чтение и запись и выполнение , а для всех остальных-ничего. это будет в chmod так: 070 теперь, чтобы рассчитать для umask нужно сделать так 777-070=707 umask 707 будет значить всем запрещено , группа может писать, читать и исполнять. так?

linuxpc ()
Ответ на: комментарий от linuxpc

я так понимаю, если три знака — это основные для rwx, а если четыре, то первый — дополнительный для user-bit, group-bit, sticky bit, или чего-то из них. если б все 3 из дополнительных использовались, то первая цифра тоже было бы 7, но router, говорит, что для первой максимум 3. не знаю, надо у него спросить про дополнительную

teod0r ★★★★★ ()
Ответ на: комментарий от linuxpc

Чтобы понять что из чего вычитать, нужно в первую очередь понять откуда берется абстракция (777, 654 и т.п.), т.к. на уровне оболочки права хранятся в битовой маске. Это мы тебе тут и пытаемся объяснить.

mandala ★★★★ ()
Ответ на: комментарий от mandala

мне стыдно, но я должен признать, что это мне непосилам. мне на пальцах только можно растолкавать. то что вы говорите выше моего понимания сори.

linuxpc ()
Ответ на: комментарий от linuxpc

Ну пример трафарета с дырками я тебе привел. Дальше просто выясни откуда берутся цифры, т.е. как из маски 'rwx' получается цифра '6' и т.д. — станет намного понятнее.

mandala ★★★★ ()
Ответ на: комментарий от mandala

не, вы говорили о чем то более сложном. откуда берется цифра 6 или 4 и 7, я вроде понимаю. 7 это чтение+запись+ выполнение 2+1+4. 4 это чтение.... 1 -это выполнение. 6= чтение запись 4+2. 5 это чтение и исполнение. вы наверное хотели, чтобы я задался вопросом, почему именно такие цифры, почему например 1 выполнение, а не 0. ну могли же они сделать вместо 1 другую любую цифру. видимо за этим что-то стоит, но что я не понимаю. ну было бы вместо 777 например 999, какая разница для пользователя? он бы принял все, что придумали бы создатели языка bash. видимо за этим стоит что-то что натолкнуло создателей взять именно эти цифры.

linuxpc ()
Ответ на: комментарий от linuxpc

видимо за этим стоит что-то что натолкнуло создателей взять именно эти цифры.

Первые юниксы были на платформе DEC. Там удобнее всего использовать 8-ричное представление чисел. Количество бит было 16, туда же надо было уместить вот это всё:

#define __S_IFDIR       0040000 /* Directory.  */
#define __S_IFCHR       0020000 /* Character device.  */
#define __S_IFBLK       0060000 /* Block device.  */
#define __S_IFREG       0100000 /* Regular file.  */
#define __S_IFIFO       0010000 /* FIFO.  */
#define __S_IFLNK       0120000 /* Symbolic link.  */
#define __S_IFSOCK      0140000 /* Socket.  */
#define __S_ISUID       04000   /* Set user ID on execution.  */
#define __S_ISGID       02000   /* Set group ID on execution.  */
#define __S_ISVTX       01000   /* Save swapped text after use (sticky).  */
#define __S_IREAD       0400    /* Read by owner.  */
#define __S_IWRITE      0200    /* Write by owner.  */
#define __S_IEXEC       0100    /* Execute by owner.  */
И т д
vodz ★★★★★ ()
Ответ на: комментарий от linuxpc

почему 1 - это выполнение, а 0 нет - это просто. Так принято что ноль - это false(ложь), 1 - true (на самом деле любое не нулевое значение - иcтина). Пришло все это из логики электроники, где существует такое понятие, как уровень нуля (опорное напряжение) и порог срабатывания (уровень логической единицы)

Silerus ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.