2.14 文件和目录权限chmod
# ls -l -rw-r--r--. 1 root root 0 8月 9 10:53 1.txt # 该文件权限:可读、可写、不可执行。 # 权限位末尾有'.',则表示该文件受制于selinux(防火墙) # 临时开关 # setenforce 0 #0为关闭,1为开启 # getenforce # 查看是否开关 Permissive #Permissive为关闭,Enforcing为开启
- 如果要彻底关闭selinux需要改配置文件
# vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # '强制开启' # permissive - SELinux prints warnings instead of enforcing. # '警告,不会强制开启' # disabled - No SELinux policy is loaded. # '关闭' SELINUX=enforcing # '更改=号后面的值';更改完毕再重启。然后创建新的文件就不会带'.'了。 # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
- -|rwx|r--|r--:文件权限信息;第一节为类型;第二节为所有者权限:包含可读、可写、可执行;第三节为该文件所属用户组用户对该文件的权限。第四节为其他用户对该文件的权限。
- 权限可以用数字表示:r = 4 ; w = 2 ; x = 1 ; rwx = 7 ; rw- = 6 ; --x = 1 ; rw-r--r-- = 644 ;(每3个是一个权限位,自己的权限相加。)
- rwx:w:可写;r:可读;x:可执行。(没有该权限用-表示)
- r--:表示所属用户组:可读,不可写,不可执行。
- r--:其他用户:可读,不可写,不可执行。
chmod = change mode
- chmod nnn xxx:更改权限 (只对于目录本身,其下的子目录及文件权限不会做修改)
# chmod 700 1.txt #更改1.txt权限 # ls -l 1.txt -rwx------. 1 root root 0 8月 9 10:53 1.txt #权限从rw-r--r--变更为rwx------
- chmod -R nnn xxx:更改权限,该目录及子目录和文件都做权限修改。
- 其他用法
# 这个方法不推荐。写数字多方便 # chmod u=rwx,g=rw,o=r 1.txt # ls -l 1.txt -rwxrw-r--. 1 root root 0 8月 9 10:53 1.txt # 把所有项都加上x权限 # chmod a+x 1.txt # ls -l 1.txt -rwxrwxr-x. 1 root root 0 8月 9 10:53 1.txt # chmod a-x 1.txt # ls -l 1.txt -rw-rw-r--. 1 root root 0 8月 9 10:53 1.txt
2.15 更改所有者和所属组chown
chown = change owner
- chown uuu xxx :更改文件所有者
# ls -l 1.txt # 查看原所有者 root -rwxrw-r--. 1 root root 0 8月 9 10:53 1.txt # chown longlong 1.txt # 更改所有者 # ls -l 1.txt # 查看更改后所有者 longlong -rwxrw-r--. 1 longlong root 0 8月 9 10:53 1.txt
- chown uuu:ggg xxx:更改用户和组
- chown :ggg xxx:只更改组
- 加上 -R;也会把子目录及文件的用户和组更改
# ls -l 2.txt # 查看原用户和组 -rw-r--r--. 1 root root 0 8月 9 12:14 2.txt # chown longlong:long 2.txt # 更改用户和组 # ls -l 2.txt # 查看更改后用户和组 -rw-r--r--. 1 longlong long 0 8月 9 12:14 2.txt
- 加上 -R;也会把子目录及文件的用户和组更改
- chown :ggg xxx:只更改组
chgrp = change group
- chgrp ggg xxx :更改文件所有者
# chgrp long 1.txt # 更改所属组 # ls -l 1.txt # 查看所属组 long -rwxrw-r--. 1 longlong long 0 8月 9 10:53 1.txt
2.16 umask
为什么创建目录和创建文件的权限不一样?
# umask # 查看默认权限 0022 # 默认值0022 # umask 0002 # 更改默认权限;首位0可以省略 # umask 0002 #更改后的默认权限 # 更改默认权限前后创建文件和目录的权限值对比 # mkdir bb # 创建bb目录 # touch 2.txt # 创建2.txt # ls -l -rw-r--r--. 1 root root 0 8月 9 16:17 1.txt # 更改前文件 -rw-rw-rw-. 1 root root 0 8月 9 16:19 2.txt # 更改后文件 drwxr-xr-x. 2 root root 6 8月 9 16:16 aa # 更改前目录 drwxrwxrwx. 2 root root 6 8月 9 16:19 bb # 更改后目录
- 目录必须有x权限,因为目录要执行了,才能看到目录下的子目录及文件。
- 更改前计算公式:
- 目录:777(rwxrwxrwx) - 022(----w--w-) = 755(rwxr-xr-x)
- 文件:666(rw-rw-rw-) - 022(----w--w-) = 644(rw-r--r--)
- 更改后计算公式:
- 目录:777(rwxrwxrwx) - 002(-------w-) = 775(rwxrwxr-x)
- 文件:666(rw-rw-rw-) - 002(-------w-) = 664(rw-rw-r--)
- 第二次更改umask后再创建文件和目录
# umask 0003 # 更改默认权限 # mkdir cc # 创建cc目录 # touch 3.txt # 创建3.txt # ls -l -rw-r--r--. 1 root root 0 8月 9 16:17 1.txt # 更改前的文件 -rw-rw-rw-. 1 root root 0 8月 9 16:19 2.txt # 第一次更改后的文件 -rw-rw-r--. 1 root root 0 8月 9 18:22 3.txt # 第二次更改后的文件 drwxr-xr-x. 2 root root 6 8月 9 16:16 aa # 更改前的目录 drwxrwxrwx. 2 root root 6 8月 9 16:19 bb # 第一次更改后的目录 drwxrwxr--. 2 root root 6 8月 9 18:22 cc # 第二次更改后的目录
- 更改后计算公式:
- 目录:777(rwxrwxrwx) - 003(-------wx) = 775(rwxrwxr--)
- 文件:666(rw-rw-rw-) - 003(-------wx) = 664(rw-rw-r--)
2.17 隐藏权限lsattr/chattr
- lsattr xxx:查看是否有隐藏权限。
- lsattr -R xxx:可以查看目录及所有子目录和文件的隐藏权限。
- lsattr -a xxx:可以查看目录及所有子目录和文件的隐藏权限包括隐藏的。
# lsattr -----a---------- ./aa ---------------- ./1.txt ---------------- ./bb ---------------- ./2.txt ---------------- ./cc ---------------- ./3.txt
# lsattr -R -----a---------- ./aa ./aa: ---------------- ./aa/11.txt ---------------- ./aa/11_txt.swp ---------------- ./aa/4913 ---------------- ./aa/11.tx~ ---------------- ./aa/22_txt.swp ---------------- ./aa/22.txt -----a---------- ./aa/33.txt ---------------- ./aa/33_txt.swp ---------------- ./aa/5036 ---------------- ./aa/33.tx~ ---------------- ./1.txt ---------------- ./bb ./bb: ---------------- ./2.txt ---------------- ./cc ./cc: ---------------- ./3.txt
- chattr +i xxx:增加一个隐藏权限。给文件或目录增加i权限(谁都无法增删改,但是可以复制该目录),把其变成只读。(可以修改目录下原有文件内容和复制该文件,不能增加、删除、移动、重命名文件。)
- chattr +a xxx:给文件或目录增加a权限;该权限只能复制该文件和追加内容,不能删除和更改文件内容及重命名文件名。(目录下只能增加文件和复制目录,不能删除、移动、重命名文件)。
- 可以touch该文件。但是只更改创建时间,内容不变。
- chattr -i xxx:删除一个隐藏权限。给文件或目录删除i权限
# tree . ├── aa │ ├── 1.txt │ └── 2.txt ├── bb │ ├── 11.txt │ └── 22.txt └── cc ├── a.txt └── b.txt # chattr +i aa/ # 给aa目录增加i权限 # chattr +a bb/ # 给bb目录增加a权限 # chattr +i cc/a.txt # 给a文件增加i权限 # chattr +a cc/b.txt # 给b文件增加a权限 # lsattr -R ----i----------- ./aa ./aa: ---------------- ./aa/1.txt ---------------- ./aa/2.txt -----a---------- ./bb ./bb: ---------------- ./bb/11.txt ---------------- ./bb/22.txt ---------------- ./cc ./cc: ----i----------- ./cc/a.txt -----a---------- ./cc/b.txt # mv aa dd # i权限的aa目录无法重命名 mv: 无法将"aa" 移动至"dd": 不允许的操作 # mv aa/1.txt aa/3.txt # i权限的aa目录下的文件无法重命名 mv: 无法将"aa/1.txt" 移动至"aa/3.txt": 权限不够 # mv aa/1.txt cc/ mv: 无法将"aa/1.txt" 移动至"cc/1.txt": 权限不够 # aa目录下的文件无法移动 # vi aa/1.txt # 可以修改aa目录下文件的内容 # cat aa/1.txt qq # rm aa/1.txt # 不可以删除aa目录下的文件 rm:是否删除普通文件 "aa/1.txt"?y rm: 无法删除"aa/1.txt": 权限不够 # mkdir aa/aa # 不可以在aa目录下创建目录 mkdir: 无法创建目录"aa/aa": 权限不够 # touch aa/3.txt # 不可以在aa目录下创建文件 touch: 无法创建"aa/3.txt": 权限不够 # rm bb/11.txt # 不可以删除a权限的bb目录下的文件 rm:是否删除普通空文件 "bb/11.txt"?y rm: 无法删除"bb/11.txt": 不允许的操作 # mv bb/11.txt cc/d.txt # a权限的bb目录下的文件无法移动 mv: 无法将"bb/11.txt" 移动至"cc/d.txt": 不允许的操作 # mv bb/11.txt bb/33.txt # a权限的bb目录下的文件无法重命名 mv: 无法将"bb/11.txt" 移动至"bb/33.txt": 不允许的操作 # touch bb/33.txt # 可以在bb目录下创建文件 # lsattr -R ----i----------- ./aa ./aa: ---------------- ./aa/1.txt ---------------- ./aa/2.txt -----a---------- ./bb ./bb: ---------------- ./bb/11.txt ---------------- ./bb/22.txt ---------------- ./bb/33.txt ---------------- ./cc ./cc: ----i----------- ./cc/a.txt -----a---------- ./cc/b.txt
- chattr +a xxx:给文件或目录增加a权限;该权限只能复制该文件和追加内容,不能删除和更改文件内容及重命名文件名。(目录下只能增加文件和复制目录,不能删除、移动、重命名文件)。