Setara dengan chmod untuk mengubah izin file di Windows

59

Apakah ada Windows yang setara dengan Linux chmoduntuk mengubah izin file?

nhinkle
sumber

Jawaban:

25

Greg menyebutkan attrib - tetapi attrib tidak dekat dengan mana pun chmod- attribdapat mengatur atribut Read-only / Hidden dari satu file - itu tidak memberikan kontrol yang halus seperti icaclshalnya.

icaclsset / reset daftar kontrol akses, sehingga Anda dapat memberikan / menolak hak untuk SID & grup individu. Ini cukup rumit.

Inilah contoh yang saya simpan di github gist saya ; itu me-reset daftar kepemilikan dan kontrol akses untuk semua file dalam folder dan sangat berguna untuk memperbaiki mereka yang mengganggu "Anda memerlukan izin dari .. untuk melakukan tindakan ini" terutama ketika memindahkan file dari instalasi sebelumnya:

icacls * /reset /t /c /q 

Reset menggantikan yang sudah ada dengan daftar default.
/tbertindak secara rekursif pada semua file, folder & subfolder
/qtidak menampilkan pesan sukses
/cberlanjut dengan file yang tersisa bahkan dalam kesalahan terjadi.

Anda juga dapat melakukan hal-hal seperti mencadangkan ACL yang ada & menerapkannya di semua. Lihat ss64 yang menjelaskan berbagai opsi & switch dengan sangat baik.

Sathyajith Bhat
sumber
Masalahnya adalah, saya tidak bisa melakukan ini, untuk setiap file ada pesan: "Akses ditolak". Apakah tidak ada jalan lain? Pada sistem sekolah yang memblokir ini, tetapi tidak cmd?
theonlygusti
Anda memerlukan hak admin; "normal" cmdyang Anda dapatkan dengan menekan [Win] + [R] tidak memiliki ini. Untuk kebutuhan khusus seperti itu, saya memiliki pintasan "Admin shell", dengan "Jalankan sebagai administrator" (atau serupa; Saya menggunakan sistem Windows Jerman) diperiksa (dan dengan warna latar belakang merah gelap).
Tobias
Saya benar-benar menghadapi masalah dengan Izin ditolak kesalahan. Kenapa saya bisa melakukan sesuatu jika saya seorang administrator dan konsol yang saya jalankan berjalan sebagai administrator juga. Apa itu?
Čamo
13

Baik cacl , xcacls , atau icacls favorit pribadi saya mungkin akan melakukan apa yang Anda butuhkan.

Bryan
sumber
1
Saya percaya icaclshanya tersedia di Vista / 7.
Hello71
9

Ada (sayangnya) tidak bisa menjadi setara persis, karena Linux dan DOS / Windows menggunakan atribut untuk tujuan yang berbeda, dan (seperti yang dikatakan Chathuranga sebelumnya) model keamanannya berbeda:

  • Dalam sistem file Windows, ada atribut "hidden" ( H) dan "system" ( S) yang tidak memiliki padanan di Linux; di sana, file disembunyikan dengan mengawali nama dengan titik ( .).
  • Tidak ada yang setara dengan Aatribut "archive" ( ) Windows .
  • Tidak ada yang setara dengan xatribut "executable" ( ) Linux di atribut file DOS / Windows.
  • Ada adalah setara dengan Windows "direktori" ( D) atribut (tetapi tidak dapat diubah pula).
  • Dalam sistem file Linux, setiap entri dimiliki oleh tepat satu pengguna dan tepat satu grup, dan baca / tulis / eksekusi dapat diizinkan untuk masing-masing, dan untuk yang lain. ACL (seperti yang digunakan oleh Windows) bahkan lebih fleksibel, tetapi lebih rumit juga, dan sintaks baris perintah adalah PITA (tentu saja, menurut pendapat saya yang sederhana)

Atribut file DOS R(read-only) adalah atribut yang mungkin dianggap memiliki yang setara: set atribut ini kira-kira seperti watribut untuk semua yang hilang; tetapi izin untuk mengubah atribut ini tunduk pada ACL.

