设为首页 收藏本站
查看: 385|回复: 0

[经验分享] Centos Linux下useradd 命令uid计算问题

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-5-28 10:32:11 | 显示全部楼层 |阅读模式
  生产环境应用服务器推送一个账号的时候发现报错,账号UID已存在无法创建,查看/etc/passwd中无相关UID信息,想到服务器开启了ldap服务,getent passwd 查看发现有ldap用户占用相关uid。    默认情况下,ldap新增的用户和系统本地的用户uid是混在一起,本来设想着给ldap中添加一个uid比较大的用户,每次ldap添加用户的时候能和本地账号的uid明显区分开来。于是,在ldap数据库每个组中增加了一个uid为30000的用户。再往ldap数据库中增加用户的时候,发现新增的用户的uid已经为30001了。

  本以为就此就ok了,感觉还是验证下本地创建账号是否正常,然后使用useradd在本地创建了一个账号,发现创建的账号的uid为30002,没有像如期的那样uid为2004。


修改 /etc/nsswitch.conf  将ldap数据库禁用:
1
2
3
4
5
6
7
8
9
10
11
# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd:    db files nisplus nis
#shadow:    db files nisplus nis
#group:     db files nisplus nis
#passwd:     files ldap
passwd:     files
shadow:     files ldap
group:      files ldap



再次创建新用户测试,发现现在创建的用户的uid为2004。


useradd命令的声明,CAVEATS
       You may not add a user to a NIS or LDAP group. This must be performed
       on the corresponding server.

       Similarly, if the username already exists in an external user database
       such as NIS or LDAP, useradd will deny the user account creation
       request.

查看了下useradd命令的帮助信息:
有关uid的解释,
-u, --uid UID
           The numerical value of the user′s ID. This value must be unique, unless the -o option is used. The value must be non-negative. The default is to use the smallest ID value
greater than 999 and greater than every other user. Values between 0 and 999 are typically reserved for system accounts.
系统在使用useradd命令创建用户的时候,如果没有指定uid的情况,默认是使用超过999,且大于现有所有账号的最小uid。

当然也可以通过 -o参数指定非唯一uid,这样创建的用户会和其他用户公用一个uid,相当于这两个账号是一个账号。
useradd -o -u 503 test.dianping
当然使用-o参数是有一定的风险的,建议每个账号还是有自己唯一的uid。

在找资料解决,在添加ldap用户和 linux local users时分别使用不同uid段,比如本地账号使用10000以下的uid,ldap用30000以上的uid,10000到30000之间的uid作为保留。


在linux中存在一个文件允许限制我们通过useradd命令创建uid时的最大和最小值范围:


/etc/login.defs
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN                   500
UID_MAX                 60000

文件修改后:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/etc/login.defs 是设置用户帐号限制的文件。该文件里的配置对root用户无效。
如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs
# *REQUIRED* required
#  Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR      Maildir
MAIL_DIR        /var/spool/mail
#创建用户时,要在目录/var/spool/mail中创建一个用户mail文件
#MAIL_FILE      .mail
# Password aging controls:
#
#       PASS_MAX_DAYS   Maximum number of days a password may be used.
#       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
#       PASS_MIN_LEN    Minimum acceptable password length.
#       PASS_WARN_AGE   Number of days warning given before a password expires.
#
PASS_MAX_DAYS   99999
#密码最大有效期
PASS_MIN_DAYS   0
#两次修改密码的最小间隔时间
PASS_MIN_LEN    5
#密码最小长度,对于root无效
PASS_WARN_AGE   7
#密码过期前多少天开始提示
#
# Min/max values for automatic uid selection in useradd
#创建用户时不指定UID的话自动UID的范围
UID_MIN                   500
#用户ID的最小值
UID_MAX                 10000
#用户ID的最大值
#
# Min/max values for automatic gid selection in groupadd
#自动组ID的范围
GID_MIN                   500
#组ID的最小值
GID_MAX                 10000
#组ID的最大值
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD    /usr/sbin/userdel_local
#当删除用户的时候执行的脚本
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME     yes
#使用useradd的时候是够创建用户目录
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK           077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
#用MD5加密密码





这样设置以后,本地系统创建账号的uid默认为500到10000之间,而ldap账号可以在添加一个uid为30000的账号后将ldap数据库中每个组最大的uid取出来,然后最大uid的基础上每次增加1.



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-19815-1-1.html 上篇帖子: CentOS rsyslog 服务器与客户端搭建 下篇帖子: Centos6.3不能使用yum install安装gcc编辑器解决办法 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表