linux的用户

用户 和 组

特权用户:root uid 为0
系统用户:用来作为程序的所属用户1~999uid
普通用户:UID1000+

在登录的过程中,用户输入用户名,系统会在passwd和shadow文件中找到uid和密码,通过后登陆成功。

UID才是识别用户的唯一标识,位32位无符号整数,比如root用户,在系统中对于超级管理账号的定义就是UID为0 。虽然并没有明令禁止创建uid为0 的其他账号,但是会造成混乱的后果影响系统的安全性,最好不要这么做。

另外有一个特殊的用户“nobody”这是一个不能登陆的账户,在系统中存在,因为Apache等服务要用到这个账号进行操作,他本身并不是特权账户,权限低,安全性高。uid为99.

相关信息:

/etc/passwd:nobody:x:99:99:Nobody:/:/sbin/nologin
/etc/passwd:nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
/etc/group:nobody:x:99:
/etc/group:nfsnobody:x:65534:

用户的组类似角色,都是用来管理用户权限的方法。组内的用户会继承组的权限,另外在创建文件的过程中,文件默认的属主是创建这个文件的用户,文件的属组是创建这个文件的用户的主要组。

比如:用户user1 的主要组是user2.
他创建出的文件信息: -rw-r–r-- user1 user2 … filename.txt

7个文件与用户相关:
/etc/passwd 用户文件
/etc/shadow 用户密码文件
/etc/group 用户组文件
/etc/gshadow 用户组密码文件
/etc//default/useradd 添加用户默认选项
/etc/skel/ 用户骨架目录
/etc/login.defs 密码套件配置

文件内容的详细说明:

passwd 文件中的一条 :

root : x : 0 : 0 : root : /root : /bin/bash
root:用户名
x:密码占位符,真正的密码存放在shadow文件中
0:用户ID
0:组ID
root:注释性描述如存放全名等等
/root:用户主目录(home目录)
/bin/bash:用户所使用的shell
  • /bin/bash 可以正常使用的用户,可以使用资源
  • /sbin/nologin 禁止登录的用户
    This account is currently not available. 默认会提示这个
    虽然不能登录,但是可以被调用而访问系统资源
    /etc/nologin.txt也可以新建文件写入自定义的不能登陆的提示的信息
  • /bin/false 最严格的禁止登录选项,不能登录,也不会有任何提示

shadow文件中的一条 :

root:$6$YHs7VaeF4d/F58F.$.zo00Ms6cUBqCpjbnEkgSRxmCU/j5Kb9j5k79PW81JeoJaMWpMndc7I2jdYaIf399pVcRAVT/nsEaEY4MvyYM/::0:99999:7:::

root:组名
那一长串:被加密的口令,加密算法用的是MD5
第一个空:上一次修改密码的时间
0:两次修改密码之间最少的天数
99999:两次修改密码之间最多的天数
7:提前多少天提醒用户密码即将到期
第二个空:密码到期后多少天禁用密码,达到最大作废期限,到账号作废之前要等待的时间。
第三个空:账号过期的日期,为空则永不作废
第四个空:保留字段,目前为空。

group文件中的一条:

dba:x:1000:user1,user2 
dba:组名
x:密码占位符。同样的,密码真正存放在gshadow文件。
1000:组的ID gid.
user1,user2:这是两个用户,user1和user2表示这个组里有2个用户。

**注:group文件显示的是附属组信息,用户的主要组为这个组的用户不在其中显示。栗子: 创建user1 用户 时会创建user1组,user1用户的主要组是user1,所以在group文件中user1 组后边没有user1 用户,而如果添加附加组的话,会显示在group文件的后边。 **

gshadow文件中的一条,但是这个文件基本不会用到。

dba:!::oracle
dba:组的名字
!:组的密码,这个是没设置密码,设置密码后显示的是加密后的。不过一般都不会设置组的密码。
空:组的管理者
oracle:这个组的成员

/etc/default/useradd

# useradd defaults file
GROUP=100      //如果创建用户时不指定组,就会默认在这个组中
HOME=/home     //家目录
INACTIVE=-1    //密码失效时间
EXPIRE=        //到期时间
SHELL=/bin/bash    //默认shell
SKEL=/etc/skel    //骨架目录
CREATE_MAIL_SPOOL=yes    

/etc/skel/目录。这个目录下有3个隐藏文件,称为骨架,有这几个就有用户的环境,看名字就知道是环境设置的那个文件,logout里面是空的,只有在退出时才会执行。如果用户的家目录误删除,不能登陆和使用shell,可以把这几个东西拷贝到家目录下,就可以使用了。

