Oh MyUtils

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`);

相关工具