Apakah maksud Anda Anda ingin mengubah izin untuk semua file di direktori? Apakah Anda ingin ini masuk ke direktori bersarang juga? Apakah Anda ingin mengubah izin direktori itu sendiri, atau hanya file di dalamnya? Terakhir, apakah Anda mencoba mencari situs ini terlebih dahulu sebelum memposting pertanyaan Anda?
Eter
Jawaban:
21
Untuk mengubah izin pada entri file atau direktori secara non-rekursif, gunakan chmodperintah (lihat man chmod untuk membaca lebih lanjut tentang opsi spesifiknya):
chmod +x dir # Set a directory to be listable
chmod +x file # Set a file to be executable
Untuk mengubah pemilik file / direktori secara rekursif (memengaruhi semua keturunan):
chown -R username dir # Recursively set user
chown -R username:groupname dir # Recursively set user and group
Untuk mengubah bit izin dari semua file dalam direktori, secara rekursif:
find dir -type f -exec chmod 644 {} ';' # make all files rw-r-r-
Untuk mengubah bit izin dari semua direktori:
find dir -type d -exec chmod 755 {} ';' # make all directories rwxr-xr-x
Akan lebih baik jika Anda bisa melakukan ini:
chmod -R 755 dir
Namun, ini memiliki masalah. Itu memperlakukan file dan direktori yang sama. Perintah di atas membuat direktori dapat didaftar dan dibaca oleh semua pengguna, tetapi juga membuat semua file dapat dieksekusi, yang biasanya tidak ingin Anda lakukan.
Jika kami mengubahnya 644, kami mendapatkan masalah lain:
Masalahnya adalah bahwa 644mengeluarkan bit daftar direktori, dan efek samping ini mencegah traversal lebih lanjut dari pohon file. Anda dapat mengatasi masalah ini dengan menggunakan sudo, tetapi Anda masih berakhir dengan direktori yang sama sekali tidak berguna bagi pengguna non-root.
Intinya adalah, chmod -Rberfungsi dengan baik dalam beberapa kasus (misalnya chmod -R g-r), tetapi tidak dalam kasus di mana Anda ingin mengacaukan -xbit, karena beroperasi pada file dan direktori tanpa pandang bulu.
Mengapa Anda berasumsi bahwa ia ingin mengatur 644atau bahwa ia menetapkan -xpada direktori sama sekali? Pertanyaannya hanya menetapkan bahwa ia ingin mengubah izin, bukan untuk apa yang khusus.
Reese Moore
@Reese Moore: Anda benar. Penanya bahkan tidak mengatakan apa-apa tentang mengubah izin secara rekursif.
Joey Adams 8-10
1
Anda biasanya ingin menggunakan + dan - mode simbolis untuk itu; yaitu,chmod -R go=u,go-w /dir
dannysauer
6
chmodmemiliki -Rbendera yang berarti untuk mengubah izin pada file dan direktori secara rekursif.
Anda dapat menggunakan modal 'X' untuk melakukan hal yang benar untuk folder: 'X' = "jalankan / cari hanya jika file tersebut adalah direktori atau sudah memiliki izin eksekusi untuk beberapa pengguna"
Jadi, misalnya: chmod -R ug = rwX, o-rwx.
Akan membuat seluruh pohon dapat diakses oleh pemilik dan grup setiap file, dan tidak dapat diakses oleh orang lain. Setiap file yang sudah dapat dieksekusi masih dapat dieksekusi setelah itu, dan semua direktori akan memiliki 'x' untuk pengguna dan grup dan bukan untuk yang lain.
Coba chmod -R 444 somedirpada direktori dengan file di dalamnya. Anda mendapatkan Permission deniedkarena flag -x dikeluarkan dari direktori, dan itu perlu untuk terus membaca direktori.
Joey Adams 8-10
1
Tambahan yang berguna untuk ini adalah sintaks X = Y. Misalnya Anda dapat mengatur izin grup ke izin pengguna menggunakan chmod -R g = u dir untuk mengatur grup dan pengguna yang setara. Ini berfungsi di sekitar hal-hal seperti dir yang perlu dieksekusi sementara file "biasa" tidak.
Paul Rubel
3
chmod -R <file permission> *
Dari halaman manual dari chmod:
-R, --recursive
change files and directories recursively
Gunakan chmoddengan -Rsakelar untuk banyak arah yang memiliki struktur sub direktori yang memiliki jutaan file di dalamnya dan Anda ingin mengubah izin file dari file-file ini secara bersamaan dalam satu kesempatan.
Izin file mungkin untuk misalnya. 777, 755, 644 dll.
Jawaban:
Untuk mengubah izin pada entri file atau direktori secara non-rekursif, gunakan
chmod
perintah (lihat man chmod untuk membaca lebih lanjut tentang opsi spesifiknya):Untuk mengubah pemilik file / direktori secara rekursif (memengaruhi semua keturunan):
Untuk mengubah bit izin dari semua file dalam direktori, secara rekursif:
Untuk mengubah bit izin dari semua direktori:
Akan lebih baik jika Anda bisa melakukan ini:
Namun, ini memiliki masalah. Itu memperlakukan file dan direktori yang sama. Perintah di atas membuat direktori dapat didaftar dan dibaca oleh semua pengguna, tetapi juga membuat semua file dapat dieksekusi, yang biasanya tidak ingin Anda lakukan.
Jika kami mengubahnya
644
, kami mendapatkan masalah lain:Masalahnya adalah bahwa
644
mengeluarkan bit daftar direktori, dan efek samping ini mencegah traversal lebih lanjut dari pohon file. Anda dapat mengatasi masalah ini dengan menggunakansudo
, tetapi Anda masih berakhir dengan direktori yang sama sekali tidak berguna bagi pengguna non-root.Intinya adalah,
chmod -R
berfungsi dengan baik dalam beberapa kasus (misalnyachmod -R g-r
), tetapi tidak dalam kasus di mana Anda ingin mengacaukan-x
bit, karena beroperasi pada file dan direktori tanpa pandang bulu.sumber
644
atau bahwa ia menetapkan-x
pada direktori sama sekali? Pertanyaannya hanya menetapkan bahwa ia ingin mengubah izin, bukan untuk apa yang khusus.chmod -R go=u,go-w /dir
chmod
memiliki-R
bendera yang berarti untuk mengubah izin pada file dan direktori secara rekursif.Anda dapat menggunakan modal 'X' untuk melakukan hal yang benar untuk folder: 'X' = "jalankan / cari hanya jika file tersebut adalah direktori atau sudah memiliki izin eksekusi untuk beberapa pengguna"
Jadi, misalnya: chmod -R ug = rwX, o-rwx.
Akan membuat seluruh pohon dapat diakses oleh pemilik dan grup setiap file, dan tidak dapat diakses oleh orang lain. Setiap file yang sudah dapat dieksekusi masih dapat dieksekusi setelah itu, dan semua direktori akan memiliki 'x' untuk pengguna dan grup dan bukan untuk yang lain.
sumber
chmod -R 444 somedir
pada direktori dengan file di dalamnya. Anda mendapatkanPermission denied
karena flag -x dikeluarkan dari direktori, dan itu perlu untuk terus membaca direktori.Dari halaman manual dari
chmod
:Gunakan
chmod
dengan-R
sakelar untuk banyak arah yang memiliki struktur sub direktori yang memiliki jutaan file di dalamnya dan Anda ingin mengubah izin file dari file-file ini secara bersamaan dalam satu kesempatan.Izin file mungkin untuk misalnya. 777, 755, 644 dll.
sumber