清单 15. 设置 umask
[ian@echidna ~]$ umask -S u=rwx,g=rwx,o=rx [ian@echidna ~]$ umask u=rwx,g=,o= [ian@echidna ~]$ umask 0077 [ian@echidna ~]$ touch newfile [ian@echidna ~]$ ls -l newfile -rw-------. 1 ian ian 0 Nov 30 15:40 newfile |
设置文件所有者和组
文件组
要变更文件的组,使用 chgrp 命令和组名,以及一个或者多个文件名。如果您喜欢,还可以使用组编号。普通用户必须拥有文件,同时是文件要变更到的组的组员。root 用户可以将文件变更到任意组。清单 16清单 16 显示了一个例子。
清单 16. 变更组的所有权
[ian@echidna ~]$ touch file{1,2} [ian@echidna ~]$ ls -l file* -rw-rw-r--. 1 ian ian 0 Nov 30 15:54 file1 -rw-rw-r--. 1 ian ian 0 Nov 30 15:54 file2 [ian@echidna ~]$ chgrp development file1 [ian@echidna ~]$ chgrp 505 file2 [ian@echidna ~]$ ls -l file* -rw-rw-r--. 1 ian development 0 Nov 30 15:54 file1 -rw-rw-r--. 1 ian development 0 Nov 30 15:54 file2 |
正如该教程中的许多其他命令,chgrp 有一个 -R 选项,允许将变更递归应用到所有所选的的文件和子目录中。
默认组
当您学习之前的 访问模式 时,您就了解了在目录上设置 sgid 模式如何导致创建在该目录下的新文件属于目录的组,而不是属于创建该文件的用户所在的组。
您还可以使用 newgrp 命令来暂时地将您的初级组变更到您所在的其他组。创建一个新的 shell,当您退出 shell 时,之前的组就能恢复,如清单 17清单 17 所示。
清单 17. 使用 newgrp 来暂时改变默认组
[ian@echidna ~]$ groups ian development editor [ian@echidna ~]$ newgrp development [ian@echidna ~]$ groups development ian editor [ian@echidna ~]$ touch file3 [ian@echidna ~]$ ls -l file3 -rw-r--r--. 1 ian development 0 Nov 30 16:00 file3 [ian@echidna ~]$ exit [ian@echidna ~]$ groups ian development editor |
文件所有者
root 用户可以使用 chown 命令变更文件的所有权。在它最简单的形式中,语法和 chgrp 命令类似,除了使用用户名或者数字 id,而不是组名或者 id。文件的组也可能通过在用户名或者 id 之后添加一个冒号和组名或者 id 来同时变更。如果只有给出冒号,那么就使用用户的默认组。一般来说,-R 选项会递归地应用变更。清单 18清单 18 给出了一个例子。
清单 18. 使用 chown 变更文件所有权
[ian@echidna ~]$ touch file4 [ian@echidna ~]$ su - Password: [root@echidna ~]# ls -l ~ian/file4 -rw-rw-r--. 1 ian ian 0 Nov 30 16:04 /home/ian/file4 [root@echidna ~]# chown greg ~ian/file4 [root@echidna ~]# ls -l ~ian/file4 -rw-rw-r--. 1 greg ian 0 Nov 30 16:04 /home/ian/file4 [root@echidna ~]# chown tom:gretchen ~ian/file4 [root@echidna ~]# ls -l ~ian/file4 -rw-rw-r--. 1 tom gretchen 0 Nov 30 16:04 /home/ian/file4 [root@echidna ~]# chown :tom ~ian/file4 [root@echidna ~]# ls -l ~ian/file4 -rw-rw-r--. 1 tom tom 0 Nov 30 16:04 /home/ian/file4 |
指定用户和组的较早版本使用点,而不是冒号。因为当名称中包含点时,这个可能会造成误解,所以已经不再推荐。
Linux 上的文件和目录权限介绍就到此为止。