Chmod计算器 - Unix文件权限计算器 在线
用交互式矩阵计算Linux/Unix文件权限。在八进制(755、644)和符号(rwxr-xr-x)chmod格式间转换。
权限网格
| 读取 (r) | 写入 (w) | 执行 (x) | # | |
|---|---|---|---|---|
| 所有者 (u) | 7 | |||
| 组 (g) | 5 | |||
| 其他 (o) | 5 | |||
| 特殊 | SetUID | SetGID | Sticky |
chmod 命令
$ chmod 755 filename
安全
注意
其他用户有执行权限或组有写入+执行权限
ls -l 预览
$ ls -l
-rwxr-xr-x 1 user group 4096 Feb 13 10:00 filename
常用预设
常见问题
chmod是什么,有什么用?
chmod(change mode)是Unix/Linux命令,用于更改文件和目录的访问权限。它控制谁可以读取、写入或执行文件。权限针对三个用户类别设置:文件所有者(用户)、组和所有其他用户。
如何使用这个chmod计算器工具?
点击权限网格中的复选框来切换所有者、组和其他的各项权限。或者,在数字输入字段中输入八进制值(例如755)。工具会即时在八进制表示法、符号表示法和可视网格之间进行转换。
我的数据安全吗?会发送到服务器吗?
绝对安全。此chmod计算器使用客户端JavaScript在浏览器中100%运行。没有任何数据会传输到任何服务器。
八进制和符号表示法有什么区别?
八进制表示法使用数字(例如755),每个数字分别代表所有者、组和其他的权限。每个数字是读取(4)、写入(2)和执行(1)的总和。符号表示法使用字母(例如rwxr-xr-x),r=读取,w=写入,x=执行,-=无权限。
setuid、setgid和sticky bit有什么作用?
这些是修改文件和目录行为的特殊权限位。SetUID(4000)使可执行文件以文件所有者的权限运行。SetGID(2000)使文件以组的权限运行。Sticky Bit(1000)防止目录中的用户删除不属于自己的文件。
Web服务器文件应该使用什么chmod值?
对于大多数Web服务器:常规文件使用644(rw-r--r--),目录和可执行脚本使用755(rwxr-xr-x)。生产服务器上绝不要使用777。
为什么chmod 777很危险?
chmod 777授予所有人读取、写入和执行权限。这意味着任何用户或进程都可以修改或删除文件。在Web服务器上,这可能允许攻击者注入恶意代码。请使用仍允许应用程序正常运行的最严格权限。
代码示例
// Unix file permission calculator in JavaScript
const PERM = {
OWNER_R: 0o400, OWNER_W: 0o200, OWNER_X: 0o100,
GROUP_R: 0o040, GROUP_W: 0o020, GROUP_X: 0o010,
OTHER_R: 0o004, OTHER_W: 0o002, OTHER_X: 0o001,
SETUID: 0o4000, SETGID: 0o2000, STICKY: 0o1000,
};
function octalToSymbolic(octal) {
const chars = [];
chars.push(octal & PERM.OWNER_R ? 'r' : '-');
chars.push(octal & PERM.OWNER_W ? 'w' : '-');
if (octal & PERM.SETUID) {
chars.push(octal & PERM.OWNER_X ? 's' : 'S');
} else {
chars.push(octal & PERM.OWNER_X ? 'x' : '-');
}
chars.push(octal & PERM.GROUP_R ? 'r' : '-');
chars.push(octal & PERM.GROUP_W ? 'w' : '-');
if (octal & PERM.SETGID) {
chars.push(octal & PERM.GROUP_X ? 's' : 'S');
} else {
chars.push(octal & PERM.GROUP_X ? 'x' : '-');
}
chars.push(octal & PERM.OTHER_R ? 'r' : '-');
chars.push(octal & PERM.OTHER_W ? 'w' : '-');
if (octal & PERM.STICKY) {
chars.push(octal & PERM.OTHER_X ? 't' : 'T');
} else {
chars.push(octal & PERM.OTHER_X ? 'x' : '-');
}
return chars.join('');
}
// Example usage
const perm = 0o755;
console.log(`Octal: ${perm.toString(8)}`);
console.log(`Symbolic: ${octalToSymbolic(perm)}`);
console.log(`Command: chmod ${perm.toString(8)} myfile.sh`);