Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Comments on How can I restrict filename characters?

Parent

How can I restrict filename characters?

+5
−0

Suppose I want to limit what characters are allowed in filenames. For example, I want file creation to fail if there is a \n in the name.

Is there a way to enforce this?

If it matters, I prefer an answer for Arch Linux.

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

1 comment thread

What operating system? (5 comments)
Post
+0
−1

A file can be created by the human user directly interacting on the laptop, or indirectly by a program.

In principle, you cannot detect statically all file creation calls in a software (even if you have access to its source code), because of Rice's theorem.

In practice, you could (with a lot of efforts) customize your user interface (e.g. graphical desktop, like GNOME) to limit in most (but not all) cases what the user is permitted to create interactively.

You could even (in theory) design your own operating system which has no files at all (but persistent objects). See the old Tunes project.

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

3 comment threads

Customizing user-space programs is inpractical. (3 comments)
Rice's theorem doesn't really apply (2 comments)
Hardware interaction can be blocked (1 comment)
Rice's theorem doesn't really apply
alx‭ wrote about 1 year ago

While a kernel could theoretically have backdoors creating such files anywhere in the millions of lines of code, it usually only has one (or a few at most) place where filenames are validated.

We assume you trust the code in your kernel, because otherwise why would you use it? If you don't trust the kernel, don't use the computer; there's nothing you can do safely in such a situation.

It's not like you're auditing a random user-space program.

matthewsnyder‭ wrote about 1 year ago

I also had a question about this. I think the argument is

You can't just read the source code of all your programs and figure out which ones will create files.

Which is theoretically true. In practice, the vast majority probably use a handful of system API calls for file creation.

However, aren't virtually all requests for file creation handled by the kernel? Then you would just have to modify the kernel implementation (as in alx's answer), rather than trying to intercept the call from every single program. In that case you don't have to contend with Rice.

You could also apply Rice to kernel code and say it's impossible. But the kernel already needs to do various checks when creating files, so surely there is a centralized place in the kernel code that controls file creation.