-
Notifications
You must be signed in to change notification settings - Fork 17
Knowledge Folders and Security
How to organise a knowledge base into folders, and how to control who can read what.
For how it is built, see Knowledge β folders and security: Developer Guide. For the design reasoning behind the permission model, see Folders and permissions.
A document lives in exactly one folder. There is always a single honest answer to "where is it?", and moving something is a move rather than a copy.
| To do this | Do this |
|---|---|
| Create a folder | New folder in the left panel, or right-click an existing folder to create one inside it |
| Rename or delete | right-click the folder |
| File a document | drag it onto a folder, in any view |
| Move a folder | drag the folder onto another one β everything inside comes with it |
| Move it out | right-click the document β Move out of its folder |
| Move it while reading it | the Move button on the article |
| Make a shortcut | hold Ctrl while dragging |
A folder must be empty before it can be deleted. That is deliberate: deleting a folder full of documents is not a tidying-up action and should not be one click.
Some documents genuinely belong in two places. Ctrl-drag leaves the document where it lives and puts a pointer to it in the folder you dropped it on.
π A shortcut never grants access. It is only a pointer. If you cannot read the document, its shortcut does not appear either β you do not see a title you cannot open.
Right-click a shortcut to remove it. That takes away the pointer and leaves the document untouched.
Home shows what is filed at the top level, plus the folders themselves. It does not list everything you own, any more than opening a disk lists every file on it. Filing a document therefore makes it leave Home β it has gone somewhere.
Searching and tag filters look everywhere, folders included, and each result says which folder it came from. A search that quietly ignored anything filed away would answer "no results" about articles that certainly exist.
| View | What it is for |
|---|---|
| List | full-width rows with a preview. Best when you are reading rather than filing. |
| Cards | a grid of tiles β title, author, date, tags. Best for scanning a folder you know. |
| Tree | the whole shape at once, folders and documents together. Best for learning how the knowledge base is arranged. |
| Details | a table of name, author, modified and tags, sortable by column. Best for spotting what has not been touched in a while. |
Documents are listed alphabetically, with folders above them. Names containing numbers sort the way people expect, so Step 2 comes before Step 10.
Your choice of view is remembered per person. It is not shared with anyone else.
β οΈ The tree never filters itself. Clicking a folder in the tree selects it β it highlights, the trail names it, and a new folder or article goes there. It does not prune the tree, because showing the whole shape at once is the entire point of that view. Searching and tag filters still prune it, because those are questions about the whole knowledge base.
Filing one document at a time is fine for one document. To move six, tick them.
- The tick is the mechanism. A plain click on a document always opens it, so selecting is done with the tick box on each row.
- Shift and click a tick takes everything between it and the last one ticked. The block follows the order shown on screen β so sorting the details view by a different column changes what a range means.
- Ctrl or Shift and click the document itself selects it instead of opening it, for when your hand is already on the row.
- Arrow keys move down the list Β· Shift + arrow extends Β· Ctrl + arrow moves without changing the selection Β· Space ticks Β· Ctrl + A takes everything on screen Β· Escape clears.
A selection survives searching, filtering and changing view. Tick six results for VPN, search for printer, tick four more, then move all ten.
With anything ticked, a bar appears above the list: Move them to files the lot into one folder, and Set who can see them changes the audience on all of them at once.
Two separate controls decide who can read a document. They are easy to confuse because they answer different questions, and they combine.
| Control | Question it answers | Where |
|---|---|---|
| Audience | what kind of person may see this at all | the editor, under Who can see this |
| Permissions | which named people | right-click β Permissions |
π Every control narrows. Nothing widens. A permission can never let somebody see something their audience excludes. Putting a customer on the list for an Analysts only article does not show it to them.
The audience is covered on the Knowledge page. The rest of this section is about permissions.
Every folder and every document is one of two things, and the list of people means the opposite thing in each. This is the single most important idea on this page.
| Mode | The list is | An empty list means |
|---|---|---|
| Open (the default) | who is shut out β everyone else can see it | nothing is restricted at all |
| Restricted to chosen people | who is let in β nobody else can | nobody at all β the strictest setting there is |
Reading the list without knowing which mode you are in will mislead you every time.
β οΈ An empty Restricted list is the tightest setting, not the loosest. It is not a mistake FreeITSM corrects for you β it means exactly what it says. The window tells you plainly when you have created one.
A list is never a mixture of both. That is why there is no allow and deny column to reconcile and no order of precedence to learn: an access list here cannot contradict itself, because a contradiction is not something it can express.
Switching between the two empties the list, and FreeITSM asks first. It has to β the same names would mean the exact reverse afterwards, and a list left behind in the wrong mode would silently do the opposite of what it says.
Analysts, teams and individual portal users.
By default a document uses the same permissions as the folder above, and so does a folder inside a folder. This is the ordinary case and the one to aim for: set permissions on a folder once and everything filed into it is covered, including things filed there later.
With the box ticked, the Permissions window shows the rules it is inheriting and which folder they come from, read-only. They are deliberately not editable there β those rules belong to the folder above, and changing them from inside one document would quietly change what everything else in that folder can see.
Where nothing above restricts anything, it says so in words. An empty list and "no restrictions at all" look identical and mean opposite things.
Untick the box to give one document or folder its own rules. Use this sparingly.
β οΈ Anything with its own rules is invisible from the outside. You cannot look at a folder and know what is true inside it. Permission exceptions in the left panel lists everything that does not follow its folder β it is the one screen that tells you where the surprises are. Check it occasionally; the count only goes up on its own.
When a folder is restricted, does that cover everything inside it, or only the folder itself? Both answers are reasonable and organisations genuinely differ, so it is a setting β Knowledge βΊ Settings βΊ Permissions, install-wide, administrators only.
| Setting | Meaning |
|---|---|
| Folders are containers (default) | To read a document you must be able to read every folder above it. A locked cabinet is locked whatever is written on the file inside. Restricting a folder protects everything in it. |
| Folders are filing | Permissions belong to documents; folders only organise them. The nearest rules win and folders above add nothing. Choose this if your folders are a filing scheme rather than a security boundary. |
Before the setting changes, FreeITSM tells you how many document readings would be gained or lost across your real content and your real people. Changing the answer to "who can read what" across a whole knowledge base is not something to do on a hunch.
The same access list is enforced everywhere an article can be reached. There is no route that reads round it.
| Reached via | Notes |
|---|---|
| Analysts | browsing, searching, and the article itself |
| The self-service portal | the Help Centre customers see |
| The AI assistant | filtering happens before the model is shown the text, not after it answers |
| The website chat | can only ever use articles marked for the internet |
| The REST API | a key acts as the analyst it belongs to and sees exactly what that person sees |
π The AI is the sharp edge. An assistant that paraphrased a restricted document into an answer would leak it just as surely as showing it, and nothing would record that it had happened. The filter is applied at retrieval.
Somebody has to be able to get back into a folder restricted to nobody, so an administrator can always read anything. Without that floor, one mis-click could put a document permanently beyond every person in the building.
Every use of that floor is recorded β who opened what, and when β separately from ordinary reads. An override nobody can audit is not a safety net, it is a back door. Changes to permissions are recorded the same way.
β οΈ This is why "I removed myself from the team and I can still see it" is not a test. If you hold the administrator capability you will get in regardless of any list. To check that a restriction works, use an account that is not an administrator β and be aware that demo data often makes several accounts administrators.
Everything above works on a phone. The article's actions β Share, Move, Permissions, Edit, Archive β sit in a row of icons pinned to the bottom of the screen, where a thumb is.
Attaching documents to an article lives in the editor, not on the article you are reading: reading is not editing.
- Knowledge β the module overall, and the audience setting
- Knowledge β folders and security: Developer Guide β how it is built
- Folders and permissions β the design reasoning, and what was ruled out
- Mobile: Knowledge β the phone layout
- REST API: Knowledge β the same rules over the API
FreeITSM β an open-source IT Service Management platform Β· github.com/edmozley/freeitsm Β· MIT licence
- Installation
- β° Scheduled tasks (cron jobs)
- Architecture
- AI Providers
- Internationalisation (i18n)
- Timezones & Time Handling
- π Date & Time Formats
- Theming & Dark Mode
- β¨οΈ Command palette (βK)
- π Searching inside tickets
- π Attached documents
-
MobileβFriendly
- β³ π« Mobile: Tickets
- β³ π» Mobile: Assets
- β³ π Mobile: Calendar
- β³ π Mobile: Knowledge
- β³ π¦ Mobile: Service Status
- β³ πΌ Mobile: Watchtower
- β³ π§© Mobile: Problem Management
- β³ π Mobile: Change Management
- β³ πΏ Mobile: Software
- β³ β Mobile: Tasks
- β³ π§° Mobile: Techniques & Tricks
-
Security
- Layer 1 β which modules you can enter
- β³ π§© Module Access Control
- β³ π οΈ Module Access β Developer Guide
- Layer 2 β what you can administer
- β³ π Roles & Permissions
- β³ π οΈ Roles β Developer Guide
- β³ π€ Why capabilities are constants
- Layer 3 β the System module
- β³ π Admin Access Control
- Hardening
- β³ π Security review response 2026-08
- β³ π‘οΈ Security hardening 2026-08
- β³ π οΈ Security hardening 2026-08 β Developer Guide
- β³ π‘οΈ Round three β plain English
- β³ π οΈ Round three β Developer Guide
- Single Sign-On (SSO)
- ποΈ LDAP & Active Directory
- Browser Extension
- API Reference
-
π REST API β how it works
- β³ π« REST API: Tickets
- β³ π» REST API: Assets
- β³ π΄ REST API: Problems
- β³ π REST API: Changes
- β³ π REST API: Knowledge
- β³ β REST API: Tasks
- β³ ποΈ REST API: CMDB
- β³ π REST API: Contracts
- β³ ποΈ REST API: Calendar
- β³ πΏ REST API: Software
- β³ π¦ REST API: Service Status
- β³ βοΈ REST API: Morning Checks
- β³ π REST API: Forms
- β³ βοΈ REST API: Workflow
- β³ πΊοΈ REST API: Network Mapper
- β³ π§ Using the API docs page
- β³ π OpenAPI specification
- β³ β OpenAPI: kept correct
- β³ π οΈ Maintaining the catalogue
- Watchtower
-
Tickets
- β³ Mailbox Authentication
- β³ π€ Email send log
- β³ Basic IMAP mailboxes
- β³ Email rendering & images
- β³ SLA Management
- β³ WhatsApp channel
- β³ π¬ Web chat channel
- β³ π£ Slack channel
- β³ π Linking tickets
- β³ π Ticket notes: internal or shared
- β³ ποΈ Canned responses
- β³ βοΈ Limiting replies to particular senders
- β³ βοΈ Email signatures
- β³ π The public web address
- β³ π’ Ticket numbering
- β³ π Raising a ticket for someone else
- β³ π Merging tickets
- β³ β Splitting tickets
- β³ β Selecting several tickets
- β³ ποΈ The folder pane
- β³ π οΈ Snoozing tickets β Developer Guide
- β³ π₯ Collision detection
- β³ β±οΈ Time tracking
- β³ π Scheduled work in your own calendar
- Problem Management
- Tasks
- Assets
- Knowledge
- Change Management
- Calendar
- Morning Checks
- Reporting
- Software
- Forms
- Contracts
- Service Status
- π Notifications
- π¨ War Room
- Self-Service Portal
- LMS
- Process Mapper
- CMDB
- Network Mapper
- Workflows
- Issue trackers (Jira, Azure DevOps)
- System
-
Overview
- β³ π Progress tracker
- β³ Concepts & vocabulary
- β³ Email routing & mailboxes
- β³ Settings: global vs per-company
- β³ Users & self-service
- β³ Staff cross-company access
- β³ Worked examples
- β³ Pitfalls & gotchas
- β³ Scope: what it's for
- β³ π οΈ Developer Guide (make a module multi-company)
- β³ ποΈ Case study: CMDB (a linked graph)
- β³ π§ͺ Test harness (prove it's isolated)