http://blog.csdn.net/pipisorry/article/details/39533627

linux下添加删除修改用户

新增与移除使用者

新增用户

1、使用命令 useradd

Note: 这些命令都需要有sudo权限的用户或者root用户,有时使用sudo用户更好,root创建新用户会有奇怪问题:如键盘上下、tab按键变成输入乱码,但也可以解决。

useradd
功能说明:建立用户帐号。
语  法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ]
补充说明:useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。
参  数:
-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。 
-d<登入目录>  指定用户登入时的启始目录。
-D  变更预设值.
-e<有效期限>  指定帐号的有效期限。
-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
-g<群组>  指定用户所属的群组。
-G<群组>  指定用户所属的附加群组
-m  自动建立用户的登入目录。
-M  不要自动建立用户的登入目录。
-n  取消建立以用户名称为名的群组.
-r  建立系统帐号。
-s   指定用户登入后所使用的shell。
-u  指定用户ID。

例:sudo useradd -m dapi——创建用户dapi(ubuntu默认不建立新建用户主文件夹,所以要强制建立,否则新账户无法登录成功
    useradd –e 12/30/2014 pipi2——创建pipi2,指定有效期2014-12-30到期

    用户的缺省UID从1000向后顺序增加,1000以下作为系统保留账号,可以指定UID,

例:useradd –u 1600 pipi3

在创建用户时,需要为新建用户指定一用户组,如果不指定其用户所属的工作组,自动会生成一个与用户名同名的工作组。

创建用户dapi的时候指定其所属工作组pipi,例:useradd -g pipi dapi

2、使用 passwd 命令为新建用户设置密码/修改用户密码

# passwd [–stdin] [帐号名称]  #所有人均可使用来改自己的密码
# passwd [-l] [-u] [–stdin] [-S]  [-n 日数] [-x 日数] [-w 日数] [-i 日期] 帐号 #root 功能
选项与参数:
–stdin :可以通过来自前一个管线的数据,作为密码输入,对 shell script 有帮助!
-l  :是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使密码失效;
-u  :与 -l 相对,是 Unlock 的意思!
-S  :列出密码相关参数,亦即 shadow 文件内的大部分信息。
-n  :后面接天数,shadow 的第 4 字段,多久不可修改密码天数
-x  :后面接天数,shadow 的第 5 字段,多久内必须要更动密码
-w  :后面接天数,shadow 的第 6 字段,密码过期前的警告天数
-i  :后面接“日期”,shadow 的第 7 字段,密码失效日期

例:sudo passwd dapi
注意:没有设置密码的用户不能使用

linux下修改用户密码:passwd username

只要有权限就可以修改,当然自己的密码是可以这样修改的。

3、命令 usermod 修改用户账户

usermod
功能说明:修改用户帐号。
语  法:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s ][-u ][用户帐号]
补充说明:usermod可用来修改用户帐号的各项设定。
参  数:
-c<备注>  修改用户帐号的备注文字。
-d登入目录>  修改用户登入时的目录。
-e<有效期限>  修改帐号的有效期限。
-f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。
-g<群组>  修改用户所属的群组。
-G<群组>  修改用户所属的附加群组。
-l<帐号名称>  修改用户帐号名称。
-L  锁定用户密码,使密码无效。
-s  修改用户登入后所使用的shell。
-u  修改用户ID。
-U  解除密码锁定。

——————————————————-

例:将用户 user1的登录名改为  u1,
usermod –l u1 user1
例:将用户 dapi 改到 pipi组中,
usermod –g pipi dapi
例:将用户 user1 目录改为/users/us1
usermod –d /users/us1 user1

4、删除用户账户userdel

功能说明:删除用户帐号。删除成功后,系统无任何提示。
目的在删除使用者的相关数据,而使用者的数据有:
    使用者帐号/密码相关参数:/etc/passwd, /etc/shadow
    使用者群组相关参数:/etc/group, /etc/gshadow
    使用者个人文件数据: /home/username, /var/spool/mail/username..
指令语法# userdel [-r] username
-r  :连同使用者的主文件夹也一起删除

Note:

1 userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。如果只删除用户,之后再添加这个用户,就要修改之前用户目录的权限,因为删除用户后,用户目录的权限都转交给了1001用户(系统自动修改的)。

