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
8、alias

alias ll='ls -alF' alias la='ls -A' alias l='ls -CF'
如果需要别名永久生效,需要保存到 .bashrc 文件
浙公网安备 33010602011771号