曾经的一个项目中用到需要Modbus TCP协议的502端口,但是我们使用的时候是非root用户,没有权限访问1024以下的端口。最简单的方法是将通讯的端口自定义为大于502的端口,但凑巧的是对方没有将自定义端口的功能调出来(就是懒的),就只能通过修改用户权限达到访问1024以下端口的目的。
在命令终端中输入 su root
$ su rootpassword:$
分配用户权限,可以进入需要访问1024以内端口的程序所在的文件夹,输入以下指令,输入后该文件就可以调用1024以内端口了。
/*filename为可执行程序的文件名, path为文件路径*/# setcap cap_net_bind_service=+ep /path/filename
Capabilities是从 Linux2.2 内核之后开始引入的,旨在打破了系统中超级用户与普通用户的概念,由普通用户也可以做只有超级用户可以完成的工作。
Capabilites 作为线程(Linux 并不真正区分进程和线程)的属性存在,每个功能组都可以独立启用和禁用。其本质上就是将内核调用分门别类,具有相似功能的内核调用被分到同一组中。
在执行特权操作时,如果线程的有效身份不是 root,就去检查其是否具有该特权操作所对应的 capabilities,并以此为依据,决定是否可以执行特权操作。Capabilities 可以在进程执行时赋予,也可以直接从父进程继承。
| capability 名称 | capability 描述 |
|---|---|
| CAP_AUDIT_CONTROL | 启用和禁用内核审计;改变审计过滤规则;检索审计状态和过滤规则 |
| CAP_AUDIT_READ | 允许通过 multicast netlink 套接字读取审计日志 |
| CAP_AUDIT_WRITE | 将记 |
生成私钥:
openssl genrsa -out server.key 2048 //算法生成私钥openssl rsa -text -in server.key //查看私钥内容
创建公钥:
openssl req -new -key server.key -out server.csr //创建公钥openssl req -text -in server.csr -noout //查看公钥
创建公钥时输入内容说明:
Country Name (2 letter code) []:CN // 输入国家代码,中国填写 CNState or Province Name (full name) []:Tianjin // 输入省份Locality Name (eg, city) []:Tianjin // 输入城市Organization Name (eg, company) []:company // 输入组织机构(或公司名)Organizational Unit Name (eg, section) []:section // 输入机构部门Common Name (eg, fully qualified host name) []:*.abc.com // 输入域名Email Address []:emai