Izin Ditolak Untuk Layanan di bawah Akun Administrator Lokal

5

Saya memiliki layanan yang harus menyalin beberapa file melalui jaringan, layanan ini berjalan di bawah salah satu akun administrator lokal.

Masuk sebagai administrator saya dapat secara manual menyalin file dari jaringan ke folder tertentu di bawah Program Files, tetapi layanan ada dengan pengecualian PermissionDenied untuk MENULIS file. Saya juga yakin bahwa file tidak dikunci sebelum penulisan.

Kesalahannya adalah sebagai berikut:

Akses ke jalur "... / SomeAssembly.dll" ditolak.

Mengapa layanan memberi saya kesalahan seperti itu dan bagaimana saya bisa memperbaikinya? (Saya juga mengembangkan layanan, sehingga perubahan pada perakitan bisa di atas meja).


Memperbarui

Saya juga mencoba menjalankannya di bawah Systemtetapi tidak dapat membaca file di jaringan (tidak tahu mengapa) LocalServicedan NetworkServiceakun AFAIK tidak memiliki cukup hak istimewa untuk membuat perubahan pada ProgramFiles ... apakah mereka?


Perbarui 2

Alasan mengapa saya tidak dapat menggunakan Systemadalah karena akun itu tidak memiliki akses ke sumber daya jaringan dengan desain, hal yang sama terjadi karena NETWORK SERVICEyang tidak memiliki akses ke sumber daya lokal. Masalah dengan akun administrator tampaknya adalah bahwa Windows memblokir operasi file-copy ketika itu dilakukan oleh layanan.

Ada ide ????

PedroC88
sumber

Jawaban:

1

Yah pertama saya akan memeriksa untuk melihat apakah ada file yang ditandai sebagai "Read-Only" seperti yang saya lihat atribut ini kadang-kadang akan menggantikan izin NTFS. Saya telah melihat kasus di mana Anda dapat menyalin file di gui, setelah mengklik ya ke prompt "apakah Anda yakin?", Tetapi setiap upaya untuk menggunakan program untuk menulis data gagal segera, tidak ada permintaan yang diberikan.

Saya juga akan memastikan bahwa layanan, dan dan layanan terkait benar-benar berjalan di bawah akun yang Anda pikir. Saya telah melihat beberapa kasus di mana layanan A akan memanggil layanan B untuk melakukan beberapa tugas kemudian menyerahkan hasilnya kembali ke Layanan A untuk menyelesaikan tugas. Dan jika hanya Layanan An yang menggunakan akun dengan izin yang tepat maka upaya tersebut akan gagal (seolah-olah An memanggil B, ia tidak memaksanya untuk berjalan sebagai pengguna yang sama dengan yang digunakan An, jadi jika B sendiri tidak dikonfigurasi untuk gunakan pengguna yang tepat itu akan menggunakan yang default yang mungkin tidak memiliki akses ke tempat tertentu yang Anda inginkan)

Juga jika mungkin pastikan jalur apa yang digunakan sebagai jalur seperti c:\program files\SomeAssembly.dll\somefile.txtatau sesuatu seperti C:/users/don/app/SomeAssembly.dlljuga bisa memberikan kesalahan.

Kit Ramos
sumber
0

Pada akhirnya apa yang saya lakukan adalah memiliki aplikasi menyalin file dari sumber daya jauh ke folder pembatasan rendah ( Application Datajika saya ingat dengan benar) dan kemudian memanggil layanan, berjalan di bawah System, untuk menyalinnya Program Files.

Keuntungan dari pendekatan ini adalah tidak memerlukan hak administratif untuk menyalin file melalui jaringan ke drive lokal (selama Anda memiliki readizin yang tepat pada file jaringan tentu saja) dan kemudian juga mengambil keuntungan dari yang rendah pembatasan yang diberlakukan untuk Systemmenulis ke File Program.

PedroC88
sumber
-1

Bergantung pada apa yang dijalankan komputer lain, umumnya layanan berjalan di bawah akun Layanan Jaringan atau akun Sistem Lokal.

Saya akan mencobanya dulu.

surfasb
sumber
Saya pikir Anda akan membunuh layanan atau yang lain?
avirk
Anda selalu dapat mengonfigurasi akun tempat layanan ini dijalankan. Milik saya tidak berjalan di bawah keduanya, melainkan di bawah akun administrator yang dibuat oleh saya, yang saya yakin memiliki hak yang cukup untuk melakukan tugas-tugas.
PedroC88