umask question


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users umask question
# 1  
Old 05-14-2009
Question umask question

I use following code

#include <fcntl.h>
#define RWRWRW (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)

int main(void){
umask(0);
create("foo",RWRWRW);
umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
create("bar",RWRWRW);
exit(0);
}

the result is follows:
$umask
002
$./a.out
$ls -l foo bar
-rw------- bar
-rw-rw-rw- foo
$umask
002

My question are follows:
1. Why bar and foo have different right setting,how to get the following result?
-rw------- bar
-rw-rw-rw- foo

2.in my code,I have umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)
why umask value is still 002 after running my code ?

thank
# 2  
Old 05-14-2009
The "umask" function enables/disables the permissions that can be set for files on a per-process basis. The permissions given to open, create, mkdir, and other functions are effectively ANDed with the parameter given to the last invocation to umask, before the operation is performed. Hence, with a umask of 0, the 'group' and 'other' permissions are stripped from RWRWRW; whereas, with your second invocation of umask, you have allowed 'group' and 'other' to be conferred read and write privileges.

As for your second question, umask operates on a per-process basis. It will only affect the process in which umask is invoked (and potentially in subsequently spawned children of that process). It will not affect the processes's parent (i.e. the shell).

umask
# 3  
Old 05-14-2009
Question

Quote:
Originally Posted by Michael Safyan
The "umask" function enables/disables the permissions that can be set for files on a per-process basis. The permissions given to open, create, mkdir, and other functions are effectively ANDed with the parameter given to the last invocation to umask, before the operation is performed. Hence, with a umask of 0, the 'group' and 'other' permissions are stripped from RWRWRW; whereas, with your second invocation of umask, you have allowed 'group' and 'other' to be conferred read and write privileges.

As for your second question, umask operates on a per-process basis. It will only affect the process in which umask is invoked (and potentially in subsequently spawned children of that process). It will not affect the processes's parent (i.e. the shell).

umask
I know when a umask of 0,the 'group' and 'other' permissions are stripped from 'RWRWRW',but I don't understand 'user' permission is still rw- ?

Thanks
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Umask question

Hello All, I was doing some work with umask and want to make sure I'm right. I want newly created files to be executable for the group and the world, writable for the user only, and readable by the user, group, and world. I came up with : umask 122 by assigning: a 6 to user a 5 to group... (2 Replies)
Discussion started by: harpoon35
2 Replies

2. Shell Programming and Scripting

Help for umask

Hi, I want to set umask value only for vi editor. If I create new file using vi editor, then automatic permission should be 777. I want to set umask 000. Please help me. Thanks in advance (2 Replies)
Discussion started by: mnmonu
2 Replies

3. AIX

UMASK

How do I change the umask for a NIS user? Thanks steve (1 Reply)
Discussion started by: steve.lavoie
1 Replies

4. UNIX for Advanced & Expert Users

umask

Hi, Please, let me know how the umask is working? As per my understanding is aprt from subtracting from 666/777, logical gate operation is performing. Ex: If I set uname 011, it gave the permission like 666 for file. Request you to explain which gate's operation performed. $uname 011... (4 Replies)
Discussion started by: Nagapandi
4 Replies

5. Solaris

umask

Due to urgent requirement to resolve some permission issues , I wish to set solaris 8 server so that any file written is on 777 . I guess need to set umask , how to set it ?? (7 Replies)
Discussion started by: falcon16
7 Replies

6. UNIX for Dummies Questions & Answers

umask

Hi, I have a doubt on the umask values. Why is the UMASK value is different from file and directory? Suppose if the umask value is 0022. The file permissions for a newly created file is 644 and the file permissions for a newly created directory is 755. My doubt is why can't it be the... (1 Reply)
Discussion started by: praveen_b744
1 Replies

7. Linux

help on umask

hai guys , i am having problem in getting the knowledge about umask. actually when i am putting command as umask some value is coming like 0022 by defalut. we can change its value also. but the main thing is thye file permisiion actually depends upon umask.how is it depends upon umask i want to... (6 Replies)
Discussion started by: suvendu4urs
6 Replies

8. AIX

Umask help

I changed the umask in /etc/security/user to 027. I changed the umask in /etc/profile to 027. My current shell is ksh. My .profile doesn't make any changes to umask or call other scripts that change umask. Running AIX 5.3 I still get a umask of 022 instead of the expected 027. I have no... (1 Reply)
Discussion started by: x96riley3
1 Replies

9. UNIX for Dummies Questions & Answers

umask

the umask on solaris must return 022 or 0022 wich one is correct and why? thanks, pa (2 Replies)
Discussion started by: rsh
2 Replies

10. UNIX for Dummies Questions & Answers

umask

in this unix book that i have, it says: the statement: filedes = open(pathname, O_CREAT, mode); is actually filedes = open(pathname, O_CREAT, (~mask)&mode); /* ~ is the negation symbol */ like it's doing some type of masking. for example, fd =... (1 Reply)
Discussion started by: bb00y
1 Replies
Login or Register to Ask a Question