10-3 ubuntu常用命令(用户信息、useradd/userdel、usermod、groupadd/groupdel、su、sudo、alias)

1、linux使用文件保存用户信息 :

/etc/passwd                 用户账户信息
/etc/shadow                 安全用户账户信息
/etc/group                  组账户信息
/etc/gshadow                安全组账户信息
/etc/default/useradd        账户创建的默认值
/etc/skel/                  包含默认文件的目录
/etc/login.defs Shadow      密码套件配置

(1)/etc/passwd 为每个用户账户包含一行,包含使用冒号(“:”)分隔的七个字段。执行cat /etc/passwd可以看到:

① 登录名

② 可选的加密后的密码   这里显示的x只是一个占位符

③ 用户ID(uid)

④ 组ID(gid)

⑤ 用户名和注释字段

⑥ 用户主目录(家目录)

⑦ 可选的命令解释器

(2)执行cat /etc/passwd可以看到:

通过 man 5 passwd 可以查看对每一部分的描述。

查看其他文件同理。

 

2、useradd

创建用户,每一个用户都有一个对应的主目录,其绝对路径为/home/usrname。

-c      添加备注。并会将此备注文字加在/etc/passwd中的第5项字段中         
-d      用户主文件夹。指定用户登录所进入的目录,并赋予用户对该目录的的完全控制权        
-e      有效期限。指定帐号的有效期限。格式为YYYY-MM-DD,将存储在/etc/shadow         
-f      缓冲天数。限定密码过期后多少天,将该用户帐号停用。存储在/etc/shadow   
-g      主要组。设置用户所属的主要组。一个用户只能属于一个主要组           
-G      次要组。设置用户所属的次要组,一个用户可属于多个次要组         
-M      强制不创建用户主文件夹         
-m      强制建立用户主文件夹,并将/etc/skel/当中的文件复制到用户的根目录下         
-p      密码。输入该帐号的密码         
-s      shell。用户登录所使用的shell         
-u      uid。指定帐号的标志符user id,简称uid
sudo useradd user1                    # 创建 user1,但用户登录目录未创建。此时若切换到用户 user1,运行命令cd,它是在/(跟)下。
sudo useradd -m -s /bin/bash user2    # 创建 user2 时建立用户登录目录,并将/etc/skel/当中的文件复制到用户的根目录下,并设置用户登录所使用的shell

sudo passwd user2                     # 给 user2 添加密码
su user2                              # 当前用户切换为 user2

 

3、userdel

sudo userdel user1                    # 删除用户 user1,但不删除此用户的用户文件夹
sudo userdel -r user1                 # 删除用户 user1,且用户主目录即其中的文件和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。
sudo userdel -f user1                 # 删除用户 user1,甚至用户仍然在登录状态,它也强制删除用户的主目录和邮箱

 

4、usermod

修改用户信息

-c     修改用户帐号的备注文字
-d     修改用户登入时的目录
-e     修改帐号的有效期限
-f     修改在密码过期后多少天即关闭该帐号
-g     修改用户所属的群组
-G     修改用户所属的附加群组
-l      修改用户帐号名称
-L     锁定用户密码,使密码无效
-s     修改用户登入后所使用的shell
-u     修改用户ID
-U     解除密码锁定
sudo usermod -c "coooo" user1         # 将备注内容 “coooo” 添加到user1的备注中,即 user1 的 /etc/passwd中第5项
sudo usermod -G g1,g2,g3 user1      # 将 user1 加入g1,g2,g3这三个组。输入命令id user2 后可以看到
sudo usermod -l alex user1            # 将 user1 改名为 alex。系统是通过uid识别用户的,而不是用户名。uid为0表示为root用户

 

5、groupadd

添加组。可在 /etc/group 中查看现有的组

sudo groupadd g1
sudo groupadd -g 2000 g1              # 创建组 g1,且指定它的gid为2000

 

6、groupdel

sudo groupdel g1

 