2 ubuntu删除用户同样是在终端下操作的,需要注意的是,如果要删除的用户当前已登陆,是删除不掉的,提示”userdel: user XXX is currently logged in“必须注销掉当前用户切换为另一个用户下,才能删除。举个例子,刚才我新建立了一个用户为 ddpp 的用户,例如我现在用用户 ddpp 登陆了桌面,此时如果我想删除 ddpp 这个用户,是删除不掉的。正确的操作方法是,我注销掉 ddpp,然后使用 root 登陆到桌面,再删除 ddpp 即可。

例:删除用户user2
userdel user2
例:删除用户 user3,同时删除他的工作目录
userdel –r user3

[root@ubuntu ~]# userdel dapi
userdel:用户 dapi 目前已登录

终端输入w用户列表中没有testuser用户,怎么用户目前已登录了?

1.该用户的/home/username目录被用着,有可能其他用户正在dapi家目录下

比如我的主目录下的/home/username/.Xauthority文件拥有者变成了pipi,从而以用户登陆的时候无法都取.Xauthority文件,也不能删除

root使用chown来修改.Xauthority用户组:用户就可以了【参见linux普通用户不能登录图形界面

2.mv /var/run/utmp /tmp

mv /var/run/utmp /var/run/utmp_old      //将原文件改名

touch > /var/run/utmp        //新创建一同名文件

再次执行删除操作。。。成功删除用户【参见userdel: user ** is currently logged in】

关于:/var/run/utmp

utmp是一个文件,除了utmp程序你不能编辑这个文件,删掉他的话,当前登陆信息都会丢失。这个文件在每次机器reboot起来后都会重新创建。

但是,本人自己试验了还是不行,依旧得到同样的提示

3.暴力删除该用户:userdel -r -f XXXX

提示:userdel: warning: can't remove /var/mail/git: No such file or directory

userdel: git home directory (/home/git) not found

没关系,实际上已成功删除用户

[userdel 疑问]

[怎么删除这个用户]

皮皮blog

用户功能

查看用户信息

id命令

查看一个用户的UID和GID

例:id user4

finger命令

可以查看用户的主目录、启动shell、用户名、地址、电话等信息
例:finger user4

finger

finger命令的功能是查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程。

该命令的一般格式为:
finger [选项] [使用者] [用户@主机]
命令中各选项的含义如下:
-s 显示用户的注册名、实际姓名、终端名称、写状态、停滞时间、登录时间等信息。
-l 除了用-s选项显示的信息外,还显示用户主目录、登录shell、邮件状态等信息,以及用户主目录下的.plan、.project和.forward文件的内容。
-p 除了不显示.plan文件和.project文件以外,与-l选项相同。 
[例]在本地机上使用finger命令。
$ finger xxq
Login: xxq Name:
Directory: /home/xxq Shell: /bin/bash
Last login Thu Jan 1 21:43 (CST) on tty1
No mail.
No Plan. 
$ finger
Login Name Tty Idle Login Time Office Office Phone
root root *1 28 Nov 25 09:17
……

皮皮blog

 

 

新增与移除群组

6、命令 groupadd创建用户组

groupadd –g 888 users
创建一个组users,其GID为888

7、命令 gpasswd为组添加用户

只有root和组管理员能够改变组的成员:
例:把 user1加入users组
gpasswd –a user1 users
例:把 user1退出users组
gpasswd –d user1 users

8、命令groupmod修改组

groupmod –n user users       修改组名user为users

/etc/group文件包含所有组
/etc/shadow和/etc/passwd系统存在的所有用户名
修改当前用户所属组的方法
usermod 或者可以直接修改 /etc/paaawd文件即可

9、groupdel删除组

groupdel users    删除组users

皮皮blog

Linux 主机用户信息传递

whois

功能说明:查找并显示用户信息。
语  法:whois [帐号名称]
补充说明:whois指令会去查找并显示指定帐号的用户相关信息,因为它是到Network Solutions 的WHOIS数据库去查找,所以该帐号名称必须在上面注册方能寻获,且名称没有大小写的差别。
———————————————————
whoami

功能说明:先似乎用户名称。
语  法:whoami [–help][–version]
补充说明:显示自身的用户名称,本指令相当于执行"id -un"指令。
参  数:
–help  在线帮助。
–version  显示版本信息。
—————————————————

