Linux中修改用户UID和组GID的方法及zabbix_agentd启动时IPC和共享内存段问题

一、Linux中修改用户UID和组GID的方法:
命令:
1、修改foo用户的uid
usermod -u 2005 test #其中2005是指定的uid test是用户

2、修改foo组的gid
groupmod -g 3000 test


二、Linux中修改用户UID和组GID的方法:

问题1:
zabbix_agentd [16428]: cannot recreate Zabbix semaphores for IPC key 0x7a026869 Semaphore ID 4294967295: [22] Invalid argument

查看KEY为0x7a026869的信号队列:
[root@db02 zabbix]# ipcs 0x7a026869
--------- 消息队列 -----------
键 msqid 拥有者 权限 已用字节数 消息

------------ 共享内存段 --------------
键 shmid 拥有者 权限 字节 nattch 状态
0x6c026869 98304 admin 600 657056 6

--------- 信号量数组 -----------
键 semid 拥有者 权限 nsems
0x7a026869 196608 admin 600 13

原因:
我这里zabbix_agentd启动的时候配置的属主属组是zabbix,而之前估计是启动的时候用了admin身份,导致这里的信号量数组和共享内存段的属主都是admin,可能是因为某种原因非正常关闭了zabbix_agentd,导致这里的内容没有关闭,但是每个进程启动的时候其key值是固定的,所以当我修改了zabbix_agentd启动属主属组的时候,它没有权限删除和重新创建信号量数组,从而出现了无法启动的问题;

解决办法(两种方法都已验证):

方法1:删除信号量数组
ipcrm -S 0x7a026869
然后启动zabbix agentd就可以了。

方法2:直接修改zabbix_agentd的启动属主为admin即可正常启动。
[root@db02 admin]# ipcs 0x7a026869
--------- 消息队列 -----------
键 msqid 拥有者 权限 已用字节数 消息

------------ 共享内存段 --------------
键 shmid 拥有者 权限 字节 nattch 状态
0x6c026869 98304 zabbix 600 657056 6

--------- 信号量数组 -----------
键 semid 拥有者 权限 nsems
0x7a026869 196608 zabbix 600 13

问题2:
zabbix_agentd [19609]: cannot attach to existing shared memory: [13] Permission denied
19609:20170714:101213.480 cannot allocate shared memory for collector

查看共享内存段:
[root@db02 zabbix]# ipcs -m
------------ 共享内存段 --------------
键 shmid 拥有者 权限 字节 nattch 状态
0x6c026869 0 admin 600 657056 0

[root@db02 zabbix]# ipcrm -m 0x6c026869
ipcrm: 解析参数失败: '0x6c026869'

删除共享内存(注意,这里对共享内存段的操作要使用shmid值):
[root@db02 zabbix]# ipcrm -m 0

原文地址:https://www.cnblogs.com/xiaoyaojinzhazhadehangcheng/p/13953907.html