Еквівалент chmod для зміни дозволів файлів у Windows


Відповіді:


25

Грег згадує attrib - але attrib це не де-небудь близько chmod- attribможе встановлювати атрибути одного читання / приховані одного файлу - він не забезпечує дрібнодисперсні елементи управління, як icaclsце робиться.

icaclsвстановлює / скидає списки контролю доступу, тому ви можете надати / заборонити права для окремих SID та груп. Хоча це досить складно.

Ось приклад, який я зберег у своїй суті github ; він скидає список власності та контролю доступу для всіх файлів у папці і особливо корисний для виправлення набридливих "Вам потрібні дозволи від .. для виконання цієї дії", особливо під час переміщення файлів із попередньої інсталяції:

icacls * /reset /t /c /q 

Скидання замінює існуючий зі списком за замовчуванням.
/tдіє рекурсивно для всіх файлів, папок і підпапок
/q, не відображає жодних повідомлень про успіх, що
/cтриває з іншими файлами, навіть у випадку помилки.

Ви також можете робити такі речі, як резервне копіювання існуючих ACL та застосовувати їх у всіх. Погляньте на ss64, який дуже добре пояснює різні варіанти та перемикачі.


Проблема в тому, що я не можу цього зробити, для кожного файлу є повідомлення: "У доступі заборонено". Хіба це не обійтися? Про шкільну систему, яка блокує це, але не cmd?
theonlygusti

Вам потрібні права адміністратора; "нормального", cmdяке ви отримуєте, натиснувши [Win] + [R], цього не вистачає. Для таких особливих потреб у мене є ярлик "Адміністратор оболонки", з позначкою "Виконати як адміністратор" (або подібне; я в німецькій системі Windows) (і темно-червоний колір фону).
Тобіас

Я фактично зіткнувся з проблемою з дозволом, відхиленим у помилці. Чому, пекло, я можу щось зробити, якщо я адміністратор і консоль, яку я запускаю, також працює як адміністратор. Що це?
Чамо


9

Там (на жаль) не може бути точним еквівалентом, оскільки Linux і DOS / Windows використовують атрибути для різних цілей, і (як говорив Чатуранга раніше) модель безпеки інша:

  • У файлових системах Windows є атрибути "прихований" ( H) та "system" ( S), які не мають еквівалента в Linux; там файли ховаються, попередньо додавши ім'я крапкою ( .).
  • Не існує еквівалента Aатрибуту Windows "archive" ( ).
  • У xатрибутах файлу DOS / Windows немає еквівалента атрибутам Linux ( ).
  • Там є еквівалент винда «каталог» ( D) атрибут (але він не може бути змінений в будь-якому випадку).
  • У файлових системах Linux кожен запис належить точно одному користувачеві та точно одній групі, і читання / запис / виконання може бути дозволено для кожного з них та для інших. ACL (на зразок Windows) є ще більш гнучкими, але і складнішими, а синтаксис командного рядка - це PITA (на мою скромну думку, звичайно)

Атрибут файлу DOS R(лише для читання) - це той, який може вважатися еквівалентним: цей набір атрибутів приблизно такий, як wатрибут для всіх відсутні; але дозвіл на зміну цього атрибуту підпадає під дію ACL.

Це може бути здорово мати chmod/ chownеквівалент у Windows, можливо, написаний якоюсь мовою сценаріїв, яка, в свою чергу, дзвонить attribі cacls(або спадкоємці), але у мене її немає.


Гарний перший пост!
slm

Ви плутаєте атрибути та дозволи файлу. У Linux є атрибути файлів, які можна змінити через chattr . Linux має тонкодисперсний контроль доступу для атрибутів (наприклад, атрибут [i] mmutable може бути встановлений лише корінцем або CAP_LINUX_IMMUTABLEпроцесом), тоді як доступ до встановлених атрибутів у Windows є все або нічого. Поширена помилка в реалізації chmodWindows для використання цієї команди для встановлення атрибута файлу лише для читання. На жаль, системи є настільки ж поінформованими, як і програмісти, які їх розробляють.
Ерік Вс

@eryksun: Цікаво - я не знав цієї chattrкоманди. Але ви не мали на увазі мене "плутати атрибути та дозволи файлів", правда? AFAICS, кожне слово, яке я написав про атрибути DOS , все ще є правильним.
Тобіас

Файл складається з безлічі (розширених) атрибутів. У Unix основний набір атрибутів зберігається у inode, включаючи режим файлів (дозволи). Інші розширені атрибути (наприклад, ACL) можуть зберігатися зовні. У Windows немає еквівалента атрибуту "режим" Unix. Він також не має загальної записи inode для файлових систем. Запис NTFS MFT схожий. З його POV, стандартні атрибути файлів Windows - це єдиний атрибут запису файлу. Вони відповідають атрибутам файлів Linux, встановленим через chattr, за винятком того, що в Windows є атрибут каталогу, оскільки немає inode.
Ерік Вс

Питання задає питання про "[e] quivalent chmod для зміни дозволів файлів у Windows". У chmodWindows немає прямого еквівалента, оскільки немає нічого подібного до атрибуту файлу "mode". Стандартний набір атрибутів файлів Windows не має нічого спільного з цим. Атрибут лише для читання - це не дозвіл файлу. В основному це говорить, що файл записаний каменем, тому всі спроби його модифікації повинні бути невдалими. Аналогічний атрибут файлу Linux "схожий". Windows використовує лише ACL для дозволів, тому icacls.exe тощо - це єдині подібні команди, що стосуються дозволів.
Ерік Вс


5

attribКоманда ближче всього підходять для самих основних речей (тільки для читання, архів прапорів). Потім є команда ACL (список контролю доступу) cacls. І останнє, але не менш важливе, оскільки Windows насправді сумісна з Posix, прапори, схожі на unix, існують. Якщо встановити набір інструментів Cygwin, ви отримаєте chmod. (Трохи поза темою, оскільки ви шукаєте еквівалент команди Unix, завантаження та встановлення Cgygwin може бути для вас цікавим.)



2

У Windows немає нічого, що називається chmod, оскільки модель безпеки Windows відрізняється від Linux. Ви можете використовувати attribкоманду для зміни властивостей об'єктів. (Але вони більше спрямовані на глобальні властивості.)


2

Для мене вирішення проблеми полягає в тому, щоб встановити Cygwin і додати його папку bin до системного шляху. Потім, якщо запустити "chmod" в командному рядку, він буде працювати. Хоча я не перевірив її правильність.


1
Довідка: проста та детальна
Боб

0

Якщо ви зіткнулися з чимось подібним CHMOD (що є лише командою UNIX / Linux, використовуйте для зміни дозволів файлів), вам потрібно клацнути правою кнопкою миші на файл або папку, а потім перейти до властивостей, а потім у цінні папери.

Звідти ви можете змінити дозволи для папки або файлу відповідно до вас, якщо ви ввійшли як адміністратор.

Існує три типи дозволів (читати, записувати та виконувати) У Linux або UNIX ви бачите такий символ, як r для читання, w для запису та x для виконання, але у вікнах ви бачите ціле слово.

Ви також можете призначити право власності на файл іншому.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.