2017-03-14 5 views
0

私はCでコーディングする必要があるUnixを含むプロジェクトに取り組んでいます。このプロジェクトでは、Cで複数のファイルをフォークして実行します。あなたが所有者、グループ、またはファイルを実行するときに一般的なアクセス許可を持っているかどうかを判断する方法が問題です。出力は以下のようになります。Cで所有者、グループ、または一般的なアクセス許可を持っている場合に印刷

File: .. 
Directory: /root 
You have general permissions: read execute 

または

File: Lab3.c 
Directory: /home/users15/sew25545 
You have owner permissions: read write execute 

私は、ファイルやディレクトリの一部が行っているので、心配いけません。 ここでは、「あなたは一般的な権限を持っています:」という部分は、私が苦労する場所です。私は、だから私は何の問題権限のすべてを取得していないが、彼らならばどのように私が言うん

fileMode = fileattrib.st_mode; 
    /* Check owner permissions */ 
    if ((fileMode & S_IRUSR) && (fileMode & S_IREAD)) 
     printf("Has Owner Read Permission"); 
    etc... 

...実行し、あなたの読み取りを見に発見し、所有者、グループ、およびユーザーの書き込み権限はそうのように行われています一般的なアクセス許可、グループのアクセス許可、または所有者のアクセス許可があります。私の先生はst_modeのほかに、ファイルの所有者と現在ログインしているユーザーの所有者を比較し、ファイルのグループをログインしているユーザーのグループと比較するためにst_mode以外の別のstat関数を説明しました。

ご協力いただきありがとうございます。

答えて

0

stat構造体のst_uidフィールドとst_gidフィールドは、ファイルの所有者とグループを提供します。それらを現在ログインしているユーザーの値と比較してください。あなたはgetuid()とgetgid()を使ってそれらを取得します。

+0

最初に応答していただきありがとうございますが、これらのコマンドを使用して両方のアクセス許可を取得するにはどうすればいいですか? – theGrandWizod

+0

if((fileMode&S_IRUSR)&&(fileMode&S_IREAD)) printf "Read");所有者、グループ、ユーザーの権限を調べることはできますが、どのユーザーがどのテストを行っているのかは分かりますか? – theGrandWizod

+0

あなたが書いたテストは、* file *の所有者/グループに対して常にテストします。これは、stat構造のst_uidとst_gidフィールドから見つけられます。ユーザーとグループの名前を調べたい場合は、それぞれgetpwuid()とgetgrgid()を使用できます。 –

関連する問題