使用文件权限符[root@TP-CW-WS-PH-01 ~]# ls -l
total 6689968
-rw-------. 1 root root 1770 Sep 16 2012 anaconda-ks.cfg
-rw-r--r-- 1 root root 4289386496 Sep 25 2012 CentOS-6.3-x86_64-bin-DVD1.iso
-rw------- 1 root root 2561019904 Sep 25 2012 CentOS-6.3-x86_64-bin-DVD1.iso.bak
-rw-r--r-- 1 root root 6 Sep 27 2012 index.html
drwxr-xr-x 3 root root 4096 Oct 18 2012 install
-rw-r--r--. 1 root root 31779 Sep 16 2012 install.log
-rw-r--r--. 1 root root 10991 Sep 16 2012 install.log.syslog
-rw-r--r-- 1 root root 2 Oct 20 2012 ip_forward~
-rw-r--r-- 1 root root 2 Oct 20 2012 ip_forwary~
-rw-r--r-- 1 root root 2 Oct 20 2012 ip_forwarz~
-rw-r--r-- 1 root root 20 Aug 1 18:38 iplist
-rwxr-xr-x 1 root root 85 Aug 1 18:38 iptest.sh
drwxr-xr-x 2 root root 4096 Sep 28 22:57 jiabin
-rw------- 1 root root 2 Sep 25 06:43 nano.save
-rwxr-xr-x 1 root root 220 Jul 30 11:23 passwd.sh
-rwxr-xr-x 1 root root 132 Jul 30 10:37 printf.sh
-rwxr-xrwx 1 root root 94 Oct 22 2012 scp.sh
-rwxr-xr-x 1 root root 314 Jul 23 16:13 show.sh
-rwxr-xr-x 1 root root 49 May 14 19:06 test.sh
□-代表文件;
□d代表目录;
□l代表链接;
□c代表字符型设备;
□b代表块设备;
□n代表网络设备;
之后有3组三字符的码。每一组三字符码便是三重访问权限:
□r代表对象是可读的;
□w代表对象是可写的;
□x代表对象是可执行的;[root@TP-CW-WS-PH-01 ~]# ls -l scp.sh
-rwxr-xrwx 1 root root 94 Oct 22 2012 scp.sh
文件scp.sh有下面3组权限
□rwx:文件的属主(设为登录名root)
□r-x:文件的属组 (设为组名root)
□rwx:系统上其他人
Linux文件权限码权限二进制值八进制值描述
---0000没有任何权限
--x0011只有执行权限
-w-0102只有写入权限
-wx0113有写入和执行权限
r--1004只有读取权限
r-x1015有读取和执行权限
rw-1106有读取和写入权限
rwx1117有全部权限
默认文件权限
系统管理员的的umask遮罩码: 022
创建文件:666-umask 644
创建目录:777-umask 755
普通用户的umask遮罩码:002
创建文件:666-umask 664
创建目录:777-umask 775
注:umask仅对当前shell生效,文件默认不能具有执行权限。如设置umask 023,root用户在创建文件时权限会+1,不可能出现623这种情况。
改变权限:
chmod命令用来改变文件和目录的安全性设置。
第一组字符定义了权限作用的对象:
□u代表用户;
□g代表组;
□o代表其他;
□a代表上述所有,(不写参数也代表所有)
第二组字符3个符号代表作用到设置上的权限。
□x:如果对象是目录或这其他已有的执行权限,赋予执行权限。
□s:运行是重新设置UID或GID
□t:保留文件或目录。
□u:将权限设置为跟属主一样。
□g:将权限设置为跟属组一样。
□o:将权限设置为跟其他用户一样。
选项:
-R: 递归修改权限;
--refernce=/path/to/somefile FILE
改变所属关系
chown [选项] 用户 文件
chgrp [选项] 组 文件
选项:
-R: 递归修改权限;
--reference=/path/to/somefile FILE
例子:
1、新建一个用户openstack,但不给其创建家目录;创建完成后使用su命令切换至此用户,查看其命令提示符及PATH和HOME两个环境变量的值;
# useradd -M openstack
# su - openstack
# echo $PATH
# echo $HOME
2、复制/etc/skel目录为/home/openstack;
# cp -r /etc/skel /home/openstack
3、改变/home/openstack及其内部文件的属主属组均为openstack;
# chown -R openstack:openstack /home/openstack
4、/home/openstack及其内部的文件,属组和其它用户没有任何访问权限;
# chmod -R go=--- /home/openstack
# su - openstack