I think that among the solutions you mentioned, the stdFd is probably the best, both in satisfying the check and in keeping-up with the spirit of this MISRA rule.
If you end-up needing many such typedefs, this is probably a sign that the design of your code is not great, and that using opaque types would make it safer (and yes, I believe that open is a badly designed function, that it should have returned a FileDescriptor structure). If I was to use it in many places, I would probably wrap it into a safer interface. I don’t know if you are working with C or C++, but in the C++ community there is a strong push toward strong typing, and providing different types for different integers values, to increase code safety.
Another option that you did not mention would be to write:
auto fd = open("name", O_OPEN);
For information, this rule has been debated a lot in the MISRA committee for the next version, especially because of examples such as the one you provide. It’s very hard to come up with something automated that can differentiate when an int is just a value for which you don’t care about any platform limit, and when it is something numeric for which you must care about overflows and where having a typedef might help you remembering those limits.