7、su 与 sudo

(1)root用户

拥有LINUX中的最高权限,这个用户就相当于XP里的Administrator,但是比XP的这个权限要大的多因为LINUX是一个开源系统,XP他还保留了更高的权限。在LINUX里root可以修改所有的东西,普通用户就不行。尤其是你要安装软件的时候就更需要root要不你是不能安装的。

(2)root用户和user用户的相互切换

不管是用图形模式登录Ubuntu,还是命令行模式登录,我们会发现缺省的用户是user。但是当我们需要执行一些具有root权限的操作(如修还系统文件)时,有两种方法:

  • 用 su 命令切换到root
su            # 由用户切换为root
su -          # 由用户切换为root 并加载user1的环境配置。推荐这样。

su - user1    # 由root切换为user1 并加载user1的环境配置

 切换到root用户后(先给root设置密码,然后才能切换),$变成了#。直接用root,有误删重要文件的风险。

 root用户切换到sea用户:

(1)root用户下输入并执行命令:exit

(2)root用户下输入并执行命令:su sea

  • 用 sudo 让当前用户暂时以管理员的身份root来执行命令

 sudo有一个配置文件: /etc/sudoers  ;  通过修改配置文件可以让指定用户使用sudo命令。

man sudoers # 查看man手册
看下面几行: 
# Host alias specification # 配置Host_Alias:就是主机的列表 
Host_Alias      HOST_FLAG = hostname1, hostname2, hostname3
# User alias specification # 配置User_Alias:就是具有sudo权限的用户的列表 
User_Alias USER_FLAG = user1, user2, user3 

# Cmnd alias specification # 配置Cmnd_Alias:就是允许执行的命令的列表,命令前加上!表示不能执行此命令.命令一定要使用绝对路径,避免其他目录的同名命令被执行,造成安全隐患 ,因此使用的时候也是使用绝对路径! 
Cmnd_Alias      COMMAND_FLAG = command1, command2, command3 ,!command4

# 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表 
Runas_Alias RUNAS_FLAG = operator1, operator2, operator3 


# User privilege specification  
# 配置权限的格式如下: 
#  USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG 

root    ALL=(ALL:ALL) ALL
如果不需要密码验证的话,则按照这样的格式来配置 
USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG 


格式为:用户名(用户别名) 主机名(主机别名)=[(运行用户或是Runas_Alias)可选] [tag可选]  可以执行的命令(或Cmmd_Alias)  这样描述语法很生硬,不易理解,举例子
user1  host1 = /bin/kill # user1 可以在host1上使用命令/bin/kill
user1  host1 = NOPASSWD: /bin/kill # user1 可以在host1上使用命令/bin/kill 同时可以不必输入密码(这里就是使用了NOPASSWD # 这个tag,默认是PASSWD)
user1  host1 = NOPASSWD: /bin/kill , PASSWORD: /bin/ls # user1 可以在host1上使用命令/bin/kill无需输入密码,但是使用/bin/ls则需要输入密码
user1  host1 = (opterator) /bin/kill # user1 可以在host1上使用命令/bin/kill但是必须是以operator用户运行这个命令,等价于# su -u opertor /bin/kill
user1  host1 = (:group_name) /bin/kill # user1 可以在host1上使用命令/bin/kill,且必须以group_name这个用户群组里面的用户来运行。
%group_name host1 = /bin/kill # 所有group_name里面的用户都可以在host1上执行/bin/kill(Linux中一般代表整个用户群组用# %group_name)
再举个实际例子,我之前对sudo su这个命令不理解,为什么我可以直接就su到root用户了呢,连密码都不需要?查看了一下sudoers文件才知道原来里面有这么一行:
xxx     ALL=NOPASSWD: /bin/su
sudoers man手册

 

8、alias

alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

如果需要别名永久生效,需要保存到 .bashrc 文件

 

posted @ 2017-06-10 11:21  seaidler  阅读(334)  评论(0)    收藏  举报