chmod 计算器
在八进制(755)、字母(rwxr-xr-x)、ls -l 和 chmod 子句之间转换 Unix 文件权限,带复选框网格以及 setuid、setgid、sticky 位。
代码示例
可直接复制到你自己的项目中。每个示例只使用该语言的标准库,因此无需安装任何东西。
const mode = parseInt('755', 8)
const letters = [...'rwxrwxrwx'].map((letter, i) => (mode & (0o400 >> i) ? letter : '-'))
console.log(letters.join(''))功能
在八进制(755)、权限字母(rwxr-xr-x)、一行 ls -l 和 chmod 子句(u=rwx,g=rx,o=rx)之间转换 Unix 文件权限。勾选网格,所有写法都会随之更新,包括 setuid、setgid 和 sticky 位。
使用方法
- 用任意写法输入模式,或勾选复选框。
- 在每种写法中查看,并修改其中任意一个。
- 复制转换后的值,或选择文件类型查看目录或链接的
ls -l行。
示例
755 即 rwxr-xr-x:所有者可以读、写和执行,其他人可以读和执行。644 是文件常用的 rw-r--r--,1777 是像 /tmp 这样的共享目录 rwxrwxrwt。
须知
- 各位数字是所有者、组和其他所有人的读 4、写 2、执行 1 之和。前面再加第四位可加入 setuid 4、setgid 2 和 sticky 1。
- 用字母表示时,特殊位占据执行位的位置:setuid 和 setgid 用
s,sticky 用t。大写的S或T表示设置了特殊位但没有执行位。 u=rwx,g=rx,o=rx这样的子句会完整设置每个类别,没有被任何子句提到的类别没有权限。u+x这样的相对写法在这里不读取,因为它取决于文件当前的模式。
chmod 里的数字是什么意思?
每一位是某一类用户的读(4)、写(2)和执行(1)之和:第一位是所有者,第二位是组,第三位是其他所有人。所以 755 表示所有者可以读、写和执行,其他人可以读和执行。前面再加第四位可加入 setuid(4)、setgid(2)和 sticky(1)。
常见问题
setuid、setgid 和 sticky 位是什么?
setuid 和 setgid 让程序以其所有者或所属组的权限运行,而不是以启动者的权限运行。在目录上,setgid 让新文件继承该组,sticky 位(如 /tmp)只允许文件所有者删除文件。用字母表示时,它们是执行位置上的 s 或 t;大写的 S 或 T 表示未设置执行位。
为什么不建议用 777?
这样系统上的每个用户都能修改或替换该文件。只给所有者所需的权限,给组或其他人必要的访问即可:脚本通常用 755,私有文件用 600。
这个工具会把我的输入发送到别处吗?
不会。一切都在你的浏览器中完成。你输入的内容不会发送到我们的服务器。