Hicham Al Sayed ahmed

اهلا و سهلا بكم في منتدى تقنيات الحاسوب 2013

منتدى و عالم تقنيات الحاسوب و البرمجة وانظمة التشغيل و الصيانة 2013

تؤمن لكل من يحب ان يتعلم البرمجة و كل من يدرس في هذا الاختصاص برامج و مواضيع و افكار جديدة و كيفية العمل و الكثير و الكثير و ايضا تتيح لاي شخص ان ينضم لهذا المنتدى و خاصة طلاب تقنيات الحاسوب و انظمة التشغيل و الصيانة المادية و البرمجية
تعلم الفجوال بيسك - الدلفي - السي ++ - الباسكال و الكثير و الكثير

اطرح سؤالك على فريق العمل في الفيسبوك

تابعنا على الفيسبوك

مشاركة الموضوع عبر الفيسبوك

Log in

I forgot my password

Top posting users this week

Who is online?

In total there is 1 user online :: 0 Registered, 0 Hidden and 1 Guest

None


Most users ever online was 85 on Tue Nov 05, 2013 5:00 am

تابعنا على الفيسبوك


إنشاء المستخدمين و منح الصلاحيات

Share
avatar
عفريت السويداء
عضو مميز
عضو مميز

نقاط : 1157

default إنشاء المستخدمين و منح الصلاحيات

Post by عفريت السويداء on Wed Dec 21, 2011 2:04 pm

ما رأيكم بالتالي :
لديك حوالي 100 مستخدم جديد نريد إنشاءهم
، ثم منح صلاحيات إنشاء الجدوال و المشاهد للجميع ، فالسؤال كم سطراً من
التعلميات تحتاج ؟ و في الجهة الأخرى إذا أردت سحب صلاحية معينة من هؤلاء
المئة فكم سطراً أخر ستكتب من أجل ذلك ؟ و هل أنت متأكد من أنك لم تنسى أي
مستخدم ؟؟

الحل : مجموعة السماحيات Rols .
إذاً
Role هي مجموع السماحيات المختلفة التي نود إسنادها فيما بعد إلى مستخدم
واحد أو أكثر أو حتى إلى مجموعة سماحيات أخرى .

تتميز role
بسهولة إستخدامها المرة تلو الأخرى بحيث يتم إسنادها إلى المستخدم و سحبها
منه ، كما أن سحب الصلاحية من role تؤدي إلى سحبها من المستخدم الذي أسندنا
له تلك role . يمكن أن تسند أكثر من role إلى مستخدم ما ، كما يمكنك اسناد
role واحدة إلى أكثر من مستخدم .


تعليمة إنشاء role :

كود

SQL>
create role arabteam_role;

Role created.


بشكل عام :

كود

CREATE
ROLE role [NOT IDENTIFIED | IDENTIFIED
{BY password | EXTERNALLY |
GLOBALLY | USING package}]


-
ماذا لو أردنا منح role مشروطة لمستخدم ما ؟ أي يجب عليه كتابة كلمة سر
لتمكين هذه role ؟؟

كود

SQL> create role arabteam_role
identified
by arabteam_pass;

Role created.


ماذا لو أردنا مصادقة نظام التشغيل ( كما فعلنا
مع المستخدمين ) لتمكين role ؟

كود

SQL> create role arabteam_role
identified
Externally;


كيف نسند السماحيات إلى role ؟
بالطريقة
نفسها التي أسندنا فيها السماحيات للمستخدمين :

كود

SQL>
grant create table to arabteam_role;
Grant succeeded


الآن كيف نسند role إلى
المستخدمين ؟


كود

SQL> grant arabteam_role to arabteam;
Grant
succeeded


حتى أننا
نستطيع إسناد role إلى أخرى ، فتصبح الثانية تحوي صلاحيات الأولى :


كود

SQL>
grant arabteam_role1 to arabteam_rol2;
Grant succeeded


بشكل عام :

كود

GRANT
role [, role ]...
TO {user|role|PUBLIC}
[, {user|role|PUBLIC}
]...
[WITH ADMIN OPTION]


تمكين و إلغاء تمكين Roles :
يستطيع
المستخدم arabteam أن يفعل أو يلغي عمل role معينة قام مدير القاعدة أو أي
مستخدم آخر بإسنادها إليه . قد يسأل البعض: أي مجنون يلغي صلاحيات ممنوحة
إليه ؟؟؟
الجواب سيدركه مطوري التطبيقات أكثر من غيرهم : في التطبيقات
قد يتشارك الموظفون اسم مستخدم واحد لإستعمال التطبيق ، و لكن نريد فرض
مستويات من الحماية على مستوى السمتخدم الواحد ، أي قد نسمح لموظف (س)
بسماحيات أكثر من الموظف (ع) رغم أن الإثنين يقومان بتسجيل الدخول
بالمستخدم arabteam .
أرجو أن الفكرة قد وصلت .
كيف نستطيع التفعيل
:
بإستخدام التعليمة set :

