linux:lxc:非特権コンテナメモ

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
linux:lxc:非特権コンテナメモ [2014/01/20 10:38] tenforwardlinux:lxc:非特権コンテナメモ [2014/01/20 10:45] (現在) tenforward
行 12: 行 12:
 とある. とある.
  
-まず lxc/src/lxc/cgroup.c で +  * まず lxc/src/lxc/cgroup.c で<code c>
- +
-<code c>+
 static bool find_cgroup_hierarchies(struct cgroup_meta_data *meta_data, static bool find_cgroup_hierarchies(struct cgroup_meta_data *meta_data,
         bool all_kernel_subsystems, bool all_named_subsystems,         bool all_kernel_subsystems, bool all_named_subsystems,
行 39: 行 37:
                  * we only extract hierarchy and subsystems                  * we only extract hierarchy and subsystems
                  * here */                  * here */
-</code> +</code>こんなコードがあり,/proc/self/cgroup から「現在の cgroup」を取得するようになってる 
- +  * Ubuntu 14.04 だと一般ユーザでログインすると<code>karma@lxctest02:~$ id
-こんなコードがあり,/proc/self/cgroup から「現在の cgroup」を取得するようになってる +
- +
-* Ubuntu 14.04 だと一般ユーザでログインすると<code>karma@lxctest02:~$ id+
 uid=1000(karma) gid=1000(karma) groups=1000(karma),27(sudo) uid=1000(karma) gid=1000(karma) groups=1000(karma),27(sudo)
 karma@lxctest02:~$ cat /proc/self/cgroup  karma@lxctest02:~$ cat /proc/self/cgroup 
行 56: 行 51:
 3:cpu:/user/1000.user/5.session 3:cpu:/user/1000.user/5.session
 2:cpuset:/user/1000.user/5.session</code> 2:cpuset:/user/1000.user/5.session</code>
 +  * ここは書き込み権がある <code>karma@lxctest02:~$ LANG=C ls -ld /sys/fs/cgroup/cpu/user/1000.user/5.session
 +drwxr-xr-x 2 karma karma 0 Jan 20 10:37 /sys/fs/cgroup/cpu/user/1000.user/5.session</code>
 +  * ちなみに普通に echo $$ > tasks みたいに cgroup に登録する.以下のコード <code>#!/bin/bash
 +for c in /sys/fs/cgroup/*
 +do
 +  sudo mkdir $c/karma
 +  sudo chown -R karma: $c/karma
 +  if [ `basename $c` = "cpuset" ]; then
 +    echo 0 > $c/karma/cpuset.cpus
 +    echo 0 > $c/karma/cpuset.mems
 +  fi
 +  echo $PID > $c/karma/tasks
 +done</code> を実行すると,当然 <code>karma@lxctest02:~$ cat /proc/self/cgroup 
 +11:name=systemd:/karma
 +10:hugetlb:/karma
 +9:perf_event:/karma
 +8:blkio:/karma
 +7:freezer:/karma
 +6:devices:/karma
 +5:memory:/karma
 +4:cpuacct:/karma
 +3:cpu:/karma
 +2:cpuset:/karma</code>
 +  * /sys/fs/cgroup/user/1000.user/5.session みたいなのは誰が作ってるのか? どうも systemd のデーモンのどれかっぽい.(pam_loginuid 使って?) <code c>int cg_path_get_session(const char *path, char **session) {
 +        const char *e, *n;
 +        char *s;
 +
 +        assert(path);
 +        assert(session);
 +
 +        e = path_startswith(path, "/user/");
 +        if (!e)
 +                return -ENOENT;
 +
 +        /* Skip the user name */
 +        e = skip_label(e);
 +        if (!e)
 +                return -ENOENT;
 +
 +        n = strchrnul(e, '/');
 +        if (n - e < 8)
 +                return -ENOENT;
 +        if (memcmp(n - 8, ".session", 8) != 0)
 +                return -ENOENT;
 +
 +        s = strndup(e, n - e - 8);
 +        if (!s)
 +                return -ENOMEM;
 +
 +        *session = s;
 +        return 0;
 +}</code> systemd/src/shared/cgroup-util.c
  • linux/lxc/非特権コンテナメモ.1390214287.txt.gz
  • 最終更新: 2014/01/20 10:38
  • by tenforward