2017-10-23 10 views
1

ディレクトリとファイルを作成するアセンブリコードを書きましたが、作成されましたが奇妙なアクセス許可があります。ディレクトリはdrwxrwxrwxで、ファイルは-r-xr-xr-xです。これらのファイルのアクセス権を取得するのはなぜですか?

私が試した限りでは、mode引数を変更すると、ファイルのアクセス許可が777に変更される可能性がありますが、変更方法と結果のパターンが見つかりません。 (それは777または555です)。

umaskは、0002に設定されています。

ディレクトリに対して完全な権限を取得するのはなぜですか?ファイルに対するこれらのアクセス許可の原因は何ですか?アクセス許可を変更するにはどうすればよいですか?

私はコンパイルするために、これらの2本のラインを使用してリンク:私はVMWareの上のUbuntuを使用

nasm run.s -f elf64 -o run.o 
ld run.o -o run 

コード:

section .data 

dir_name:   db  'mynewdir', 0 
dir_mode   equ  0 

file_name:   db  'mynewfile', 0 
file_mode   equ  0 

section .text 

global  _start 

_start: 
    mov rdi, dir_name 
    mov rsi, dir_mode 
    mov rax, 83    ; sys_mkdir 
    syscall 

    mov rdi, dir_name 
    mov rax, 80    ; sys_chdir 
    syscall 

    mov rdi, file_name 
    mov rsi, file_mode 
    mov rax, 85    ; sys_creat 
    syscall 

    mov rdi, 0 
    mov rax, 60  ; sys_exit 
    syscall 

straceの:

$ strace ./run 
execve("./run", ["./run"], [/* 63 vars */]) = 0 
mkdir("mynewdir", 0)     = 0 
chdir("mynewdir")      = 0 
creat("mynewfile", 0)     = 3 
exit(0)         = ? 
+++ exited with 0 +++ 
+0

これは正しいと思われます。これはどのアセンブラですか? – fuz

+1

私のシステムでは、 'mynewdir'が許可0000で作成され、' chdir'が失敗する(エラーチェックを行う!)という点を除いて、これは意図した通りに動作しているようです。これは本当にあなたがテストしたプログラムですか? – fuz

+0

@fuzありがとう、私はこの情報を質問に追加しました。そして私の場合はそうではありません。私はちょうどそれを再実行し、それは同じです。 – Neo

答えて

0

将来のユーザーのための答えを追加:
どうやら、予期しない結果の理由は、プログラムが共有で実行されたという事実だったが特別なアクセス権設定(VMWareのデフォルト)を持つ-with-hostディレクトリ。
これを通常のディレクトリで実行すると、umaskを考慮した結果が得られます。

関連する問題