{"id":21260370,"url":"https://github.com/nlm/chperms","last_synced_at":"2025-07-01T08:33:22.125Z","repository":{"id":9548309,"uuid":"11454805","full_name":"nlm/chperms","owner":"nlm","description":"Massively change permissions on a unix tree","archived":false,"fork":false,"pushed_at":"2013-07-16T17:06:53.000Z","size":116,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-15T06:44:24.530Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nlm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-07-16T16:50:08.000Z","updated_at":"2014-09-09T12:45:46.000Z","dependencies_parsed_at":"2022-09-22T17:31:43.446Z","dependency_job_id":null,"html_url":"https://github.com/nlm/chperms","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nlm/chperms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlm%2Fchperms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlm%2Fchperms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlm%2Fchperms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlm%2Fchperms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nlm","download_url":"https://codeload.github.com/nlm/chperms/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nlm%2Fchperms/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259495101,"owners_count":22866622,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-21T04:18:17.485Z","updated_at":"2025-06-12T15:39:04.219Z","avatar_url":"https://github.com/nlm.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"chperms\n=======\n\nMassively change file and directory owner and modes\n\nSYNOPSIS\n--------\n\n    chperms [OPTIONS] \u003cRULE FILE\u003e \u003cDIR [DIR ..]\u003e\n\nDESCRIPTION\n-----------\n\nThis tool changes owner/group and modes in a directory tree, according to a rule file.\n\nOPTIONS\n-------\n\n       -h --help               show the help\n\n       -v --verbose            be verbose (can be repeated)\n\n       -n --dryrun             tell what would have been done,\n                               but doesn't actually do anything\n\nRULES FILE SYNTAX\n-----------------\n\nA rules file describes the owner, group, and modes of file and directories. It is composed of multiple line, each describing a rule.  A rule begins by a filename or fnmatch()-compatible pattern, and is followed by zero or more rule specs. A rule spec is of the form \u003ctype\u003e:\u003carg\u003e. The different types are :\n\n- User specifier (u). Takes a valid system user name as argument. Tells who will be the owner of the file or directory.\n\n- Group specifier (g). Takes a valid system group name as argument. Tells who will be the group of the file or directory.\n\n- File mode specifier (f). Takes a valid mode as argument (ex: 644). Tells which modes should be applied to matching files.\n\n- Directory mode specifier (d). Takes a valid mode as argument (ex: 755). Tells which modes should be applied to matching directories.\n\nTo simplify the syntax, you can begin a line with one or more TAB characters (\\t).  The line will be considered as a subdir of the last described directory.  A line must not have more than 1 more TAB than the previous one.\n\nEXAMPLES\n--------\n\nThe following line tells that everyting under the chosen directory tree will have 'root' as owned, 'root' as group, that files will be set at mode 644 and directories at mode 755 :\n\n    * f:644 d:755 u:root g:root\n\nThe following line tells that all files under the 'bin' subdirectory and with the '.sh' extension will have their mode set to 755.  (All other files will inherit from the less-specific matching rules, if any).\n\n    bin/*.sh f:755\n\nThe following line tells that the 'images' subdirectory will have mode 755. It does not contain a pattern, so permissions will not be propageted to its content.\n\n    images f:644 d:755\n\nEXIT VALUES\n-----------\n\nThe program will exit with a non-zero value if it encountered errors.  Else, it will exit with status 0.\n\nAUTHOR\n------\n\nNicolas Limage \u003cnicolas@xephon.org\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnlm%2Fchperms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnlm%2Fchperms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnlm%2Fchperms/lists"}