28 Eylül 2016 Çarşamba

umask komutu

Giriş
umask uygulamadan çalıştırılan mkdir() çağrısına etki eder ve verilen hakların bir kısmını siler.

umask komut satırından çalıştırılan chmod çağrısına etki eder ve verilen hakların bir kısmını siler.
Nedense uygulamadan çalıştırılan chmod() çağrısına etki etmiyor.

Benim bilgisayarımda umask yazınca terminalde çıktı olarak "002" alıyorum.

umask 022 olsun. Şu kodu çalıştırılalım
#include <sys/stat.h>
#include <sys/types.h>

int main () {

  mkdir("/tmp/mkdir-test", 0777);
  return 0;

}
stat yaparsak çıktı olarak şunu alırız.
# stat /tmp/mkdir-test
...
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
...
Çözüm 1 - umask çağrısı
Şöyle yaparız.
mode_t old_mask = umask(0);
mkdir("/tmp/mkdir-test", 0777);
umask(old_mask);
Çözüm 2 - chmod çağrısı
Şöyle yaparız.
const char *dirname = "/tmp/mkdir-test";
if (mkdir(dirname, 0777) == 0)
    chmod(dirname, 0777);

Hiç yorum yok:

Yorum Gönder