Mungkin keren untuk memiliki chmod/ chownsetara pada Windows, mungkin ditulis dalam beberapa bahasa scripting, yang pada gilirannya memanggil attribdan cacls(atau penerus), tetapi saya tidak memilikinya.

Tobias
sumber
Pos pertama yang bagus!
slm
Anda mengacaukan atribut dan izin file. Linux memiliki atribut file yang dapat diubah melalui chattr . Linux memiliki kontrol akses berbutir halus untuk atribut (mis. Atribut mmutable hanya dapat diatur oleh root atau CAP_LINUX_IMMUTABLEproses), sedangkan akses untuk menetapkan atribut pada Windows adalah semua atau tidak sama sekali. Ini adalah kesalahan umum dalam implementasi chmoduntuk Windows untuk menggunakan perintah ini untuk mengatur atribut file read-only. Sayangnya sistem hanya diinformasikan sebagai programmer yang mengembangkannya.
Eryk Sun
@eryksun: Menarik - Saya tidak mengetahui chattrperintah itu. Tapi Anda tidak bermaksud saya, untuk "membingungkan atribut file dan izin", kan? AFAICS, setiap kata yang saya tulis tentang atribut DOS masih benar.
Tobias
File terdiri dari banyak atribut (diperluas). Di Unix set atribut inti disimpan di inode, termasuk mode file (izin). Atribut diperluas lainnya (misalnya ACL) dapat disimpan secara eksternal. Windows tidak memiliki yang setara dengan atribut "mode" Unix. Itu juga tidak memiliki catatan inode umum untuk sistem file. Catatan MFT NTFS serupa. Dari POV-nya, atribut file Windows standar adalah atribut tunggal dari catatan file. Ini sesuai dengan atribut file Linux yang ditetapkan via chattr, kecuali Windows memiliki atribut direktori karena tidak ada inode.
Eryk Sun
Pertanyaannya menanyakan tentang "[e] quivalent dari chmod untuk mengubah izin file di Windows". Tidak ada yang setara langsung chmoddi Windows karena tidak ada yang seperti atribut "mode" file. Set atribut file Windows standar tidak ada hubungannya dengan ini. Atribut read-only bukan izin file. Pada dasarnya dikatakan bahwa file tersebut ditulis dalam batu, jadi semua upaya untuk memodifikasinya harus gagal. Atribut file "tidak berubah" Linux adalah serupa. Windows hanya menggunakan ACL untuk izin, jadi icacls.exe dan sejenisnya adalah satu-satunya perintah serupa pada subjek izin.
Eryk Sun
6
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C

Bekerja seperti pesona untuk mengubah izin pada folder untuk pengguna domain. Informasi tambahan tentang caclsdan icacls.

Orang MDT
sumber
Posting pertama yang bagus! Belum pernah mendengar tentang icacl.
slm
5

The attribperintah adalah pertandingan terdekat untuk hal-hal yang sangat mendasar (read-only, bendera arsip). Lalu ada perintah ACL (daftar kontrol akses) cacls. Last but not least, karena Windows benar-benar memenuhi persyaratan Posix, flag mirip unix memang ada. Jika Anda menginstal perangkat Cygwin, Anda akan mendapatkan chmod. (Sedikit di luar topik, karena Anda mencari yang setara dengan perintah unix, mengunduh dan menginstal Cgygwin mungkin sesuatu yang menarik untuk Anda.)

pengguna27570
sumber
2

Tidak ada yang disebut chmod di windows karena model keamanan Windows berbeda dari Linux. Anda dapat menggunakan attribperintah untuk mengubah properti objek. (Tapi mereka lebih mengarah pada properti global.)

Chathuranga Chandrasekara
sumber
2

Bagi saya, solusinya adalah menginstal Cygwin, dan menambahkan folder bin-nya ke jalur sistem. Kemudian, jika Anda menjalankan "chmod" di baris perintah, itu akan berhasil. Meskipun saya belum memverifikasi kebenarannya.

WHOIF
sumber
1
Referensi: sederhana dan terperinci
Bob