who

功能说明:显示目前登入系统的用户信息。
语  法:who [-Himqsw][–help][–version][am i][记录文件]
补充说明:执行这项指令可得知目前有那些用户登入系统,单独执行who指令会列出登入帐号,使用的    终端机,登入时间以及从何处登入或正在使用哪个X显示器。
参  数:
-H或–heading  显示各栏位的标题信息列。
-i或-u或–idle  显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串。
-m  此参数的效果和指定"am i"字符串相同。
-q或–count  只显示登入系统的帐号名称和总人数。
-s  此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题。
-w或-T或–mesg或–message或–writable  显示用户的信息状态栏。
–help  在线帮助。
–version  显示版本信息。

—————————————————-
w

功能说明:显示目前登入系统的用户信息。
语  法:w [-fhlsuV][用户名称]
补充说明:执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w
指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
参  数:
-f  开启或关闭显示用户从何处登入系统。
-h  不显示各栏位的标题信息列。
-l  使用详细格式列表,此为预设值。
-s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。
-u  忽略执行程序的名称,以及该程序耗费CPU时间的信息。
-V  显示版本信息。
—————————————————–

皮皮blog

大量创建帐号范本(适用 passwd –stdin 选项)

基本上,批量添加用户有两种方式,一是用useradd + passwd命令配合脚本来添加,二是用newusers+chpasswd来添加。

CentOS 7.x passwd 已经提供了 –stdin 的功能,因此如果我们可以提供帐号密码的话, 那么就能够很简单的创建起我们的帐号密码了。

# vim accountadd.sh

#!/bin/bash
# 這支程式用來建立新增帳號,功能有:
# 1. 檢查 account1.txt 是否存在,並將該檔案內的帳號取出;
# 2. 建立上述檔案的帳號;
# 3. 將上述帳號的密碼修訂成為『強制第一次進入需要修改密碼』的格式。
export PATH=/bin:/sbin:/usr/bin:/usr/sbinif [ ! -f account1.txt ]; thenecho "account1.txt no exist!!! one account name one line"exit 1
fiusernames=$(cat account1.txt)for username in $usernames
douseradd -m $usernameecho $username | passwd --stdin $usernamechage -d 0 $username

done

# vim accountadd.txt

std01
std02
std03
std04
std05

# sh accountadd.sh create

[Linux下批量添加用户的两种方法]

其它功能

userconf

功能说明:用户帐号设置程序。
语  法:userconf [–addgroup <群组>][–adduser <用户ID><群组><用户名称>][–delgroup <群组>][–deluser <用户ID>][–help]
补充说明:userconf实际上为linuxconf的符号连接,提供图形界面的操作方式,供管理员建立与管理各类帐号。若不加任何参数,即进入图形界面。
参  数:
–addgroup<群组>  新增群组。
–adduser<用户ID><群组><用户名称>  新增用户帐号。
–delgroup<群组>  删除群组。
–deluser<用户ID>  删除用户帐号。
–help  显示帮助。

vlock(virtual console lock)

功能说明:锁住虚拟终端。
语  法:vlock [-achv]
补充说明:执行vlock指令可锁住虚拟终端,避免他人使用。
参  数:
-a或–all  锁住所有的终端阶段作业,如果您在全屏幕的终端中使用本参数,则会将用键盘
切换终端机的功能一并关闭。
-c或–current  锁住目前的终端阶段作业,此为预设值。
-h或–help  在线帮助。
-v或–version  显示版本信息。

添加root账户进行系统登录

        在Ubuntu中,root帐号是默认被禁用的!root帐号是linux中的超级管理员,这个帐号拥有对所有文件操作的一切权利相当于我们windows下的administrator帐号,所以启用root帐号是不安全的.那要使用到这个帐号的权利,如何使用root帐号登陆系统呢?(小编Ubuntu Linux12.04 LTS版用root用户登陆)

1.  用普通用户登录
2.  在终端执行sudo -s,然后输入当前登录的普通用户密码,进入到root用户模式
3.  执行gedit /etc/lightdm/lightdm.conf
4.  添加如下一行代码
greeter-show-manual-login=true  #  手工录入系统的用户名和密码
allow-guest=false  # 也可以不允许guest登录
5.  执行sudo passwd root设置root用户密码
6.  重启Ubuntu Linux,登录界面多出了“登录”选项,点击“登录",用户名root,密码就是你刚刚设置的,然后登录之后就是root了