[root@www 1106shell]# cd  /etc/skel/
[root@www skel]# ls
[root@www skel]# ls -a
.  ..  .bash_logout  .bash_profile  .bashrc

创建用户时会在passwd,shadow,group,这3各文件中各创建一条记录。(如果不指定组之类的东西的话)**不光只创建用户还会创建一个和用户名字相同的组。**并且创建用户的名字也有规定,见下文相应指令后

所以删除用户是最好使用指令删除,而不是直接修改passwd文件,那样不会删除另外文件中的记录,另外文件的记录就会变成垃圾记录。

另外在创建用户时会在本地发送一个邮件。存在mail目录中。

孤儿文件:所有用户都有用户、用户组,但是将用户和用户组删除后,文件依旧存在,这就是孤儿文件,比如home的用户文件,比如mail的文件。

那么为什么创建用户不指定这些时为什么会这么做呢?

这些都在/etc/login.defs文件中有所体现。

MAIL_DIR	/var/spool/mail
PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_MIN_LEN	5
PASS_WARN_AGE	7
UID_MIN                  1000
UID_MAX                 60000
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME	yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 

这些默认的内容自然也是可以修改的。

关于用户的几个命令

**groupadd name 选项 **

-f, --force 如果组已经存在则成功退出
并且如果 GID 已经存在则取消 -g
-g, --gid GID 为新组使用 GID
-h, --help 显示此帮助信息并推出
-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
-o, --non-unique 允许创建有重复 GID 的组
-p, --password PASSWORD 为新组使用此加密过的密码
-r, --system 创建一个系统账户
-R, --root CHROOT_DIR chroot 到的目录

groupmod 选项 name

-g, --gid GID 将组 ID 改为 GID
-h, --help 显示此帮助信息并推出
-n, --new-name NEW_GROUP 改名为 NEW_GROUP
-o, --non-unique 允许使用重复的 GID
-p, --password PASSWORD 将密码更改为(加密过的) PASSWORD
-R, --root CHROOT_DIR chroot 到的目录

groupdel name

 -h, --help  display this help message and exit
 -R, --root CHROOT_DIR    directory to chroot into

useradd name 选项

注:设定用户名时有一些规定,长度不超过32字符,字符集为a-z_-0-9
首字符a-z_。

-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录;
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限;
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录;
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s:指定用户登入后所使用的shell;
-u:指定用户id。

usermod 选项 name

-c<备注>:修改用户帐号的备注文字
-d<登入目录>:修改用户登入时的目录
-e<有效期限>:修改帐号的有效期限
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号
-g<群组>:修改用户所属的群组
-G<群组>;修改用户所属的附加群组
-l<帐号名称>:修改用户帐号名称
-L:锁定用户密码,使密码无效, 这个锁定的原理实际上是在用户的shadow文件的密码前加一个!,这样密码就不匹配了,所以登录不进去。
-s:修改用户登入后所使用的shell
-u:修改用户ID
-U:解除密码锁定

userdel name

  -h, --help 看帮助
  -r, --remove  删除home文件mail spool文件
  -R, --root CHROOT_DIR CHROOT_DIR chroot 到的目录
  -Z, --selinux-user  删除关联的用户

passwd既是文件也是指令,作为指令时设置密码用

passwd 选项 name

-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码;
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。

gpasswd 附加组

   -a, --add USER               将用户添加到组
  -d, --delete USER             删除组中用户
  -h, --help                    查看帮助
  -Q, --root CHROOT_DIR         要chroot到的目录
  -r, --delete-password         删除组的密码
  -R, --restrict                将对组的访问限制为其成员
  -M, --members USER,...        设置组成员列表
  -A, --administrators ADMIN,...设置组的管理员列表

chage

 -d, --lastday LAST_DAY 将上次密码更改日期设置为最后一天
  -E, --expiredate EXPIRE_DATE 将帐户过期日期设置为过期日期 
  -h, --help 查看帮助
  -I, --inactive INACTIVE 过期后将密码设置为不活动
  -l, --list 显示帐户帐龄信息 
  -m, --mindays MIN_DAYS 设置密码前的最小天数
  -M, --maxdays MAX_DAYS 设置密码前的最大日数
  -R, --root CHROOT_DIR 要chroot到的目录
  -W, --warndays WARN_DAYS 将过期警告天数设置为警告天数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值