Abstract
Contemporary software on servers is usually configured through editing configuration files. Surprisingly, to the extent of our knowledge, the diversity of configuration file formats remains unstudied. Our goal in this work is to determine what data structures are used in configuration files and what formats are being used to encode them, in order to have a foundation for semantic analysis of their contents in the future. We examine 14133 files in 3409 packages comprising the whole set of software available in Debian stable repositories that has configuration files in the /etc directory. After eliminating files that are not configuration (such as init scripts), we assign them to categories using various criteria, some of them being the data structure they express or whether the order of statements matter. In this examination we find that even custom configuration formats can usually be expressed using one of several commonly used data structures. Some software packages, however, are configured in a Turing-complete programming language, usually the same one that the configured program was written in, and are therefore unsuitable for static analysis. Regardless, we provide a taxonomy of configuration formats, and highlight common themes in custom formats used by various packages. Ultimately, we describe a data structure that is able to hold information about all of these configuration files for further analysis.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
Rabkin, A., Katz, R.: Static extraction of program configuration options. In: Proceedings of the 33th International Conference on Software Engineering (2011)
Xu, T., Zhang, J., Huang, P., Zheng, J., Sheng, T., Yuan, D., Pasupathy, S.: Do not blame users for misconfigurations. In: Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles, pp. 244–259. ACM (2013)
Xu, T., et al.: Hey, you have given me too many knobs!: understanding and dealing with over-designed configuration in system software. In: Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering. ACM (2015)
Xu, T., et al.: Early detection of configuration errors to reduce failure damage. In: 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI 2016). USENIX Association (2016)
Shambaugh, R., Weiss, A., Guha, A.: Rehearsal: a configuration verification tool for puppet. In: Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation. ACM (2016)
Raab, M., Barany, G.: Challenges in validating FLOSS configuration. In: IFIP International Conference on Open Source Systems. Springer, Cham (2017)
Xu, T., Zhou, Y.: Systems approaches to tackling configuration errors: a survey. ACM Comput. Surv. (CSUR) 47, 4 (2015)
Huang, P., Bolosky, W., Sigh, A., Zhou, Y.: KungfuValley: a systematic configuration validation framework for cloud services. In: Proceedings of the 10th ACM European Conference in Computer Systems (2015)
Tang, C., et al.: Holistic configuration management at Facebook. In: Proceedings of the 25th Symposium on Operating Systems Principles. ACM (2015)
Oppenheimer, D., Ganapathi A., Patterson, D.: Why do Internet services fail, and what can be done about it?. In: USENIX Symposium on Internet Technologies and Systems, vol. 67 (2003)
Delaet, T., Joosen, W., Van Brabant, B.: A survey of system configuration tools. In: LISA, vol. 10 (2010)
Anderson, P., Scobie, A.: LCFG: the next generation. In: UKUUG Winter Conference (2002)
Heap, M.: Ansible. Apress (2016)
Hosmer, B.: Getting started with salt stack–the other configuration management system built with python. Linux J. 2012, 223 (2012)
Loope, J.: Managing Infrastructure with Puppet: Configuration Management at Scale. O’Reilly Media Inc, Sebastopol (2011)
Burgess, M.: Cfengine: a site configuration engine. In: USENIX Computing systems (1995)
Święcicki, B.: A novel approach to automating operating system configuration management. In: Information Systems Architecture and Technology: Proceedings of 36th International Conference on Information Systems Architecture and Technology–ISAT 2015–Part II. Springer International Publishing (2016)
Xu, T., et al.: How do system administrators resolve access-denied issues in the real world? In: Proceedings of the 2017 CHI Conference on Human Factors in Computing Systems. ACM (2017)
Huang, Q., et al.: Identifying self-admitted technical debt in open source projects using text mining. In: Empirical Software Engineering (2017)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer International Publishing AG
About this paper
Cite this paper
Święcicki, B., Borzemski, L. (2018). How Is Server Software Configured? Examining the Structure of Configuration Files. In: Borzemski, L., Świątek, J., Wilimowska, Z. (eds) Information Systems Architecture and Technology: Proceedings of 38th International Conference on Information Systems Architecture and Technology – ISAT 2017. ISAT 2017. Advances in Intelligent Systems and Computing, vol 655. Springer, Cham. https://doi.org/10.1007/978-3-319-67220-5_20
Download citation
DOI: https://doi.org/10.1007/978-3-319-67220-5_20
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-67219-9
Online ISBN: 978-3-319-67220-5
eBook Packages: EngineeringEngineering (R0)