Set reasonable permissions for the root directory. Haiku seems to be a
bit pickier than BeOS. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20263 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -159,7 +159,7 @@ Node::CheckPermissions(int mode) const
|
|||||||
// root has always read/write permission, but at least one of the
|
// root has always read/write permission, but at least one of the
|
||||||
// X bits must be set for execute permission
|
// X bits must be set for execute permission
|
||||||
permissions = userPermissions | groupPermissions | otherPermissions
|
permissions = userPermissions | groupPermissions | otherPermissions
|
||||||
| S_IROTH | S_IWOTH;
|
| ACCESS_R | ACCESS_W;
|
||||||
// user is node owner
|
// user is node owner
|
||||||
} else if (uid == fUID)
|
} else if (uid == fUID)
|
||||||
permissions = userPermissions;
|
permissions = userPermissions;
|
||||||
|
|||||||
@@ -57,8 +57,8 @@ public:
|
|||||||
|
|
||||||
// stat data
|
// stat data
|
||||||
|
|
||||||
// void SetMode(mode_t mode) { fMode = mode; }
|
inline void SetMode(mode_t mode)
|
||||||
inline void SetMode(mode_t mode) { fMode = fMode & S_IFMT | mode & ~S_IFMT; }
|
{ fMode = fMode & ~S_IUMSK | mode & S_IUMSK; }
|
||||||
inline mode_t GetMode() const { return fMode; }
|
inline mode_t GetMode() const { return fMode; }
|
||||||
|
|
||||||
inline void SetUID(uid_t uid) { fUID = uid; }
|
inline void SetUID(uid_t uid) { fUID = uid; }
|
||||||
|
|||||||
@@ -230,9 +230,12 @@ Volume::Mount(nspace_id id)
|
|||||||
// create the root dir
|
// create the root dir
|
||||||
if (error == B_OK) {
|
if (error == B_OK) {
|
||||||
fRootDirectory = new(nothrow) Directory(this);
|
fRootDirectory = new(nothrow) Directory(this);
|
||||||
if (fRootDirectory)
|
if (fRootDirectory) {
|
||||||
|
// set permissions: -rwxr-xr-x
|
||||||
|
fRootDirectory->SetMode(
|
||||||
|
S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
|
||||||
error = fRootDirectory->Link(NULL);
|
error = fRootDirectory->Link(NULL);
|
||||||
else
|
} else
|
||||||
SET_ERROR(error, B_NO_MEMORY);
|
SET_ERROR(error, B_NO_MEMORY);
|
||||||
}
|
}
|
||||||
// set mounted flag / cleanup on error
|
// set mounted flag / cleanup on error
|
||||||
|
|||||||
Reference in New Issue
Block a user