ディレクトリとファイルを作成するアセンブリコードを書きましたが、作成されましたが奇妙なアクセス許可があります。ディレクトリは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 +++
これは正しいと思われます。これはどのアセンブラですか? – fuz
私のシステムでは、 'mynewdir'が許可0000で作成され、' chdir'が失敗する(エラーチェックを行う!)という点を除いて、これは意図した通りに動作しているようです。これは本当にあなたがテストしたプログラムですか? – fuz
@fuzありがとう、私はこの情報を質問に追加しました。そして私の場合はそうではありません。私はちょうどそれを再実行し、それは同じです。 – Neo