Example #1
0
        private void okButton_Click(object sender, EventArgs e)
        {
            Attributes attributes = new Attributes();
            attributes.readOnly = readOnlyCheckBox.Checked;
            attributes.hidden   = hiddenCheckBox.Checked;
            attributes.system   = systemCheckBox.Checked;
            Attributes = attributes;

            AccessRights accessRights = new AccessRights();
            accessRights.user.canRead      = userReadCheckBox.Checked;
            accessRights.user.canWrite     = userWriteCheckBox.Checked;
            accessRights.user.canExecute   = userExecuteCheckBox.Checked;
            accessRights.group.canRead     = groupReadCheckBox.Checked;
            accessRights.group.canWrite    = groupWriteCheckBox.Checked;
            accessRights.group.canExecute  = groupExecuteCheckBox.Checked;
            accessRights.others.canRead    = othersReadCheckBox.Checked;
            accessRights.others.canWrite   = othersWriteCheckBox.Checked;
            accessRights.others.canExecute = othersExecuteCheckBox.Checked;
            AccessRights = accessRights;
        }
Example #2
0
        /// <summary>
        /// Возвращает группу прав доступа для текущего пользователя.
        /// </summary>
        /// <param name="currentUserId">Код текущего пользователя.</param>
        /// <param name="currentGroupId">Код группы текущего пользователя.</param>
        /// <param name="fileUserId">Код владельца файла.</param>
        /// <param name="fileGroupId">Код группы владельца файла.</param>
        /// <param name="accessRights">Права доступа к файлу.</param>
        /// <returns>Группу прав доступа для текущего пользователя.</returns>
        public static AccessRights.RightsGroup GetAccessRightsGroup(short currentUserId, short currentGroupId, short fileUserId, short fileGroupId, AccessRights accessRights)
        {
            if (currentUserId == 1 && currentGroupId == 1)
            {
                return new AccessRights.RightsGroup()
                {
                    canRead = true,
                    canWrite = true,
                    canExecute = true
                };
            }
            else if (currentUserId == fileUserId)
            {
                return accessRights.user;
            }
            else if (currentGroupId == fileGroupId)
            {
                return accessRights.group;
            }

            return accessRights.others;
        }
Example #3
0
 /// <summary>
 /// Назначает указанные права доступа файлу или каталогу.
 /// </summary>
 /// <param name="path">Путь к файлу или каталогу.</param>
 /// <param name="accessRights">Права доступа, которые будут назначены.</param>
 public void SetAccessRights(string path, AccessRights accessRights)
 {
     FileSystem.SetAccessRights(path, accessRights);
 }
Example #4
0
        /// <summary>
        /// Назначает указанные права доступа файлу или каталогу.
        /// </summary>
        /// <param name="path">Путь к файлу или каталогу.</param>
        /// <param name="accessRights">Права доступа, которые будут назначены.</param>
        public void SetAccessRights(string path, AccessRights accessRights)
        {
            Directory current = CurrentDirectory;
            Utils.CheckPath(path);
            string fullPath = Utils.GetFullPath(path, CurrentDirectory.FullPath);
            string parentDirectoryPath = Utils.GetDirectoryName(fullPath);
            Directory directory = OpenDirectory(parentDirectoryPath);

            //AccessRights ar = directory.AccessRights;
            if (!Utils.GetAccessRightsGroup(UserId, GroupId, directory.UserId, directory.GroupId, directory.AccessRights).canExecute)
            {
                throw new UnauthorizedAccessException("Текущий пользователь не имеет доступа к изменению прав доступа к объектам этого каталога!");
            }

            string fileName = Utils.GetFileName(path);
            MetaFile metaFile = directory.Find(fileName);

            if (metaFile == null)
            {
                throw new FileNotFoundException("Указанный файл или каталог не существует!", path);
            }

            Inode inode = new Inode();
            int sizeOfInode = Marshal.SizeOf(typeof(Inode));
            FileStream.Seek(_superblock.inodeArrayAddress + (metaFile.InodeId - 1) * sizeOfInode, SeekOrigin.Begin);
            inode = (Inode)ReadStruct(FileStream, typeof(Inode));
            inode.permissions = accessRights.ToInt16();
            FileStream.Seek(-sizeOfInode, SeekOrigin.Current);
            WriteStruct(FileStream, inode);

            FlushAll(false);

            CurrentDirectory = current;
        }
Example #5
0
 public PropertiesForm(Attributes attributes, AccessRights accessRights)
     : this()
 {
     Attributes = attributes;
     AccessRights = accessRights;
 }