Что такое корректные полномочия для/tmp? Я неумышленно установил все это общественность рекурсивно

То, что файл не может быть удален, не зависит от полномочий файла, устанавливаемых на только для чтения, но на полномочиях родительского каталога.

Когда у Вас есть доступ для записи к каталогу, можно удалить файлы только для чтения в том каталоге, даже если Вы не владеете теми файлами сами (ссылка).

# file removal test
(
mkdir -p test
echo hello > test/file.txt
chmod -w test
chmod -w test/file.txt
sudo chown root:wheel test/file.txt
#sudo chflags uchg test/file.txt
ls -ld test test/file.txt
rm -fv test/file.txt
echo
chmod 700 test  # set write permission
ls -ld test test/file.txt
rm -fv test/file.txt
)

Если Вы удаляете доступ для записи к test каталог в Вашем примере выше, gnutar (на Mac OS X), не может удалить test/1.txt и жалуется:

# gnutar: ./test/1.txt: Cannot open: File exists
# gnutar: Exiting with failure status due to previous errors
# After

tartest() {
   dirperms="$1"
   mkdir -p test
   [[ -f test/1.txt ]] && chmod +w test/1.txt
   echo "Before" > test/1.txt
   gnutar -czf ./test.tgz ./test
   echo "After" > test/1.txt
   chmod -w test/1.txt
   chmod "${dirperms}" test
   gnutar -xzf ./test.tgz
   cat test/1.txt
   return 0
}

tartest 755
tartest 555

81
21.04.2018, 12:33
3 ответа

Нормальные настройки для /tmp 1777, который ls шоу как drwxrwxrwt. Это: широко открытый, за исключением того, что только владелец файла может удалить его (это что это дополнительное t разрядные средства для каталога).

Проблема с a /tmp с режимом 777 то, что другой пользователь мог удалить файл, что Вы создали и заменяете контентом их выбора.

Если Ваш /tmp tmpfs файловая система, перезагрузка восстановит все. Иначе, выполненный chmod 1777 /tmp.

Кроме того, много файлов в /tmp потребность быть частным. Однако по крайней мере один каталог критически должен быть читаемым миром: /tmp/.X11-unix, и возможно некоторые другие подобные каталоги (/tmp/.XIM-unix, и т.д.). Следующая команда должна главным образом установить вещи право:

chmod 1777 /tmp
find /tmp -mindepth 1 -name '.*-unix' -exec chmod 1777 {} + -prune -o -exec chmod go-rwx {} +

Т.е. сделайте все файлы, и частные каталоги (удалите все полномочия для группы и другого), но сделайте сокеты X11 доступными для всех. Управление доступом на этих сокетах осуществляется сервером, не полномочиями файла. Могут быть другие сокеты, которые должны быть общедоступными. Выполненный find /tmp -type s -user 0 обнаружить корневые сокеты, которые Вы, возможно, должны сделать доступным для мира. Могут быть сокеты, принадлежавшие другим пользователям системы также (например, связываться с системной шиной); исследуйте с find /tmp -type s ! -user $UID (где $UID Ваш идентификатор пользователя).

121
27.01.2020, 19:30
  • 1
    Вы могли объяснить второй chmod больше? –  Bartlomiej Lewandowski 08.04.2013, 11:38
  • 2
    @BartlomiejLewandowski go-rwx: никакие полномочия для группы и других. Это устанавливает полномочия на rwx------ (за исключением того, что файлы, которые были созданы начиная с chmod может закончиться с меньшим количеством полномочий, например. rw-------). Другими словами, файлы будут доступны только их владельцем. /tmp/.[!.]* должен включать точечные файлы, которые обычно существуют в /tmp. –  Gilles 'SO- stop being evil' 08.04.2013, 12:28
  • 3
    @BartlomiejLewandowski: chmod - идут-rwx: набор "rwx" права Владельцу и Группе. r=read, w=write, x=execute (для файла) или вводят/пересекают (для каталога). 777 = rwxrwxrwx (правильная часть видна как: "набор 'r' установил 'x' набора 'w', 'w' набора 'r' набора устанавливают 'x', 'w' набора 'r' набора устанавливают 'x'", который в двоичном файле представлен как "111111111" (1 для установки, 0 для сбрасывания). И "111111111" в двоичном файле представлен в восьмеричном как "777" (восьмеричный = группы 3 битов, каждая группа, имеющая значение от 0 до 7). если бы "rwxr-xr -" это было бы "111101100", который в восьмеричном является "754" –  Olivier Dulac 08.04.2013, 14:12
  • 4
    +t упоминается как липкий бит. Это - то, что сохраняет любого кроме владельца от способности удалить файлы, даже при том, что полномочия 777 иначе. Липкий бит должен был первоначально заставить ядро оставлять обычно программы в памяти, когда они вышли так, они не должны будут быть выбраны от диска когда следующий запуск. Мы говорим дни PDP11.... –  kurtm 09.10.2013, 00:51

/tmp и /var/tmp должен был считать, пишут и выполняют права для всех; но Вы были бы обычно также добавлять липко-разрядное (o+t), чтобы препятствовать тому, чтобы пользователи удалили файлы/каталоги, принадлежащие другим пользователям. Так chmod a=rwx,o+t /tmp должен работать.

Что касается изменяющихся полномочий рекурсивно... Пока владелец/группа остается, как это для файлов и каталогов, это не должна быть так большая часть проблемы. Но Вы могли, возможно, изменить разрешение всего под /tmp (не/tmp самостоятельно) для обеспечения конфиденциальности пользователей, путем удаления rx права других и возможно группы.

Находка является хорошим способом сделать это. Как корень, сделайте:

cd /tmp
find . -type f -exec chmod u=rw,go= {} \;   # (or u=rw,g=r,o= {})
find . -type d -exec chmod u=rwx,go= {} \;  # (or u=rwx,g=rx,o= {})
11
27.01.2020, 19:30
  • 1
    ACLs В типичной настольной системе, необходимо сделать /tmp/.X11-unix/* читаемый миром также, или Вы не сможете запустить X приложений больше. –  Gilles 'SO- stop being evil' 09.04.2013, 01:51
  • 2
    chmod a=rwX,o+t /tmp -R должен сделать find волшебство. –  dhill 05.02.2016, 00:12
[root@Niflheim tmp]# ls -alF .
total 1632
drwxrwxrwt 15 root root    4096 Apr  7 04:24 ./
drwxr-xr-x 28 root root    4096 Apr  2 21:02 ../
[root@Niflheim tmp]# stat -c '%A %a %n' .
drwxrwxrwt 1777 .

От машины CentOS 5.9.

3
27.01.2020, 19:30

Теги

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