分类: LINUX
2011-01-24 20:27:24
关于在linux下面进行用户的管理讨论,
首先如何在linux系统中添加一个新的用户
#useradd user1(username)
[root@localhost ~]#
[root@localhost ~]# useradd user1
[root@localhost ~]# id user1
uid=500(user1) gid=500(user1) groups=500(user1)
[root@localhost ~]#
User1这个用户就创建成功了,用useradd命令会自动的在/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow。这四个文件中添加条目。创建用户的主目录。设定用户的权限和拥有者。
使用passwd命令来设置用户的密码
#passwd user1(username)
[root@localhost ~]#
[root@localhost ~]# passwd user1
Changing password for user user1.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
密码设置成功。
在linux系统中如何删除一个用户。
可以手动的在/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow。这个四个文件中去手动删除用户信息。
也可以使用userdel命令来删除一个用户。
#userdel -r user1(username)
-r 删除用户的home目录
[root@localhost ~]#
[root@localhost ~]# userdel -r user1
[root@localhost ~]#
[root@localhost ~]# id user1
id: user1: No such user
[root@localhost ~]#
这样,user1这个用户就被删除了。
关于用户的私有组和附加组的概念
在linux系统中,我们组分为两种,一种是私有组,一种是附加组。我们知道当利用useradd这条命令去创建一个用户的时候,系统将默认的去创建一个与之同名的组。这个组就叫做用户的私有组。
[root@localhost ~]#
[root@localhost ~]# su - user1
[user1@localhost ~]$
[user1@localhost ~]$ touch abc.txt
[user1@localhost ~]$ ll
total 0
-rw-rw-r-- 1 user1 user1 0 Mar 2 14:58 abc.txt
[user1@localhost ~]$
当我们使用user1的身份去创建一个文件,这个文件的拥有组就是用户的私有组。
当然,这个用户的私有组也是可以通过命令去改变的。
用户附加组是指当一个用户有附加组,那么该用户就可以共享用户的资源,额外的得到组里面的权限。
一个用户不可以属于多个私有组,
但是一个用户可以属于多个附加组。
如何去修改用户的信息
我们可以直接修改/etc/passwd这个文件。
也可以在使用useradd命令创建用户的时候去指定用户信息。
还可以使用usermod命令来调整用户的信息。
1. 修改用户的描述
#usermod -c “test account” user1
[root@localhost ~]#
[root@localhost ~]# usermod -c "test account" user1
[root@localhost ~]#
[root@localhost ~]# cat /etc/passwd | grep user1
user1:x:500:500:test account:/home/user1:/bin/bash
[root@localhost ~]#
可以看到,这个用户就多了一个描述。
2. 修改用户的home目录
修改用户的home目录,有两种方法。可以在创建用户的时候指定,也可以使用usermod命令来调整。
现在先来看下在创建用户的时候指定home目录。
#useradd –d /home/guests/user2 user2
[root@localhost ~]#
[root@localhost ~]# cd /home/
[root@localhost home]# mkdir guests
[root@localhost home]# ls
guests user1
[root@localhost home]# useradd -d /home/guests/user2 user2
[root@localhost home]# su - user2
[user2@localhost ~]$ pwd
/home/guests/user2
[user2@localhost ~]$
OK,在创建用户时候指定用户的home目录是没有问题的。
现在在来看看使用usermod命令来调整用户的信息。
#usermod -d /home/guests/user1 user1
[root@localhost home]#
[root@localhost home]# ls
guests user1
[root@localhost home]# usermod -d /home/guests/user1/ user1
[root@localhost home]#
[root@localhost home]# su - user1
su: warning: cannot change directory to /home/guests/user1/: No such file or directory
-bash-3.2$ pwd
/home
-bash-3.2$
使用user1登录的时候,用户的/home目录和环境变量都不正确。
我们知道,在guests这目录下面其实是没有user1 user2这两个目录的。但是在创建用户的时候指定home目录,系统是可以自动生成这个用户的/home目录的。但是用户usermod命令是不会自动生成的,我们必须在/home目录下面创建一个user2的目录。然后改变权限,在去复制环境变量过来。这样user2登录的时候才会正常登录。
[root@localhost ~]# cd /home/guests/
[root@localhost guests]# ll
total 4
drwx------ 3 user2 user2 4096 Mar 2 15:25 user2
[root@localhost guests]# mkdir user1
[root@localhost guests]# ll
total 8
drwxr-xr-x 2 root root 4096 Mar 2 15:28 user1
drwx------ 3 user2 user2 4096 Mar 2 15:25 user2
[root@localhost guests]# chown user1:user1 user1
[root@localhost guests]# chmod 700 user1/
[root@localhost guests]# ll
total 8
drwx------ 2 user1 user1 4096 Mar 2 15:28 user1
drwx------ 3 user2 user2 4096 Mar 2 15:25 user2
[root@localhost guests]# su - user1
-bash-3.2$ cp /etc/skel/.* .
cp: omitting directory `/etc/skel/.'
cp: omitting directory `/etc/skel/..'
cp: omitting directory `/etc/skel/.mozilla'
-bash-3.2$ exit
[root@localhost guests]# su - user1
[user1@localhost ~]$
现在user1的home目录和环境变量就正常了。
建议在创建用户的时候就指定/home目录,否则以后去改变用户的home目录会比较麻烦。
3. 修改用户的私有组
#chmod -g user1 user2
[root@localhost ~]# usermod -g user1 user2
[root@localhost ~]#
[root@localhost ~]# id user2
uid=501(user2) gid=500(user1) groups=500(user1)
[root@localhost ~]#
将user2的私有组变成user1。
4. 修改用户的附加组
#chmod -G user2 user3
[root@localhost ~]#
[root@localhost ~]# usermod -G user2 user3
[root@localhost ~]#
[root@localhost ~]# id user3
uid=502(user3) gid=502(user3) groups=502(user3),501(user2)
[root@localhost ~]#
可以看到,user3的附加组就变成了user2。
注意usermod –G 是修改用户的附加组,而不是添加用户的附加组。添加修改可以使用下面这条命令。
# usermod -a -G user4 user3
[root@localhost ~]#
[root@localhost ~]# usermod -a -G user4 user3
[root@localhost ~]#
[root@localhost ~]# id user3
uid=502(user3) gid=502(user3) groups=502(user3),501(user2),503(user4)
[root@localhost ~]#
可以看到,user3现在就有两个附加组了。
5. 修改用户的登录名
#usermod -l students user1
[root@localhost ~]#
[root@localhost ~]# usermod -l students user1
[root@localhost ~]#
[root@localhost ~]# su - students
[students@localhost ~]$
可以看到,user1的登录名就变成了students。
6. 修改用户的shell
#usermod -s /sbin/nologin user1
[root@localhost ~]#
[root@localhost ~]# usermod -s /sbin/nologin user2
[root@localhost ~]# su - user2
This account is currently not available.
[root@localhost ~]#
User2的登录shell变成/sbin/nologin以后,用户就不可以登陆计算机,只可以登陆服务了。
7. 锁定用户
#usermod -L user3
[root@localhost ~]#
[root@localhost ~]# usermod -L user3
[root@localhost ~]# cat /etc/shadow | grep user3
user3:!$1$coBU9WM5$r0Qmp12kA15KLD5Dte9De0:14670:0:99999:7:::
[root@localhost ~]# su - user4
[user4@localhost ~]$ su - user3
Password:
su: incorrect password
[user4@localhost ~]$
可以看到,当我们锁定用户的时候,系统会自动的在/etc/shadow文件里面的密码位前面添加一个感叹号,就代表这个用户被锁定了。当然我们也可以手动添加。我们的user3的确是不能登录的。
8. 解锁用户
#usermod -U user3
[root@localhost ~]#
[root@localhost ~]# usermod -U user3
[root@localhost ~]#
[root@localhost ~]# cat /etc/shadow | grep user3
user3:$1$coBU9WM5$r0Qmp12kA15KLD5Dte9De0:14670:0:99999:7:::
[root@localhost ~]# su - user4
[user4@localhost ~]$ su - user3
Password:
[user3@localhost ~]$
解锁后,user3登录成功了。
关于用户密码的时效策略
默认情况下,用户的密码永不过期。
密码的默认设置在/etc/login.defs这个文件中都有定义。也可以修改这个文件。
这个文件是全局的配置文件,对每个用户都生效。
如何修改密码的时效策略
可以在/etc/shadow里面去修改用户密码的策略。
也可以使用chage 命令来修改用户的密码策略。
查看用户密码的时效策略
#chage -l user1(username)
[root@localhost ~]#
[root@localhost ~]# chage -l user1
Last password change : Mar 02, 2010
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change :0
Maximum number of days between password change : 99999
Number of days of warning before password expires :7
[root@localhost ~]#
这条命令可以查看用户密码的策略。
如何修改用户密码的策略,
#chage user1
[root@localhost ~]#
[root@localhost ~]# chage user1
Changing the aging information for user1
Enter the new value, or press ENTER for the default
Minimum Password Age [0]:
Maximum Password Age [99999]:
Last Password Change (YYYY-MM-DD) [2010-03-02]:
Password Expiration Warning [7]:
Password Inactive [-1]:
Account Expiration Date (YYYY-MM-DD) [1969-12-31]:
[root@localhost ~]#
它会以交互式的方式来修改用户的密码时效。
从上到下,依次解释,
密码的最小存活期,多长时间以后可以修改密码。(0为随时可以修改密码)
密码的最大存活期,密码在多长时间后过期。(99999是代表用户密码永不过期)
密码的最后一次修改时间,所有的策略以这个时间为标准
密码的警告时间,多长时间警告用户密码快过期了(默认是七天)
密码的宽限期,密码过期以后,账号多久过期。(默认是-1,密码过期了,账号就过期了。)
最后一个是账号的过期时间。
账号过期,就代表用户不可以登录了。
密码过期,只需要修改密码,用户就可以立即登录了。
关于组的管理
在组里面添加用户,
我们可以直接在/etc/group这个文件里面在组的后面去添加用户。
添加一个组
#groupadd
修改一个组
#groupmod
删除一个组
#groupdel
在linux下面用户的管理就是这么多了。