كود

Set role arabteam_role;


ماذا لو أراد المستخدم أن يفعل role مشروطة
بكلمة سر ؟؟

كود

set role arabteam_role identified by
arabteam_pass;


ماذا لو
أراد المستخدم تفعيل جميع roles التي يملكها ماعدا role معينة ؟

كود

set
role all except arabteam_role;


لمطوري التطبيقات :
هناك
dbms_session.set_role لتمكين role معينة ، و لكن إنتبه فلا يمكنك استعمال
في PL/SQL Stored Procedure بل نستطيع إستعمالها فقط عن طريق Anonymous
block أو عن طريق TRIGGER على مستوى الفورم .

أي
:

كود

SQL> begin
2
dbms_session.set_role('arabteam_role');
3 end;
4 /

PL/SQL
procedure successfully completed.


إنظر
إلى التالي:

كود

SQL> create or replace procedure set_proc
2
is
3 begin
4 dbms_session.set_role('role1');
5 end;
6 /

Procedure
created.

SQL> execute set_proc;
BEGIN set_proc; END;

*
ERROR
at line 1:
ORA-06565: cannot execute SET ROLE from within stored
procedure
ORA-06512: at "SYS.DBMS_SESSION", line 124
ORA-06512: at
"SYSTEM.SET_PROC", line 4
ORA-06512: at line 1


أرجو أن الفكرة قد وصلت .
ماذا لو أردنا
إنشاء role لا يمكن تفعيلها إلا عن طريق تنفيذ package معينة ؟؟؟؟
ننشىء
role خاصة نسميها Application Role بالطريقة التالية :


كود

create
role arabteam_approle
identified using arabteam.SetRole_package;


ملاحظة هامة جداً : كل عمليات set التي تجريها
سوف يتم التراجع عنها عند تسجيل الخروج بحيث تعود مجموعة السماحيات
الإفتراضية التي يتم إسنادها بالشكل :

كود

SQL>
alter user arabteam
2 default role arabteam_role;

User
altered.


- يتم سحب
الصلاحية من role بنفس الطريقة التي إستعملناها مع user :

كود

revoke
create table from arabteam_role;


-
حذف الصلاحية يتم بالتعليمة التالية :

كود

drop
role arabteam_role;


أخيراً
: توجد مجموع من Roles التي يتم إنشاءها إفتراضياً مع تنصيب أوراكل :
1-
CONNECt : للتوافقية مع الإصدارات المختلفة من الأوراكل سيرفر و تضم
صلاحية واحدة فقط هي create session >
2- Resource : و هي role قوية
تضمن صلاحيات تتيح للمستخدم إنشاء جداوله بأي مساحة على أي table space
بالإضافة إلى مميزات أخرى . في رأيي إن هذه role تمنح للمستخدمين المميزين
في القاعدة . تحوي هذه role على :

كود

CREATE
SESSION
UNLIMITED TABLESPACE


بالإضافة
إلى سماحيات إنشاء الجدوال و المشاهد و إجرائيات PL/SQL ....
3- dba :
و هي role الشهيرة جداً و هي تحوي جميع السماحيات التي تجعل من المستخدم
"معلم الداتا بيس " أو المستخدم الذي لا يخضع إلا للمستخدم sys . هذه role
خطيرة جداً فهي تجعل المستخدم قادراً على كل شيء في القاعدة حتى عملية
التخريب المقصودة أو غير المقصودة و في العادة لا تمنح هذه role إلا لشخص و
احد فقط و هي مدير القاعدة الرئيسي أما البقية فيتم منحهم أجزاء من هذه
role . تحوي هذه role على السماحيات التالية :


كود

