LINUX.ORG.RU
ФорумTalks

Костылестроение, PowerShell и почему все-таки я люблю этот наш Линукс

 , , ,


0

3

Я обожаю блаблаблабр за обилие статей, которые раз за разом подчеркивают функциональность и продуманность Linux. Причем, статьи даже не содержат ни слова о самом Linux. Кто понимает о чем речь, тот и так все увидит.

Итак, вот, скажем, статейка.

Цитирую задачу:

Простенький скрипт ... для случая, когда необходимо создать папки для ряда пользователей на файловом сервере при условии, что названия папок будут совпадать с именами пользователей и эти пользователи будут иметь определенный уровень доступа к этим (своим) папкам. Все это может создаваться внутри определенной папки непосредственно на сервере или через сеть в общей папке по UNC пути. 

Собственно, первый вариант:

#
# PowerShell Script.
# Creates home folders for users from an OU in AD and set permissions.
# Prepared by Alexander Lipovetskiy. August 2013.
#
 
cls
 
# We need the AD module for this first
Import-Module ActiveDirectory

# A folder or share where home folders must be created.
$Dir = "D:\Users"
# or $Dir = "\\server\share\"
 
# Path to an OU with users.
$Users = Get-ADUser -Filter * -SearchBase "OU=Users,OU=Muhosransk,DC=domain,DC=com"
 
# Creating folders and set permissions.
foreach ($User in $Users) {
    $User = $User.Name
    $Path = New-Item -ItemType Directory -Path $Dir -Name $User
    $Args = New-Object  system.security.accesscontrol.filesystemaccessrule($User,"Modify, Synchronize", "ContainerInherit, ObjectInherit", "None", "Allow")
    $ACL = Get-Acl $Path
    $ACL.SetAccessRule($Args)
    Set-Acl $Path $ACL
    }

[sarcasm_mode]Да это уже просто ultrakill в стиле PowerShell![/sarcasm_mode]Благодарные эксперты блаблабабра получают плюсы за поцелуи автора в задницу. Занавес.

Кто не понял, в линуксе все делает просто и, как это сейчас модно, искаропки бесплатно без смс:

$ adduser USER_NAME


Последнее исправление: Quadmonster (всего исправлений: 2)
Ответ на: комментарий от crypt

Как там на перле будет аналог с проставлением прав?

use Linux::ACL;
setfacl("/mnt/testacl/d", {
        uperm => {r=>1,w=>1,x=>1},
        gperm => {r=>1,w=>1,x=>1},
        other => {r=>1,w=>0,x=>1},
        mask  => {r=>1,w=>1,x=>1},
        group => {
                123456 => { r=>1,w=>1,x=>1 }
        }
  }, {
        uperm => {r=>1,w=>1,x=>1},
        gperm => {r=>1,w=>1,x=>1},
        other => {r=>1,w=>1,x=>1},
        mask  => {r=>1,w=>1,x=>1}
  }
);

Я вообще противник использования AD через LDAP.

В данной задаче это ССЗБ.

gh0stwizard ★★★★★
()
Ответ на: комментарий от der_looser

Где ты увидел функции? Регистр важен только в операциях сравнения, регэкспах. Просто скрипт написан в «академическом» стиле с полными именами команд (без псевдонимов), так как они указаны в справке, с указанием всех названий параметров, хотя они именованные и если заданы в правильном порядке, то названия могут опускаться:

function sum ($a, $b) { return ($a + $b) }

sum 5 4
sum -a 5 -b 4
sum -b 4 -a 5

TGZ ★★★★
()
Последнее исправление: TGZ (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

powershell удобнее интеграцией с AD, это — единственное место, где я не думая его юзаю. Ну и в .NET-окружении неплох, но у меня такого мало.

Смысл в том, что специально комплишны в нём не делаются, они работают на рефлексии.

x3al ★★★★★
()
Ответ на: комментарий от gh0stwizard

Хорошо, если из AD ничего не подтягивается, то без вопросов. Это вполне равносильно моему примеру с setfacl Но нужно заметить, perlовый код в не выходит компактнее примера на PowerShell, а ACL в Linux остаются неудобными.

crypt ★★★★★
()
Ответ на: комментарий от x3al

powershell удобнее интеграцией с AD

Что-что, а интеграцию своих решений друг в друга в Microsoft умеют делать хорошо, это факт. Другое дело, что в 95% случаев это делается ценой отсутствия совместимости с не-Microsoft решениями :-)

Pinkbyte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.