TCSH、Perl、Python脚本修改文件权限
一、常用的Linux文件权限
1.1.权限显示
- 通常从左到右用9个字母显示,每3个字母分为一组,依次表示文件所有者的权限、同组用户的权限、其他用户的权限
- 读取的权限等于4,用r表示;写入的权限等于2,用w表示;执行的权限等于1,用x表示
- 通过4、2、1的组合,得到以下几种权限:0(没有权限);4(读取权限);5(4+1 | 读取+执行);6(4+2 | 读取+写入);7(4+2+1 | 读取+写入+执行)
No. | 数字描述 | 字母描述 |
1 | 444 | r--r--r-- |
2 | 600 | rw------- |
3 | 644 | rw-r--r-- |
4 | 666 | rw-rw-rw- |
5 | 700 | rwx------ |
6 | 744 | rwxr--r-- |
7 | 755 | rwxr-xr-x |
8 | 777 | rwxrwxrwx |
1.2.使用案例
- 通常使用最多的是755,下面以755为例说明:
1-3位7等于4+2+1,rwx,所有者具有读取、写入、执行权限;
4-6位5等于4+1+0,r-x,同组用户具有读取、执行权限但没有写入权限;
7-9位5,同上,也是r-x,其他用户具有读取、执行权限但没有写入权限。
1.3.权限变更
- 直接使用chmod命令来改变文件权限
chmod 755 file_name
chmod u+rwx file_name
- 递归修改文件权限
chmod -R 755 director_name
二、Perl脚本修改文件权限
2.1.直接调用system函数
#!/usr/bin/perl -w
use warning;
use static;
system("chmod 755 file_name");
2.2.Perl获取当前路径
#!/usr/bin/perl -w
use warning;
use static;
use Cwd;
$run_dir = getcwd();
三、Python3脚本修改文件权限
3.1.使用stat模块
import os
import sys
import stat
os.chmod('abc', stat.S_IREAD)
os.chmod('abc', stat.S_IREAD+stat.S_IWOTH)
os.chmod(outputpath, stat.S_IRWXO + stat.S_IRWXG + stat.S_IRWXU)
os.chmod("/tmp/foo.txt", stat.S_IRWXU|stat.S_IRWXG|stat.S_IRWXO) # mode:777
3.3.stat模块用法总结
No. | 方法 | 描述 |
1 | stat.S_IREAD | Read by owner. 对于拥有者读的权限 |
2 | stat.S_IWRITE | Write by owner. 对于拥有者写的权限 |
3 | stat.S_IEXEC | Execute by owner. 对于拥有者执行的权限 |
4 | stat.S_IRWXU | Read, write, and execute by owner. 对于拥有者读写执行的权限 |
5 | stat.S_IRUSR | Read by owner. 对于拥有者读的权限 |
6 | stat.S_IWUSR | Write by owner. 对于拥有者写的权限 |
7 | stat.S_IXUSR | Execute by owner. 对于拥有者执行的权限 |
8 | stat.S_IRWXG | Read, write, and execute by group. 对于同组的人读写执行的权限 |
9 | stat.S_IRGRP | Read by group. 对于同组读的权限 |
10 | stat.S_IWGRP | Write by group. 对于同组写的权限 |
11 | stat.S_IXGRP | Execute by group. 对于同组执行的权限 |
12 | stat.S_IRWXO | Read, write, and execute by others. 对于其他组读写执行的权限 |
13 | stat.S_IROTH | Read by others. 对于其他组读的权限 |
14 | stat.S_IWOTH | Write by others. 对于其他组写的权限 |
15 | stat.S_IXOTH | Execute by others. 对于其他组执行的权限 |
3.3.Python3获取当前路径
#!/usr/bin/env python3
import sys
import os
os.getcwd() #然后就可以看见结果了