ADVISOR
,AUDIT ANY ,DROP USER ,RESUMABLE ,ALTER USER , CREATE JOB , ANALYZE ANY ,
BECOME USER , CREATE ROLE , CREATE RULE , CREATE TYPE , CREATE USER ,
CREATE VIEW , ALTER SYSTEM , AUDIT SYSTEM , CREATE TABLE , DROP PROFILE
,ALTER PROFILE , ALTER SESSION , DROP ANY ROLE,
DROP ANY RULE,DROP
ANY TYPE,DROP ANY VIEW ,QUERY REWRITE ,ALTER ANY ROLE , ALTER ANY RULE ,
ALTER ANY TYPE , ALTER DATABASE , CREATE ANY JOB , CREATE CLUSTER ,
CREATE LIBRARY , CREATE PROFILE , CREATE SESSION , CREATE SYNONYM ,
CREATE TRIGGER , DROP ANY INDEX , DROP ANY TABLE , GRANT ANY ROLE , LOCK
ANY TABLE ,UNDER ANY TYPE ,UNDER ANY VIEW ,ALTER ANY INDEX , ALTER ANY
TABLE , CREATE ANY RULE , CREATE ANY TYPE ,CREATE ANY VIEW ,CREATE
OPERATOR ,CREATE RULE SET ,CREATE SEQUENCE ,DROP TABLESPACE , UNDER ANY
TABLE ,ALTER TABLESPACE ,BACKUP ANY TABLE ,CREATE ANY INDEX , CREATE ANY
TABLE , CREATE DIMENSION
CREATE INDEXTYPE ,CREATE PROCEDURE ,DELETE
ANY TABLE ,DROP ANY CLUSTER ,DROP ANY CONTEXT ,DROP ANY LIBRARY ,DROP
ANY OUTLINE ,DROP ANY SYNONYM ,DROP ANY TRIGGER ,EXECUTE ANY RULE
,EXECUTE ANY TYPE ,INSERT ANY TABLE ,MANAGE ANY QUEUE ,MANAGE SCHEDULER
,SELECT ANY TABLE ,UPDATE ANY TABLE ,ALTER ANY CLUSTER ,ALTER ANY
LIBRARY ,ALTER ANY OUTLINE ,ALTER ANY TRIGGER ,COMMENT ANY TABLE ,CREATE
TABLESPACE
DEQUEUE ANY QUEUE ,DROP ANY OPERATOR ,DROP ANY RULE SET
,DROP ANY SEQUENCE ,ENQUEUE ANY QUEUE ,EXECUTE ANY CLASS ,FORCE
TRANSACTION ,MANAGE TABLESPACE ,ON COMMIT REFRESH ,ALTER ANY RULE SET
,ALTER ANY SEQUENCE,CREATE ANY CLUSTER ,CREATE ANY CONTEXT ,CREATE ANY
LIBRARY , CREATE ANY OUTLINE ,CREATE ANY SYNONYM ,CREATE ANY TRIGGER
,DROP ANY DIMENSION ,DROP ANY DIRECTORY ,DROP ANY INDEXTYPE ,DROP ANY
PROCEDURE
RESTRICTED SESSION


توجد
العديد من roles الأخرى التي سيكون الحديث حولها طويلة ...
إذا أردت
أن تعلم ما هي roles الموجودة و السماحيات على مستوى النظام التي تحويها :
كود

select
role , privilege from role_sys_privs;


إذا أردت أن تعلم ما هي roles الموجودة و
السماحيات على مستوى الغرض التي تحويها :

كود

select
role , privilege from role_obj_privs;



ماذا لو أراد مستخدمنا arabteam أن يعرف
ماهي الصلاحيات التي يملكها ؟
على مستوى النظام :

كود

select
* from user_sys_privs;


على
مستوى الأغراض :


كود

select * from user_obj_privs;


و هكذا انتهى القسم الخاص بــroles .
في
القسم القادم إن شاء الله سنتحدث عن إدارة الموارد
Resource Manage
و كيفية
توزيعها بالشكل الأمثل .. أرجو إذا وجدت أي ملاحظات حول طريقة شرحي أو عرض
الأفكار أو أي تعقيب على أي فقرة فلا تبخلوا علي بها .... و السلام
avatar
pc-king.dahek.net
V . I . P
V   .   I   .   P

نقاط : 5553

default Re: إنشاء المستخدمين و منح الصلاحيات

Post by pc-king.dahek.net on Tue Dec 27, 2011 1:55 am

جميل جداً و احيك
واكيد كنت الاول بالصف
avatar
عفريت السويداء
عضو مميز
عضو مميز

نقاط : 1157

default Re: إنشاء المستخدمين و منح الصلاحيات

Post by عفريت السويداء on Wed Dec 28, 2011 6:26 am

أي معلوم يا زلمي

بس هشي كان من زمان

اسا مليت من الاولية فتركتلن ياها

شكرا لك على هذا المرور الكريم
avatar
al-Master

نقاط : 123

default Re: إنشاء المستخدمين و منح الصلاحيات

Post by al-Master on Fri Jan 06, 2012 6:36 pm

شكرا على هذا الموضوووع الجميل Arrow

    Current date/time is Wed Nov 21, 2018 1:13 am