或者可以:sudo passwd root    #先设定root的密码

再在系统>系统设置>登录窗口 中设置“允许超级用户登录”

重启

其他版本相应修改可参见Ubuntu Linux 激活root用户

[如何使Ubuntu Linux12.04 LTS版可以用root用户登陆]

登录界面显示常用的那些用户名

ubuntu12.04怎么设置普通用户必须手工输入登陆系统的用户名和密码?

linux中新建用户之后,登录界面的用户名列表就会把新建用户名显示出来。可以我只需要登录界面显示常用的那些用户名,其它的用户名在必要时手动登录。

Ubuntu登录界面用户列表的添加与删除:

1.Ubuntu Tweak或gdm2setup等工具能将用户名列表取消,在登录的时候需要手动输入用户名和密码

2.修改用户配置文件(for ubuntu 版本)

root@ubuntu:/etc/lightdm#vim users.conf

    hidden-users=nobody nobody4 noaccess dapi                         #Append the users you want hidden


[UserAccounts]
minimum-uid=500
hidden-users=nobody nobody4 noaccess
hidden-shells=/bin/false /usr/sbin/nologin

【https://bugs.launchpad.net/ubuntu/+source/accountsservice/+bug/857651】

root@ubuntu:/etc/lightdm#vim lightdm.conf

    greeter-hide-users=true                                                                  #或者隐藏所有用户列表

root@ubuntu:/usr/share/doc/lightdm#zcat lightdm.conf.gz    #也可以看看lightdm设置用法

greeter-hide-users =
#True to hide the user list

root@ubuntu:~#man lightdm

       /etc/lightdm/lightdm.conf
              Configuration
       /etc/lightdm/users.conf
              User list configuration (if not using Accounts Service)
       /etc/lightdm/keys.conf
              XDMCP keys

【How to hide users from the user account list of the login screen in Ubuntu 12.10?】

【https://wiki.ubuntu.com/LightDM -Hiding the User List】

If there is AccountService running, the file /etc/lightdm/users.conf is ignored. In such case, you can set minimal UID by changing value of attribute UID_MIN in file /etc/login.defs.

【enabling a user (created with adduser command) for lightdm graphical login】

但是怎么解决:ubuntu How to show a specific user in the user account list of when greeter-hide-users = true这个问题?(求留言)

3. $ sudo -u gdm gconftool-2 –type boolean –set /apps/gdm/simple-greeter/disable_user_list true

From the Ubuntu wiki:

LighDM configuration is governed by the lightdm.conf file, however it's not suppose to be directly edited, instead use:

lightdm-set-defaults

I found the file in /usr/lib/lightdm/lightdm-set-defaults.

You would issue the following on the command line:

sudo /usr/lib/lightdm/lightdm-set-defaults --hide-users true


Don't list all users at login with LightDM】

4.通过修改文件/etc/gdm/gdm.schemas,可以控制ubuntu登录界面用户列表显示的用户。(其他linux版本)

greeter/Exclude s bin,root,daemon,adm,lp,sync,shutdown,halt,mail,news,uucp,operator,nobody,nobody4,noaccess,postgres,pvm,rpm,nfsnobod y,pcap,apache,mysql,squid

可以把不显示的用户添加进去,比如我有个用户名是ABC要在登录界面中屏蔽掉,就在squid后面加上“,ABC”。重新登录系统ABC这个用户名就不会在登录界面显示了。

linux命令行中注销用户

实现的是用户图形界面登录后,再使用图形界面注销用户到图形登录界面的功能。

dbus-send –session –type=method_call –print-reply –dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.Logout uint32:1

Note: 不同的桌面是不同的,比如gnome 是gnome-session-quit

xfce是xfce4-session-logout

或者也可以这样:killall gnome-session?

[ubuntu常见错误及解决 linux普通用户不能登录图形界面/关机自动跳到输入密码的登陆界面]

from:http://blog.csdn.net/pipisorry/article/details/39533627

ref: 鸟哥的linux私房菜-3th